🚚 Renamed project from oauth to indieauth

This commit is contained in:
Maxim Lebedev 2022-01-04 22:31:33 +05:00
parent bfbb15ea57
commit c9a76ddbd6
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
70 changed files with 937 additions and 891 deletions

View File

@ -39,37 +39,22 @@ func init() {
} }
var messageKeyToIndex = map[string]int{ var messageKeyToIndex = map[string]int{
"Allow": 6, "Allow": 1,
"Authorize": 2, "Deny": 0,
"Authorize %s": 0, "Sign In": 2,
"Authorize application": 1,
"Check your scopes": 4,
"Create a new remote token": 8,
"Deny": 5,
"Send": 9,
"Sign In": 7,
"application": 3,
} }
var enIndex = []uint32{ // 11 elements var enIndex = []uint32{ // 4 elements
0x00000000, 0x00000010, 0x00000026, 0x00000030, 0x00000000, 0x00000005, 0x0000000b, 0x00000013,
0x0000003c, 0x0000004e, 0x00000053, 0x00000059, } // Size: 40 bytes
0x00000061, 0x0000007b, 0x00000080,
} // Size: 68 bytes
const enData string = "" + // Size: 128 bytes const enData string = "\x02Deny\x02Allow\x02Sign In"
"\x02Authorize %[1]s\x02Authorize application\x02Authorize\x02application" +
"\x02Check your scopes\x02Deny\x02Allow\x02Sign In\x02Create a new remote" +
" token\x02Send"
var ruIndex = []uint32{ // 11 elements var ruIndex = []uint32{ // 4 elements
0x00000000, 0x00000000, 0x0000002e, 0x0000002e, 0x00000000, 0x00000011, 0x00000024, 0x0000002f,
0x0000002e, 0x00000057, 0x00000068, 0x0000007b, } // Size: 40 bytes
0x00000086, 0x00000086, 0x00000086,
} // Size: 68 bytes
const ruData string = "" + // Size: 134 bytes const ruData string = "" + // Size: 47 bytes
"\x02Авторизовать приложение\x02Проверь права доступа\x02Отказать\x02Разр" + "\x02Отказать\x02Разрешить\x02Войти"
"ешить\x02Войти"
// Total table size 398 bytes (0KiB); checksum: 1F3647E6 // Total table size 146 bytes (0KiB); checksum: 9261221B

12
go.mod
View File

@ -1,4 +1,4 @@
module source.toby3d.me/website/oauth module source.toby3d.me/website/indieauth
go 1.16 go 1.16
@ -11,17 +11,19 @@ require (
github.com/lestrrat-go/jwx v1.2.7 github.com/lestrrat-go/jwx v1.2.7
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4 // indirect github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4 // indirect
github.com/spf13/viper v1.9.0 github.com/spf13/cobra v1.3.0 // indirect
github.com/spf13/viper v1.10.0
github.com/stretchr/testify v1.7.0 github.com/stretchr/testify v1.7.0
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80
github.com/valyala/fasthttp v1.30.0 github.com/valyala/fasthttp v1.31.0
github.com/valyala/fasttemplate v1.2.1 github.com/valyala/fasttemplate v1.2.1
github.com/valyala/quicktemplate v1.7.0 github.com/valyala/quicktemplate v1.7.0
go.etcd.io/bbolt v1.3.6 go.etcd.io/bbolt v1.3.6
golang.org/x/net v0.0.0-20211004164453-cedda3a722dd // indirect golang.org/x/net v0.0.0-20211004164453-cedda3a722dd // indirect
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.3.7 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 // indirect
source.toby3d.me/toby3d/form v0.1.0 // indirect
willnorris.com/go/microformats v1.1.1 willnorris.com/go/microformats v1.1.1
) )

149
go.sum
View File

@ -23,6 +23,10 @@ cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSU
cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=
cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=
cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
@ -32,6 +36,7 @@ cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM7
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU=
cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
@ -44,8 +49,13 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
github.com/andybalholm/brotli v1.0.3 h1:fpcw+r1N1h0Poc1F/pHbW40cUm/lMEQslZtCkBQ0UnM= github.com/andybalholm/brotli v1.0.3 h1:fpcw+r1N1h0Poc1F/pHbW40cUm/lMEQslZtCkBQ0UnM=
github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
@ -53,29 +63,46 @@ github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9Pq
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/brianvoe/gofakeit/v6 v6.9.0 h1:UCGhPCKLiqBc910TKS7LcOGf74NozftibFCbGIS6GZQ= github.com/brianvoe/gofakeit/v6 v6.9.0 h1:UCGhPCKLiqBc910TKS7LcOGf74NozftibFCbGIS6GZQ=
github.com/brianvoe/gofakeit/v6 v6.9.0/go.mod h1:palrJUk4Fyw38zIFB/uBZqsgzW5VsNllhHKKwAebzew= github.com/brianvoe/gofakeit/v6 v6.9.0/go.mod h1:palrJUk4Fyw38zIFB/uBZqsgzW5VsNllhHKKwAebzew=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@ -83,26 +110,37 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=
github.com/fasthttp/router v1.4.3 h1:spS+LUnRryQ/+hbmYzs/xWGJlQCkeQI3hxGZdlVYhLU= github.com/fasthttp/router v1.4.3 h1:spS+LUnRryQ/+hbmYzs/xWGJlQCkeQI3hxGZdlVYhLU=
github.com/fasthttp/router v1.4.3/go.mod h1:9ytWCfZ5LcCcbD3S7pEXyBX9vZnOZmN918WiiaYUzr8= github.com/fasthttp/router v1.4.3/go.mod h1:9ytWCfZ5LcCcbD3S7pEXyBX9vZnOZmN918WiiaYUzr8=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/goccy/go-json v0.7.8/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.7.8/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.7.9 h1:mSp3uo1tr6MXQTYopSNhHTUnJhd2zQ4Yk+HdJZP+ZRY= github.com/goccy/go-json v0.7.9 h1:mSp3uo1tr6MXQTYopSNhHTUnJhd2zQ4Yk+HdJZP+ZRY=
github.com/goccy/go-json v0.7.9/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.7.9/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
@ -171,18 +209,25 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc=
github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
@ -190,24 +235,37 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=
github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@ -229,18 +287,24 @@ github.com/lestrrat-go/jwx v1.2.7 h1:wO7fEc3PW56wpQBMU5CyRkrk4DVsXxCoJg7oIm5HHE4
github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA= github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA=
github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4=
github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
@ -248,12 +312,19 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo=
github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs=
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@ -262,27 +333,48 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE=
github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=
github.com/savsgio/gotils v0.0.0-20210907153846-c06938798b52/go.mod h1:oejLrk1Y/5zOF+c/aHtXqn3TFlzzbAgPWg8zBiAHDas= github.com/savsgio/gotils v0.0.0-20210907153846-c06938798b52/go.mod h1:oejLrk1Y/5zOF+c/aHtXqn3TFlzzbAgPWg8zBiAHDas=
github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4 h1:ocK/D6lCgLji37Z2so4xhMl46se1ntReQQCUIU4BWI8= github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4 h1:ocK/D6lCgLji37Z2so4xhMl46se1ntReQQCUIU4BWI8=
github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4/go.mod h1:oejLrk1Y/5zOF+c/aHtXqn3TFlzzbAgPWg8zBiAHDas= github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4/go.mod h1:oejLrk1Y/5zOF+c/aHtXqn3TFlzzbAgPWg8zBiAHDas=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0=
github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk=
github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4=
github.com/spf13/viper v1.10.0 h1:mXH0UwHS4D2HwWZa75im4xIQynLfblmWV7qcWpfv0yk=
github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@ -294,10 +386,13 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y=
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.30.0 h1:nBNzWrgZUUHohyLPU/jTvXdhrcaf2m5k3bWk+3Q049g= github.com/valyala/fasthttp v1.30.0 h1:nBNzWrgZUUHohyLPU/jTvXdhrcaf2m5k3bWk+3Q049g=
github.com/valyala/fasthttp v1.30.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= github.com/valyala/fasthttp v1.30.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
github.com/valyala/fasthttp v1.31.0 h1:lrauRLII19afgCs2fnWRJ4M5IkV0lo2FqA61uGkNBfE=
github.com/valyala/fasthttp v1.31.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/quicktemplate v1.7.0 h1:LUPTJmlVcb46OOUY3IeD9DojFpAVbsG+5WFTcjMJzCM= github.com/valyala/quicktemplate v1.7.0 h1:LUPTJmlVcb46OOUY3IeD9DojFpAVbsG+5WFTcjMJzCM=
@ -311,8 +406,11 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=
go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@ -324,6 +422,11 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
go4.org/intern v0.0.0-20211027215823-ae77deb06f29 h1:UXLjNohABv4S58tHmeuIZDO6e3mHpW2Dx33gaNt03LE=
go4.org/intern v0.0.0-20211027215823-ae77deb06f29/go.mod h1:cS2ma+47FKrLPdXFpr7CuxiTW3eyJbWew4qx0qtQWDA=
go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37 h1:Tx9kY6yUkLge/pFG7IEMwDZy6CS2ajFc9TvQdPCW0uA=
go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@ -371,6 +474,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -383,6 +487,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@ -409,8 +514,10 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211004164453-cedda3a722dd h1:Q6PfiuMddtCdycHT4hrZ7ZhVpAdQlA7qJp+ZhUw7Rdo= golang.org/x/net v0.0.0-20211004164453-cedda3a722dd h1:Q6PfiuMddtCdycHT4hrZ7ZhVpAdQlA7qJp+ZhUw7Rdo=
golang.org/x/net v0.0.0-20211004164453-cedda3a722dd/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211004164453-cedda3a722dd/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@ -429,6 +536,9 @@ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw=
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -442,11 +552,14 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -482,6 +595,7 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -495,9 +609,16 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef h1:fPxZ3Umkct3LZ8gK9nbk+DWDJ9fstZa2grBn+lWVKPs= golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef h1:fPxZ3Umkct3LZ8gK9nbk+DWDJ9fstZa2grBn+lWVKPs=
golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7qVW4r4ctbWpURyuOD0E=
golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -600,7 +721,12 @@ google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtuk
google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=
google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU=
google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@ -661,6 +787,17 @@ google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKr
google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@ -686,6 +823,8 @@ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ
google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@ -701,6 +840,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
@ -708,8 +848,13 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c=
gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI=
gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
@ -723,8 +868,12 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 h1:acCzuUSQ79tGsM/O50VRFySfMm19IoMKL+sZztZkCxw=
inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6/go.mod h1:y3MGhcFMlh0KZPMuXXow8mpjxxAk3yoDNsp4cQz54i8=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
source.toby3d.me/toby3d/form v0.1.0 h1:QoQfNfVmyEioopBB262cDVossxzjMzCW/Y1upVBaKIs=
source.toby3d.me/toby3d/form v0.1.0/go.mod h1:vCN3Br5j2QqW/pZSPvqBDzXf/n7bWxybvJR57YO42gk=
willnorris.com/go/microformats v1.1.1 h1:h5tk2luq6KBIRcwMGdksxdeea4GGuWrRFie5460OAbo= willnorris.com/go/microformats v1.1.1 h1:h5tk2luq6KBIRcwMGdksxdeea4GGuWrRFie5460OAbo=
willnorris.com/go/microformats v1.1.1/go.mod h1:kvVnWrkkEscVAIITCEoiTX66Hcyg59C7q0E49mb9TJ0= willnorris.com/go/microformats v1.1.1/go.mod h1:kvVnWrkkEscVAIITCEoiTX66Hcyg59C7q0E49mb9TJ0=

View File

@ -8,8 +8,8 @@ import (
json "github.com/goccy/go-json" json "github.com/goccy/go-json"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"gitlab.com/toby3d/indieauth/internal/auth" "gitlab.com/toby3d/indieauth/internal/auth"
"gitlab.com/toby3d/indieauth/internal/domain"
"gitlab.com/toby3d/indieauth/internal/middleware" "gitlab.com/toby3d/indieauth/internal/middleware"
"gitlab.com/toby3d/indieauth/internal/model"
"gitlab.com/toby3d/indieauth/internal/pkce" "gitlab.com/toby3d/indieauth/internal/pkce"
"gitlab.com/toby3d/indieauth/web" "gitlab.com/toby3d/indieauth/web"
) )
@ -82,15 +82,15 @@ func (h *Handler) Register(r *router.Router) {
func (r *AuthorizeRequest) bind(ctx *http.RequestCtx) error { func (r *AuthorizeRequest) bind(ctx *http.RequestCtx) error {
if r.ClientID = string(ctx.QueryArgs().Peek("client_id")); r.ClientID == "" { if r.ClientID = string(ctx.QueryArgs().Peek("client_id")); r.ClientID == "" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'client_id' query is required", Description: "'client_id' query is required",
} }
} }
if r.ResponseType = string(ctx.QueryArgs().Peek("response_type")); r.ResponseType != "code" { if r.ResponseType = string(ctx.QueryArgs().Peek("response_type")); r.ResponseType != "code" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'response_type' must be 'code'", Description: "'response_type' must be 'code'",
} }
} }
@ -98,8 +98,8 @@ func (r *AuthorizeRequest) bind(ctx *http.RequestCtx) error {
if ctx.QueryArgs().Has("code_challenge") { if ctx.QueryArgs().Has("code_challenge") {
r.CodeChallenge = string(ctx.QueryArgs().Peek("code_challenge")) r.CodeChallenge = string(ctx.QueryArgs().Peek("code_challenge"))
if len(r.CodeChallenge) < 43 || len(r.CodeChallenge) > 128 { if len(r.CodeChallenge) < 43 || len(r.CodeChallenge) > 128 {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "length of the 'code_challenge' value must be greater than 43 and less than 128 symbols", Description: "length of the 'code_challenge' value must be greater than 43 and less than 128 symbols",
} }
} }
@ -110,12 +110,11 @@ func (r *AuthorizeRequest) bind(ctx *http.RequestCtx) error {
} }
if _, err := pkce.New(r.CodeChallengeMethod); err != nil { if _, err := pkce.New(r.CodeChallengeMethod); err != nil {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: err.Error(), Description: err.Error(),
} }
} }
} }
r.RedirectURI = string(ctx.QueryArgs().Peek("redirect_uri")) r.RedirectURI = string(ctx.QueryArgs().Peek("redirect_uri"))
@ -179,22 +178,22 @@ func (r *RedirectRequest) bind(ctx *http.RequestCtx) (err error) {
r.RedirectURI = string(ctx.PostArgs().Peek("redirect_uri")) r.RedirectURI = string(ctx.PostArgs().Peek("redirect_uri"))
if r.ClientID = string(ctx.PostArgs().Peek("client_id")); r.ClientID == "" { if r.ClientID = string(ctx.PostArgs().Peek("client_id")); r.ClientID == "" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'client_id' query is required", Description: "'client_id' query is required",
} }
} }
if r.Authorize = string(ctx.PostArgs().Peek("authorize")); r.Authorize != "allow" && r.Authorize != "deny" { if r.Authorize = string(ctx.PostArgs().Peek("authorize")); r.Authorize != "allow" && r.Authorize != "deny" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "invalid prompt action, try starting the authorization flow again", Description: "invalid prompt action, try starting the authorization flow again",
} }
} }
if r.ResponseType = string(ctx.PostArgs().Peek("response_type")); r.ResponseType != "code" { if r.ResponseType = string(ctx.PostArgs().Peek("response_type")); r.ResponseType != "code" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'response_type' must be 'code', try starting the authorization flow again", Description: "'response_type' must be 'code', try starting the authorization flow again",
} }
} }
@ -203,8 +202,8 @@ func (r *RedirectRequest) bind(ctx *http.RequestCtx) (err error) {
r.CodeChallenge = string(ctx.PostArgs().Peek("code_challenge")) r.CodeChallenge = string(ctx.PostArgs().Peek("code_challenge"))
if len(r.CodeChallenge) < 43 || len(r.CodeChallenge) > 128 { if len(r.CodeChallenge) < 43 || len(r.CodeChallenge) > 128 {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "length of the 'code_challenge' value must be greater than 43 and less than 128 symbols, try starting the authorization flow again", Description: "length of the 'code_challenge' value must be greater than 43 and less than 128 symbols, try starting the authorization flow again",
} }
} }
@ -216,8 +215,8 @@ func (r *RedirectRequest) bind(ctx *http.RequestCtx) (err error) {
_, err := pkce.New(r.CodeChallengeMethod) _, err := pkce.New(r.CodeChallengeMethod)
if err != nil { if err != nil {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: err.Error(), Description: err.Error(),
} }
} }
@ -250,7 +249,7 @@ func (h *Handler) Redirect(ctx *http.RequestCtx) {
switch r.Authorize { switch r.Authorize {
case "allow": case "allow":
code, err := h.useCase.Approve(ctx, &model.Login{ code, err := h.useCase.Approve(ctx, &domain.Login{
CreatedAt: time.Now().UTC().Unix(), CreatedAt: time.Now().UTC().Unix(),
ClientID: r.ClientID, ClientID: r.ClientID,
CodeChallenge: r.CodeChallenge, CodeChallenge: r.CodeChallenge,
@ -260,7 +259,7 @@ func (h *Handler) Redirect(ctx *http.RequestCtx) {
Scope: r.Scope, Scope: r.Scope,
}) })
if err != nil { if err != nil {
query.Set("error", model.ErrServerError.Code) query.Set("error", domain.ErrServerError.Code)
query.Set("error_description", err.Error()) query.Set("error_description", err.Error())
redirectUri.RawQuery = query.Encode() redirectUri.RawQuery = query.Encode()
@ -272,7 +271,7 @@ func (h *Handler) Redirect(ctx *http.RequestCtx) {
query.Set("code", code) query.Set("code", code)
case "deny": case "deny":
query.Set("error", model.ErrAccessDenied.Code) query.Set("error", domain.ErrAccessDenied.Code)
} }
redirectUri.RawQuery = query.Encode() redirectUri.RawQuery = query.Encode()
@ -282,29 +281,29 @@ func (h *Handler) Redirect(ctx *http.RequestCtx) {
func (r *ExchangeRequest) bind(ctx *http.RequestCtx) (err error) { func (r *ExchangeRequest) bind(ctx *http.RequestCtx) (err error) {
if r.GrantType = string(ctx.PostArgs().Peek("grant_type")); r.GrantType != "authorization_code" { if r.GrantType = string(ctx.PostArgs().Peek("grant_type")); r.GrantType != "authorization_code" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'grant_type' must be 'authorization_code'", Description: "'grant_type' must be 'authorization_code'",
} }
} }
if r.RedirectURI = string(ctx.PostArgs().Peek("redirect_uri")); r.RedirectURI == "" { if r.RedirectURI = string(ctx.PostArgs().Peek("redirect_uri")); r.RedirectURI == "" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'redirect_uri' query is required", Description: "'redirect_uri' query is required",
} }
} }
if r.ClientID = string(ctx.PostArgs().Peek("client_id")); r.ClientID == "" { if r.ClientID = string(ctx.PostArgs().Peek("client_id")); r.ClientID == "" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'client_id' query is required", Description: "'client_id' query is required",
} }
} }
if r.Code = string(ctx.PostArgs().Peek("code")); r.Code == "" { if r.Code = string(ctx.PostArgs().Peek("code")); r.Code == "" {
return model.Error{ return domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'code' query is required", Description: "'code' query is required",
} }
} }
@ -324,7 +323,7 @@ func (h *Handler) Exchange(ctx *http.RequestCtx) {
return return
} }
me, err := h.useCase.Exchange(ctx, &model.ExchangeRequest{ me, err := h.useCase.Exchange(ctx, &domain.ExchangeRequest{
ClientID: req.ClientID, ClientID: req.ClientID,
Code: req.Code, Code: req.Code,
CodeVerifier: req.CodeVerifier, CodeVerifier: req.CodeVerifier,
@ -337,7 +336,7 @@ func (h *Handler) Exchange(ctx *http.RequestCtx) {
} }
if me == "" { if me == "" {
ctx.Error(model.ErrUnauthorizedClient.Error(), http.StatusUnauthorized) ctx.Error(domain.ErrUnauthorizedClient.Error(), http.StatusUnauthorized)
return return
} }

View File

@ -3,11 +3,11 @@ package auth
import ( import (
"context" "context"
"gitlab.com/toby3d/indieauth/internal/model" "gitlab.com/toby3d/indieauth/internal/domain"
) )
type Repository interface { type Repository interface {
Create(ctx context.Context, login *model.Login) error Create(ctx context.Context, login *domain.Login) error
Get(ctx context.Context, code string) (*model.Login, error) Get(ctx context.Context, code string) (*domain.Login, error)
Delete(ctx context.Context, code string) error Delete(ctx context.Context, code string) error
} }

View File

@ -5,7 +5,7 @@ import (
json "github.com/goccy/go-json" json "github.com/goccy/go-json"
"gitlab.com/toby3d/indieauth/internal/auth" "gitlab.com/toby3d/indieauth/internal/auth"
"gitlab.com/toby3d/indieauth/internal/model" "gitlab.com/toby3d/indieauth/internal/domain"
bolt "go.etcd.io/bbolt" bolt "go.etcd.io/bbolt"
) )
@ -15,7 +15,7 @@ type boltAuthRepository struct {
func NewBoltAuthRepository(db *bolt.DB) (auth.Repository, error) { func NewBoltAuthRepository(db *bolt.DB) (auth.Repository, error) {
if err := db.Update(func(tx *bolt.Tx) (err error) { if err := db.Update(func(tx *bolt.Tx) (err error) {
_, err = tx.CreateBucketIfNotExists(model.Login{}.Bucket()) _, err = tx.CreateBucketIfNotExists(domain.Login{}.Bucket())
return err return err
}); err != nil { }); err != nil {
@ -27,22 +27,22 @@ func NewBoltAuthRepository(db *bolt.DB) (auth.Repository, error) {
}, nil }, nil
} }
func (repo *boltAuthRepository) Create(ctx context.Context, login *model.Login) error { func (repo *boltAuthRepository) Create(ctx context.Context, login *domain.Login) error {
jsonLogin, err := json.Marshal(login) jsonLogin, err := json.Marshal(login)
if err != nil { if err != nil {
return err return err
} }
return repo.db.Update(func(tx *bolt.Tx) error { return repo.db.Update(func(tx *bolt.Tx) error {
return tx.Bucket(model.Login{}.Bucket()).Put([]byte(login.Code), jsonLogin) return tx.Bucket(domain.Login{}.Bucket()).Put([]byte(login.Code), jsonLogin)
}) })
} }
func (repo *boltAuthRepository) Get(ctx context.Context, code string) (*model.Login, error) { func (repo *boltAuthRepository) Get(ctx context.Context, code string) (*domain.Login, error) {
login := new(model.Login) login := new(domain.Login)
if err := repo.db.View(func(tx *bolt.Tx) error { if err := repo.db.View(func(tx *bolt.Tx) error {
return json.Unmarshal(tx.Bucket(model.Login{}.Bucket()).Get([]byte(code)), login) return json.Unmarshal(tx.Bucket(domain.Login{}.Bucket()).Get([]byte(code)), login)
}); err != nil { }); err != nil {
return nil, err return nil, err
} }
@ -52,6 +52,6 @@ func (repo *boltAuthRepository) Get(ctx context.Context, code string) (*model.Lo
func (repo *boltAuthRepository) Delete(ctx context.Context, code string) error { func (repo *boltAuthRepository) Delete(ctx context.Context, code string) error {
return repo.db.Update(func(tx *bolt.Tx) error { return repo.db.Update(func(tx *bolt.Tx) error {
return tx.Bucket(model.Login{}.Bucket()).Delete([]byte(code)) return tx.Bucket(domain.Login{}.Bucket()).Delete([]byte(code))
}) })
} }

View File

@ -5,7 +5,7 @@ import (
"sync" "sync"
"gitlab.com/toby3d/indieauth/internal/auth" "gitlab.com/toby3d/indieauth/internal/auth"
"gitlab.com/toby3d/indieauth/internal/model" "gitlab.com/toby3d/indieauth/internal/domain"
) )
type memoryAuthRepository struct { type memoryAuthRepository struct {
@ -18,19 +18,19 @@ func NewMemoryAuthRepository() auth.Repository {
} }
} }
func (repo *memoryAuthRepository) Create(ctx context.Context, login *model.Login) error { func (repo *memoryAuthRepository) Create(ctx context.Context, login *domain.Login) error {
repo.logins.Store(login.Code, login) repo.logins.Store(login.Code, login)
return nil return nil
} }
func (repo *memoryAuthRepository) Get(ctx context.Context, code string) (*model.Login, error) { func (repo *memoryAuthRepository) Get(ctx context.Context, code string) (*domain.Login, error) {
login, ok := repo.logins.LoadAndDelete(code) login, ok := repo.logins.LoadAndDelete(code)
if !ok { if !ok {
return nil, nil return nil, nil
} }
return login.(*model.Login), nil return login.(*domain.Login), nil
} }
func (repo *memoryAuthRepository) Delete(ctx context.Context, code string) error { func (repo *memoryAuthRepository) Delete(ctx context.Context, code string) error {

View File

@ -3,11 +3,11 @@ package auth
import ( import (
"context" "context"
"gitlab.com/toby3d/indieauth/internal/model" "gitlab.com/toby3d/indieauth/internal/domain"
) )
type UseCase interface { type UseCase interface {
Discovery(ctx context.Context, clientId string) (*model.Client, error) Discovery(ctx context.Context, clientId string) (*domain.Client, error)
Approve(ctx context.Context, login *model.Login) (string, error) Approve(ctx context.Context, login *domain.Login) (string, error)
Exchange(ctx context.Context, req *model.ExchangeRequest) (string, error) Exchange(ctx context.Context, req *domain.ExchangeRequest) (string, error)
} }

View File

@ -8,7 +8,7 @@ import (
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"gitlab.com/toby3d/indieauth/internal/auth" "gitlab.com/toby3d/indieauth/internal/auth"
"gitlab.com/toby3d/indieauth/internal/model" "gitlab.com/toby3d/indieauth/internal/domain"
"gitlab.com/toby3d/indieauth/internal/pkce" "gitlab.com/toby3d/indieauth/internal/pkce"
"gitlab.com/toby3d/indieauth/internal/random" "gitlab.com/toby3d/indieauth/internal/random"
"willnorris.com/go/microformats" "willnorris.com/go/microformats"
@ -26,7 +26,7 @@ func NewAuthUseCase(repo auth.Repository) auth.UseCase {
} }
} }
func (useCase *authUseCase) Discovery(ctx context.Context, clientId string) (*model.Client, error) { func (useCase *authUseCase) Discovery(ctx context.Context, clientId string) (*domain.Client, error) {
_, src, err := useCase.client.Get(nil, clientId) _, src, err := useCase.client.Get(nil, clientId)
if err != nil { if err != nil {
return nil, err return nil, err
@ -39,7 +39,7 @@ func (useCase *authUseCase) Discovery(ctx context.Context, clientId string) (*mo
data := microformats.Parse(bytes.NewReader(src), cid) data := microformats.Parse(bytes.NewReader(src), cid)
client := new(model.Client) client := new(domain.Client)
client.RedirectURI = make([]string, 0) client.RedirectURI = make([]string, 0)
for i := range data.Items { for i := range data.Items {
@ -68,7 +68,6 @@ func (useCase *authUseCase) Discovery(ctx context.Context, clientId string) (*mo
} }
} }
} }
} }
for key, values := range data.Rels { for key, values := range data.Rels {
@ -80,8 +79,8 @@ func (useCase *authUseCase) Discovery(ctx context.Context, clientId string) (*mo
} }
if client.URL != clientId { if client.URL != clientId {
return nil, model.Error{ return nil, domain.Error{
Code: model.ErrInvalidRequest.Code, Code: domain.ErrInvalidRequest.Code,
Description: "'client_id' does not match the actual client URL", Description: "'client_id' does not match the actual client URL",
} }
} }
@ -89,7 +88,7 @@ func (useCase *authUseCase) Discovery(ctx context.Context, clientId string) (*mo
return client, nil return client, nil
} }
func (useCase *authUseCase) Approve(ctx context.Context, login *model.Login) (string, error) { func (useCase *authUseCase) Approve(ctx context.Context, login *domain.Login) (string, error) {
login.Code = random.New().String(32) login.Code = random.New().String(32)
if err := useCase.repo.Create(ctx, login); err != nil { if err := useCase.repo.Create(ctx, login); err != nil {
@ -99,7 +98,7 @@ func (useCase *authUseCase) Approve(ctx context.Context, login *model.Login) (st
return login.Code, nil return login.Code, nil
} }
func (useCase *authUseCase) Exchange(ctx context.Context, req *model.ExchangeRequest) (string, error) { func (useCase *authUseCase) Exchange(ctx context.Context, req *domain.ExchangeRequest) (string, error) {
login, err := useCase.repo.Get(ctx, req.Code) login, err := useCase.repo.Get(ctx, req.Code)
if err != nil { if err != nil {
return "", err return "", err
@ -116,7 +115,7 @@ func (useCase *authUseCase) Exchange(ctx context.Context, req *model.ExchangeReq
} }
if login.ClientID != req.ClientID || login.RedirectURI != req.RedirectURI { if login.ClientID != req.ClientID || login.RedirectURI != req.RedirectURI {
return "", model.ErrInvalidRequest return "", domain.ErrInvalidRequest
} }
if login.CodeChallenge != "" { if login.CodeChallenge != "" {
@ -130,7 +129,7 @@ func (useCase *authUseCase) Exchange(ctx context.Context, req *model.ExchangeReq
codeChallenge.Generate() codeChallenge.Generate()
if login.CodeChallenge != codeChallenge.Challenge { if login.CodeChallenge != codeChallenge.Challenge {
return "", model.ErrInvalidRequest return "", domain.ErrInvalidRequest
} }
} }

View File

@ -9,10 +9,10 @@ import (
"golang.org/x/text/language" "golang.org/x/text/language"
"golang.org/x/text/message" "golang.org/x/text/message"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/random" "source.toby3d.me/website/indieauth/internal/random"
"source.toby3d.me/website/oauth/web" "source.toby3d.me/website/indieauth/web"
) )
type RequestHandler struct { type RequestHandler struct {

View File

@ -10,9 +10,9 @@ import (
"golang.org/x/text/language" "golang.org/x/text/language"
"golang.org/x/text/message" "golang.org/x/text/message"
delivery "source.toby3d.me/website/oauth/internal/client/delivery/http" delivery "source.toby3d.me/website/indieauth/internal/client/delivery/http"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
) )
func TestRead(t *testing.T) { func TestRead(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type Repository interface { type Repository interface {

View File

@ -11,8 +11,8 @@ import (
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"willnorris.com/go/microformats" "willnorris.com/go/microformats"
"source.toby3d.me/website/oauth/internal/client" "source.toby3d.me/website/indieauth/internal/client"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type httpClientRepository struct { type httpClientRepository struct {

View File

@ -9,10 +9,10 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
repository "source.toby3d.me/website/oauth/internal/client/repository/http" repository "source.toby3d.me/website/indieauth/internal/client/repository/http"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
) )
const testBody string = ` const testBody string = `

View File

@ -5,8 +5,8 @@ import (
"path" "path"
"sync" "sync"
"source.toby3d.me/website/oauth/internal/client" "source.toby3d.me/website/indieauth/internal/client"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type memoryClientRepository struct { type memoryClientRepository struct {

View File

@ -9,8 +9,8 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
repository "source.toby3d.me/website/oauth/internal/client/repository/memory" repository "source.toby3d.me/website/indieauth/internal/client/repository/memory"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
func TestGet(t *testing.T) { func TestGet(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type UseCase interface { type UseCase interface {

View File

@ -4,8 +4,8 @@ import (
"context" "context"
"fmt" "fmt"
"source.toby3d.me/website/oauth/internal/client" "source.toby3d.me/website/indieauth/internal/client"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type clientUseCase struct { type clientUseCase struct {

View File

@ -9,9 +9,9 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
repository "source.toby3d.me/website/oauth/internal/client/repository/memory" repository "source.toby3d.me/website/indieauth/internal/client/repository/memory"
"source.toby3d.me/website/oauth/internal/client/usecase" "source.toby3d.me/website/indieauth/internal/client/usecase"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
func TestDiscovery(t *testing.T) { func TestDiscovery(t *testing.T) {

View File

@ -8,7 +8,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/viper" "github.com/spf13/viper"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
//nolint: gochecknoglobals //nolint: gochecknoglobals

View File

@ -16,16 +16,16 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"github.com/valyala/fasthttp/pprofhandler" "github.com/valyala/fasthttp/pprofhandler"
bolt "go.etcd.io/bbolt"
"golang.org/x/text/language" "golang.org/x/text/language"
"golang.org/x/text/message" "golang.org/x/text/message"
clienthttpdelivery "source.toby3d.me/website/oauth/internal/client/delivery/http" // bolt "go.etcd.io/bbolt".
healthhttpdelivery "source.toby3d.me/website/oauth/internal/health/delivery/http" clienthttpdelivery "source.toby3d.me/website/indieauth/internal/client/delivery/http"
metadatahttpdelivery "source.toby3d.me/website/oauth/internal/metadata/delivery/http" healthhttpdelivery "source.toby3d.me/website/indieauth/internal/health/delivery/http"
tickethttpdelivery "source.toby3d.me/website/oauth/internal/ticket/delivery/http" metadatahttpdelivery "source.toby3d.me/website/indieauth/internal/metadata/delivery/http"
ticketrepo "source.toby3d.me/website/oauth/internal/ticket/repository/http" tickethttpdelivery "source.toby3d.me/website/indieauth/internal/ticket/delivery/http"
ticketucase "source.toby3d.me/website/oauth/internal/ticket/usecase" ticketrepo "source.toby3d.me/website/indieauth/internal/ticket/repository/http"
ticketucase "source.toby3d.me/website/indieauth/internal/ticket/usecase"
) )
const ( const (
@ -58,11 +58,13 @@ func init() {
} }
func startServer(cmd *cobra.Command, args []string) { func startServer(cmd *cobra.Command, args []string) {
store, err := bolt.Open(config.Database.Path, os.ModePerm, nil) /*
if err != nil { store, err := bolt.Open(config.Database.Path, os.ModePerm, nil)
log.Fatalln("failed to open database connection:", err) if err != nil {
} log.Fatalln("failed to open database connection:", err)
defer store.Close() }
defer store.Close()
*/
httpClient := &http.Client{ httpClient := &http.Client{
Name: fmt.Sprintf("%s/0.1 (+%s)", config.Name, config.Server.GetAddress()), Name: fmt.Sprintf("%s/0.1 (+%s)", config.Name, config.Server.GetAddress()),
@ -135,7 +137,7 @@ func startServer(cmd *cobra.Command, args []string) {
<-done <-done
if err = server.Shutdown(); err != nil { if err := server.Shutdown(); err != nil {
log.Fatalln("failed shutdown of server:", err) log.Fatalln("failed shutdown of server:", err)
} }

View File

@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
//nolint: funlen //nolint: funlen

View File

@ -8,7 +8,7 @@ import (
"github.com/brianvoe/gofakeit/v6" "github.com/brianvoe/gofakeit/v6"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/random" "source.toby3d.me/website/indieauth/internal/random"
) )
// Code describes the PKCE challenge to validate the security of the request. // Code describes the PKCE challenge to validate the security of the request.

View File

@ -5,7 +5,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
func TestParseCodeChallengeMethod(t *testing.T) { func TestParseCodeChallengeMethod(t *testing.T) {

View File

@ -13,8 +13,8 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/random" "source.toby3d.me/website/indieauth/internal/random"
) )
//nolint: funlen //nolint: funlen

View File

@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
func TestMe(t *testing.T) { func TestMe(t *testing.T) {

View File

@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
func TestScopesUnmarshalJSON(t *testing.T) { func TestScopesUnmarshalJSON(t *testing.T) {

View File

@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/random" "source.toby3d.me/website/indieauth/internal/random"
) )
type ( type (

View File

@ -4,7 +4,7 @@ import (
"github.com/fasthttp/router" "github.com/fasthttp/router"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
) )
type RequestHandler struct{} type RequestHandler struct{}

View File

@ -8,8 +8,8 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
delivery "source.toby3d.me/website/oauth/internal/health/delivery/http" delivery "source.toby3d.me/website/indieauth/internal/health/delivery/http"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
) )
func TestRequestHandler(t *testing.T) { func TestRequestHandler(t *testing.T) {

View File

@ -6,8 +6,8 @@ import (
"github.com/fasthttp/router" "github.com/fasthttp/router"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type ( type (

View File

@ -9,9 +9,9 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
delivery "source.toby3d.me/website/oauth/internal/metadata/delivery/http" delivery "source.toby3d.me/website/indieauth/internal/metadata/delivery/http"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
) )
func TestMetadata(t *testing.T) { func TestMetadata(t *testing.T) {

View File

@ -9,9 +9,9 @@ import (
"golang.org/x/xerrors" "golang.org/x/xerrors"
"source.toby3d.me/toby3d/form" "source.toby3d.me/toby3d/form"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/ticket" "source.toby3d.me/website/indieauth/internal/ticket"
) )
type ( type (

View File

@ -11,12 +11,12 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
delivery "source.toby3d.me/website/oauth/internal/ticket/delivery/http" delivery "source.toby3d.me/website/indieauth/internal/ticket/delivery/http"
ticketrepo "source.toby3d.me/website/oauth/internal/ticket/repository/memory" ticketrepo "source.toby3d.me/website/indieauth/internal/ticket/repository/memory"
ucase "source.toby3d.me/website/oauth/internal/ticket/usecase" ucase "source.toby3d.me/website/indieauth/internal/ticket/usecase"
) )
// TODO(toby3d): looks ugly, refactor this? // TODO(toby3d): looks ugly, refactor this?

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type Repository interface { type Repository interface {

View File

@ -12,8 +12,8 @@ import (
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"willnorris.com/go/microformats" "willnorris.com/go/microformats"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/ticket" "source.toby3d.me/website/indieauth/internal/ticket"
) )
type ( type (

View File

@ -11,10 +11,10 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
repository "source.toby3d.me/website/oauth/internal/ticket/repository/http" repository "source.toby3d.me/website/indieauth/internal/ticket/repository/http"
) )
type TestCase struct { type TestCase struct {

View File

@ -5,8 +5,8 @@ import (
"path" "path"
"sync" "sync"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/ticket" "source.toby3d.me/website/indieauth/internal/ticket"
) )
type memoryTicketRepository struct { type memoryTicketRepository struct {

View File

@ -9,8 +9,8 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
repository "source.toby3d.me/website/oauth/internal/ticket/repository/memory" repository "source.toby3d.me/website/indieauth/internal/ticket/repository/memory"
) )
func TestGet(t *testing.T) { func TestGet(t *testing.T) {

View File

@ -3,7 +3,7 @@ package ticket
import ( import (
"context" "context"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type UseCase interface { type UseCase interface {

View File

@ -7,9 +7,9 @@ import (
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/ticket" "source.toby3d.me/website/indieauth/internal/ticket"
) )
type ( type (

View File

@ -11,11 +11,11 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
repo "source.toby3d.me/website/oauth/internal/ticket/repository/memory" repo "source.toby3d.me/website/indieauth/internal/ticket/repository/memory"
ucase "source.toby3d.me/website/oauth/internal/ticket/usecase" ucase "source.toby3d.me/website/indieauth/internal/ticket/usecase"
) )
func TestRedeem(t *testing.T) { func TestRedeem(t *testing.T) {

View File

@ -9,9 +9,9 @@ import (
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
) )
type ( type (

View File

@ -12,14 +12,14 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
configrepo "source.toby3d.me/website/oauth/internal/config/repository/viper" configrepo "source.toby3d.me/website/indieauth/internal/config/repository/viper"
configucase "source.toby3d.me/website/oauth/internal/config/usecase" configucase "source.toby3d.me/website/indieauth/internal/config/usecase"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
delivery "source.toby3d.me/website/oauth/internal/token/delivery/http" delivery "source.toby3d.me/website/indieauth/internal/token/delivery/http"
repository "source.toby3d.me/website/oauth/internal/token/repository/memory" repository "source.toby3d.me/website/indieauth/internal/token/repository/memory"
"source.toby3d.me/website/oauth/internal/token/usecase" "source.toby3d.me/website/indieauth/internal/token/usecase"
"source.toby3d.me/website/oauth/internal/util" "source.toby3d.me/website/indieauth/internal/util"
) )
func TestVerification(t *testing.T) { func TestVerification(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type Repository interface { type Repository interface {

View File

@ -9,8 +9,8 @@ import (
bolt "go.etcd.io/bbolt" bolt "go.etcd.io/bbolt"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
) )
type ( type (

View File

@ -10,10 +10,10 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
bolt "go.etcd.io/bbolt" bolt "go.etcd.io/bbolt"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
repository "source.toby3d.me/website/oauth/internal/token/repository/bolt" repository "source.toby3d.me/website/indieauth/internal/token/repository/bolt"
"source.toby3d.me/website/oauth/internal/util" "source.toby3d.me/website/indieauth/internal/util"
) )
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {

View File

@ -7,8 +7,8 @@ import (
"golang.org/x/xerrors" "golang.org/x/xerrors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
) )
type memoryTokenRepository struct { type memoryTokenRepository struct {

View File

@ -9,9 +9,9 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
repository "source.toby3d.me/website/oauth/internal/token/repository/memory" repository "source.toby3d.me/website/indieauth/internal/token/repository/memory"
) )
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type ( type (

View File

@ -10,10 +10,10 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"source.toby3d.me/website/oauth/internal/config" "source.toby3d.me/website/indieauth/internal/config"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/random" "source.toby3d.me/website/indieauth/internal/random"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
) )
type ( type (

View File

@ -10,12 +10,12 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
configrepo "source.toby3d.me/website/oauth/internal/config/repository/viper" configrepo "source.toby3d.me/website/indieauth/internal/config/repository/viper"
configucase "source.toby3d.me/website/oauth/internal/config/usecase" configucase "source.toby3d.me/website/indieauth/internal/config/usecase"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/token" "source.toby3d.me/website/indieauth/internal/token"
repository "source.toby3d.me/website/oauth/internal/token/repository/memory" repository "source.toby3d.me/website/indieauth/internal/token/repository/memory"
ucase "source.toby3d.me/website/oauth/internal/token/usecase" ucase "source.toby3d.me/website/indieauth/internal/token/usecase"
) )
func TestGenerate(t *testing.T) { func TestGenerate(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type Repository interface { type Repository interface {

View File

@ -12,8 +12,8 @@ import (
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"willnorris.com/go/microformats" "willnorris.com/go/microformats"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/user" "source.toby3d.me/website/indieauth/internal/user"
) )
type ( type (

View File

@ -12,10 +12,10 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
http "github.com/valyala/fasthttp" http "github.com/valyala/fasthttp"
"source.toby3d.me/website/oauth/internal/common" "source.toby3d.me/website/indieauth/internal/common"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/testing/httptest" "source.toby3d.me/website/indieauth/internal/testing/httptest"
repository "source.toby3d.me/website/oauth/internal/user/repository/http" repository "source.toby3d.me/website/indieauth/internal/user/repository/http"
) )
const testBody string = ` const testBody string = `

View File

@ -5,8 +5,8 @@ import (
"path" "path"
"sync" "sync"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/user" "source.toby3d.me/website/indieauth/internal/user"
) )
type memoryUserRepository struct { type memoryUserRepository struct {

View File

@ -9,8 +9,8 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
repository "source.toby3d.me/website/oauth/internal/user/repository/memory" repository "source.toby3d.me/website/indieauth/internal/user/repository/memory"
) )
func TestGet(t *testing.T) { func TestGet(t *testing.T) {

View File

@ -3,7 +3,7 @@ package user
import ( import (
"context" "context"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
type UseCase interface { type UseCase interface {

View File

@ -4,8 +4,8 @@ import (
"context" "context"
"fmt" "fmt"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
"source.toby3d.me/website/oauth/internal/user" "source.toby3d.me/website/indieauth/internal/user"
) )
type userUseCase struct { type userUseCase struct {

View File

@ -8,9 +8,9 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
repository "source.toby3d.me/website/oauth/internal/user/repository/memory" repository "source.toby3d.me/website/indieauth/internal/user/repository/memory"
ucase "source.toby3d.me/website/oauth/internal/user/usecase" ucase "source.toby3d.me/website/indieauth/internal/user/usecase"
) )
func TestFetch(t *testing.T) { func TestFetch(t *testing.T) {

View File

@ -1,51 +1,6 @@
{ {
"language": "en", "language": "en",
"messages": [ "messages": [
{
"id": "Authorize {Name0}",
"message": "Authorize {Name0}",
"translation": "Authorize {Name0}",
"translatorComment": "Copied from source.",
"placeholders": [
{
"id": "Name0",
"string": "%[1]s",
"type": "string",
"underlyingType": "string",
"argNum": 1,
"expr": "p.Client.Name[0]"
}
],
"fuzzy": true
},
{
"id": "Authorize application",
"message": "Authorize application",
"translation": "Authorize application",
"translatorComment": "Authorization page header for an unnamed application",
"fuzzy": true
},
{
"id": "Authorize",
"message": "Authorize",
"translation": "Authorize",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "application",
"message": "application",
"translation": "application",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "Check your scopes",
"message": "Check your scopes",
"translation": "Check your scopes",
"translatorComment": "Name of the section with the set of access rights checkboxes on the login page",
"fuzzy": true
},
{ {
"id": "Deny", "id": "Deny",
"message": "Deny", "message": "Deny",
@ -66,20 +21,6 @@
"translation": "Sign In", "translation": "Sign In",
"translatorComment": "The name of the button in the site address entry form to start the login process", "translatorComment": "The name of the button in the site address entry form to start the login process",
"fuzzy": true "fuzzy": true
},
{
"id": "Create a new remote token",
"message": "Create a new remote token",
"translation": "Create a new remote token",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "Send",
"message": "Send",
"translation": "Send",
"translatorComment": "Copied from source.",
"fuzzy": true
} }
] ]
} }

View File

@ -1,43 +1,6 @@
{ {
"language": "ru", "language": "ru",
"messages": [ "messages": [
{
"id": "Authorize {Name0}",
"message": "Authorize {Name0}",
"translation": "",
"placeholders": [
{
"id": "Name0",
"string": "%[1]s",
"type": "string",
"underlyingType": "string",
"argNum": 1,
"expr": "p.Client.Name[0]"
}
]
},
{
"id": "Authorize application",
"message": "Authorize application",
"translation": "Авторизовать приложение",
"translatorComment": "Заголовок страницы авторизации безымянного приложения"
},
{
"id": "Authorize",
"message": "Authorize",
"translation": ""
},
{
"id": "application",
"message": "application",
"translation": ""
},
{
"id": "Check your scopes",
"message": "Check your scopes",
"translation": "Проверь права доступа",
"translatorComment": "Имя секции с набором чекбоксов прав доступа на странице авторизации"
},
{ {
"id": "Deny", "id": "Deny",
"message": "Deny", "message": "Deny",
@ -55,16 +18,6 @@
"message": "Sign In", "message": "Sign In",
"translation": "Войти", "translation": "Войти",
"translatorComment": "Название кнопки в форме ввода адреса сайта для начала процесса входа" "translatorComment": "Название кнопки в форме ввода адреса сайта для начала процесса входа"
},
{
"id": "Create a new remote token",
"message": "Create a new remote token",
"translation": ""
},
{
"id": "Send",
"message": "Send",
"translation": ""
} }
] ]
} }

View File

@ -7,7 +7,7 @@ package main
import ( import (
_ "embed" _ "embed"
"source.toby3d.me/website/oauth/internal/cmd" "source.toby3d.me/website/indieauth/internal/cmd"
) )
func main() { cmd.Execute() } func main() { cmd.Execute() }

View File

@ -1,351 +0,0 @@
// Code generated by qtc from "auth.qtpl". DO NOT EDIT.
// See https://github.com/valyala/quicktemplate for details.
//line ../../web/auth.qtpl:1
package web
//line ../../web/auth.qtpl:1
import "gitlab.com/toby3d/indieauth/internal/model"
//line ../../web/auth.qtpl:3
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
//line ../../web/auth.qtpl:3
var (
_ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer
)
//line ../../web/auth.qtpl:4
type AuthPage struct {
Client *model.Client
CodeChallenge string
CodeChallengeMethod string
CSRF []byte
Me string
RedirectURI string
ResponseType string
Scope string
State []byte
}
//line ../../web/auth.qtpl:17
func (p *AuthPage) StreamLang(qw422016 *qt422016.Writer) {
//line ../../web/auth.qtpl:17
qw422016.N().S(`
en
`)
//line ../../web/auth.qtpl:19
}
//line ../../web/auth.qtpl:19
func (p *AuthPage) WriteLang(qq422016 qtio422016.Writer) {
//line ../../web/auth.qtpl:19
qw422016 := qt422016.AcquireWriter(qq422016)
//line ../../web/auth.qtpl:19
p.StreamLang(qw422016)
//line ../../web/auth.qtpl:19
qt422016.ReleaseWriter(qw422016)
//line ../../web/auth.qtpl:19
}
//line ../../web/auth.qtpl:19
func (p *AuthPage) Lang() string {
//line ../../web/auth.qtpl:19
qb422016 := qt422016.AcquireByteBuffer()
//line ../../web/auth.qtpl:19
p.WriteLang(qb422016)
//line ../../web/auth.qtpl:19
qs422016 := string(qb422016.B)
//line ../../web/auth.qtpl:19
qt422016.ReleaseByteBuffer(qb422016)
//line ../../web/auth.qtpl:19
return qs422016
//line ../../web/auth.qtpl:19
}
//line ../../web/auth.qtpl:21
func (p *AuthPage) StreamTitle(qw422016 *qt422016.Writer) {
//line ../../web/auth.qtpl:21
qw422016.N().S(`
Authorize `)
//line ../../web/auth.qtpl:22
qw422016.E().S(p.Client.Name)
//line ../../web/auth.qtpl:22
qw422016.N().S(`
`)
//line ../../web/auth.qtpl:23
}
//line ../../web/auth.qtpl:23
func (p *AuthPage) WriteTitle(qq422016 qtio422016.Writer) {
//line ../../web/auth.qtpl:23
qw422016 := qt422016.AcquireWriter(qq422016)
//line ../../web/auth.qtpl:23
p.StreamTitle(qw422016)
//line ../../web/auth.qtpl:23
qt422016.ReleaseWriter(qw422016)
//line ../../web/auth.qtpl:23
}
//line ../../web/auth.qtpl:23
func (p *AuthPage) Title() string {
//line ../../web/auth.qtpl:23
qb422016 := qt422016.AcquireByteBuffer()
//line ../../web/auth.qtpl:23
p.WriteTitle(qb422016)
//line ../../web/auth.qtpl:23
qs422016 := string(qb422016.B)
//line ../../web/auth.qtpl:23
qt422016.ReleaseByteBuffer(qb422016)
//line ../../web/auth.qtpl:23
return qs422016
//line ../../web/auth.qtpl:23
}
//line ../../web/auth.qtpl:25
func (p *AuthPage) StreamHead(qw422016 *qt422016.Writer) {
//line ../../web/auth.qtpl:25
qw422016.N().S(`
`)
//line ../../web/auth.qtpl:26
}
//line ../../web/auth.qtpl:26
func (p *AuthPage) WriteHead(qq422016 qtio422016.Writer) {
//line ../../web/auth.qtpl:26
qw422016 := qt422016.AcquireWriter(qq422016)
//line ../../web/auth.qtpl:26
p.StreamHead(qw422016)
//line ../../web/auth.qtpl:26
qt422016.ReleaseWriter(qw422016)
//line ../../web/auth.qtpl:26
}
//line ../../web/auth.qtpl:26
func (p *AuthPage) Head() string {
//line ../../web/auth.qtpl:26
qb422016 := qt422016.AcquireByteBuffer()
//line ../../web/auth.qtpl:26
p.WriteHead(qb422016)
//line ../../web/auth.qtpl:26
qs422016 := string(qb422016.B)
//line ../../web/auth.qtpl:26
qt422016.ReleaseByteBuffer(qb422016)
//line ../../web/auth.qtpl:26
return qs422016
//line ../../web/auth.qtpl:26
}
//line ../../web/auth.qtpl:28
func (p *AuthPage) StreamBody(qw422016 *qt422016.Writer) {
//line ../../web/auth.qtpl:28
qw422016.N().S(`
`)
//line ../../web/auth.qtpl:29
if p.Client.Logo != "" {
//line ../../web/auth.qtpl:29
qw422016.N().S(`
<img
alt="`)
//line ../../web/auth.qtpl:31
qw422016.E().S(p.Client.Name)
//line ../../web/auth.qtpl:31
qw422016.N().S(`"
crossorigin="anonymous"
decoding="async"
height="140"
importance="high"
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
src="`)
//line ../../web/auth.qtpl:38
qw422016.E().S(p.Client.Logo)
//line ../../web/auth.qtpl:38
qw422016.N().S(`"
width="140">
`)
//line ../../web/auth.qtpl:40
}
//line ../../web/auth.qtpl:40
qw422016.N().S(`
<h2>`)
//line ../../web/auth.qtpl:42
qw422016.E().S(p.Client.Name)
//line ../../web/auth.qtpl:42
qw422016.N().S(`</h2>
<form
accept-charset="utf-8"
action="/authorize"
autocomplete="off"
enctype="application/x-www-form-urlencoded"
method="post"
novalidate="true"
target="_self">
`)
//line ../../web/auth.qtpl:53
if p.CSRF != nil {
//line ../../web/auth.qtpl:53
qw422016.N().S(`
<input
name="_csrf"
type="hidden"
value="`)
//line ../../web/auth.qtpl:57
qw422016.E().Z(p.CSRF)
//line ../../web/auth.qtpl:57
qw422016.N().S(`">
`)
//line ../../web/auth.qtpl:58
}
//line ../../web/auth.qtpl:58
qw422016.N().S(`
<input
name="response_type"
type="hidden"
value="code">
<input
name="client_id"
type="hidden"
value="`)
//line ../../web/auth.qtpl:68
qw422016.E().S(p.Client.URL)
//line ../../web/auth.qtpl:68
qw422016.N().S(`">
<input
name="redirect_uri"
type="hidden"
value="`)
//line ../../web/auth.qtpl:73
qw422016.E().S(p.RedirectURI)
//line ../../web/auth.qtpl:73
qw422016.N().S(`">
<input
name="state"
type="hidden"
value="`)
//line ../../web/auth.qtpl:78
qw422016.E().Z(p.State)
//line ../../web/auth.qtpl:78
qw422016.N().S(`">
`)
//line ../../web/auth.qtpl:80
if p.CodeChallenge != "" {
//line ../../web/auth.qtpl:80
qw422016.N().S(`
<input
name="code_challenge"
type="hidden"
value="`)
//line ../../web/auth.qtpl:84
qw422016.E().S(p.CodeChallenge)
//line ../../web/auth.qtpl:84
qw422016.N().S(`">
<input
name="code_challenge_method"
type="hidden"
value="`)
//line ../../web/auth.qtpl:89
qw422016.E().S(p.CodeChallengeMethod)
//line ../../web/auth.qtpl:89
qw422016.N().S(`">
`)
//line ../../web/auth.qtpl:90
}
//line ../../web/auth.qtpl:90
qw422016.N().S(`
`)
//line ../../web/auth.qtpl:92
if p.Scope != "" {
//line ../../web/auth.qtpl:92
qw422016.N().S(`
<input
name="scope"
type="hidden"
value="`)
//line ../../web/auth.qtpl:96
qw422016.E().S(p.Scope)
//line ../../web/auth.qtpl:96
qw422016.N().S(`">
`)
//line ../../web/auth.qtpl:97
}
//line ../../web/auth.qtpl:97
qw422016.N().S(`
`)
//line ../../web/auth.qtpl:99
if p.Me != "" {
//line ../../web/auth.qtpl:99
qw422016.N().S(`
<input
name="me"
type="hidden"
value="`)
//line ../../web/auth.qtpl:103
qw422016.E().S(p.Me)
//line ../../web/auth.qtpl:103
qw422016.N().S(`">
`)
//line ../../web/auth.qtpl:104
}
//line ../../web/auth.qtpl:104
qw422016.N().S(`
<button
name="authorize"
type="submit"
value="deny">
Deny
</button>
<button
name="authorize"
type="submit"
value="allow">
Allow
</button>
</form>
`)
//line ../../web/auth.qtpl:120
}
//line ../../web/auth.qtpl:120
func (p *AuthPage) WriteBody(qq422016 qtio422016.Writer) {
//line ../../web/auth.qtpl:120
qw422016 := qt422016.AcquireWriter(qq422016)
//line ../../web/auth.qtpl:120
p.StreamBody(qw422016)
//line ../../web/auth.qtpl:120
qt422016.ReleaseWriter(qw422016)
//line ../../web/auth.qtpl:120
}
//line ../../web/auth.qtpl:120
func (p *AuthPage) Body() string {
//line ../../web/auth.qtpl:120
qb422016 := qt422016.AcquireByteBuffer()
//line ../../web/auth.qtpl:120
p.WriteBody(qb422016)
//line ../../web/auth.qtpl:120
qs422016 := string(qb422016.B)
//line ../../web/auth.qtpl:120
qt422016.ReleaseByteBuffer(qb422016)
//line ../../web/auth.qtpl:120
return qs422016
//line ../../web/auth.qtpl:120
}

View File

@ -1,60 +1,59 @@
{% import "gitlab.com/toby3d/indieauth/internal/model" %} {% import "source.toby3d.me/website/indieauth/internal/domain" %}
{% code {% code type AuthPage struct {
type AuthPage struct { BaseOf
Client *model.Client Client *domain.Client
CodeChallenge string Me *domain.Me
CodeChallengeMethod string RedirectURI *domain.URL
CSRF []byte CodeChallengeMethod domain.CodeChallengeMethod
Me string ResponseType domain.ResponseType
RedirectURI string Scope domain.Scopes
ResponseType string CodeChallenge string
Scope string CSRF string
State []byte State string
} } %}
%}
{% func (p *AuthPage) Lang() %} {% func (p *AuthPage) Lang() %}
en en
{% endfunc %} {% endfunc %}
{% func (p *AuthPage) Title() %} {% func (p *AuthPage) Title() %}
Authorize {%s p.Client.Name %} Authorize {%s p.Client.Name[0] %}
{% endfunc %} {% endfunc %}
{% func (p *AuthPage) Head() %} {% func (p *AuthPage) Head() %}
{% endfunc %} {% endfunc %}
{% func (p *AuthPage) Body() %} {% func (p *AuthPage) Body() %}
{% if p.Client.Logo != "" %} {% if p.Client.Logo[0] != nil %}
<img <img
alt="{%s p.Client.Name %}" alt="{%s p.Client.Name[0] %}"
crossorigin="anonymous" crossorigin="anonymous"
decoding="async" decoding="async"
height="140" height="140"
importance="high" importance="high"
loading="lazy" loading="lazy"
referrerpolicy="no-referrer-when-downgrade" referrerpolicy="no-referrer-when-downgrade"
src="{%s p.Client.Logo %}" src="{%s p.Client.Logo[0].String() %}"
width="140"> width="140">
{% endif %} {% endif %}
<h2>{%s p.Client.Name %}</h2> <h2>{%s p.Client.Name[0] %}</h2>
<form <form
accept-charset="utf-8" accept-charset="utf-8"
action="/authorize" action="/api/authorize"
autocomplete="off" autocomplete="off"
enctype="application/x-www-form-urlencoded" enctype="application/x-www-form-urlencoded"
method="post" method="post"
novalidate="true" novalidate="true"
target="_self"> target="_self">
{% if p.CSRF != nil %} {% if p.CSRF != "" %}
<input <input
name="_csrf" name="_csrf"
type="hidden" type="hidden"
value="{%z p.CSRF %}"> value="{%s p.CSRF %}">
{% endif %} {% endif %}
<input <input
@ -65,17 +64,17 @@
<input <input
name="client_id" name="client_id"
type="hidden" type="hidden"
value="{%s p.Client.URL %}"> value="{%s p.Client.URL[0].String() %}">
<input <input
name="redirect_uri" name="redirect_uri"
type="hidden" type="hidden"
value="{%s p.RedirectURI %}"> value="{%s p.RedirectURI.String() %}">
<input <input
name="state" name="state"
type="hidden" type="hidden"
value="{%z p.State %}"> value="{%s p.State %}">
{% if p.CodeChallenge != "" %} {% if p.CodeChallenge != "" %}
<input <input
@ -86,35 +85,37 @@
<input <input
name="code_challenge_method" name="code_challenge_method"
type="hidden" type="hidden"
value="{%s p.CodeChallengeMethod %}"> value="{%s p.CodeChallengeMethod.String() %}">
{% endif %} {% endif %}
{% if p.Scope != "" %} {% if len(p.Scope) != 0 %}
<input <input
name="scope" name="scope"
type="hidden" type="hidden"
value="{%s p.Scope %}"> value="{%s p.Scope.String() %}">
{% endif %} {% endif %}
{% if p.Me != "" %} {% if p.Me != nil %}
<input <input
name="me" name="me"
type="hidden" type="hidden"
value="{%s p.Me %}"> value="{%s p.Me.String() %}">
{% endif %} {% endif %}
<button <button
name="authorize" name="authorize"
type="submit" type="submit"
value="deny"> value="deny">
Deny
{%= p.T("Deny") %}
</button> </button>
<button <button
name="authorize" name="authorize"
type="submit" type="submit"
value="allow"> value="allow">
Allow
{%= p.T("Allow") %}
</button> </button>
</form> </form>
{% endfunc %} {% endfunc %}

362
web/authorize.qtpl.go Normal file
View File

@ -0,0 +1,362 @@
// Code generated by qtc from "authorize.qtpl". DO NOT EDIT.
// See https://github.com/valyala/quicktemplate for details.
//line web/authorize.qtpl:1
package web
//line web/authorize.qtpl:1
import "source.toby3d.me/website/indieauth/internal/domain"
//line web/authorize.qtpl:3
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
//line web/authorize.qtpl:3
var (
_ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer
)
//line web/authorize.qtpl:3
type AuthPage struct {
BaseOf
Client *domain.Client
Me *domain.Me
RedirectURI *domain.URL
CodeChallengeMethod domain.CodeChallengeMethod
ResponseType domain.ResponseType
Scope domain.Scopes
CodeChallenge string
CSRF string
State string
}
//line web/authorize.qtpl:16
func (p *AuthPage) StreamLang(qw422016 *qt422016.Writer) {
//line web/authorize.qtpl:16
qw422016.N().S(`
en
`)
//line web/authorize.qtpl:18
}
//line web/authorize.qtpl:18
func (p *AuthPage) WriteLang(qq422016 qtio422016.Writer) {
//line web/authorize.qtpl:18
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/authorize.qtpl:18
p.StreamLang(qw422016)
//line web/authorize.qtpl:18
qt422016.ReleaseWriter(qw422016)
//line web/authorize.qtpl:18
}
//line web/authorize.qtpl:18
func (p *AuthPage) Lang() string {
//line web/authorize.qtpl:18
qb422016 := qt422016.AcquireByteBuffer()
//line web/authorize.qtpl:18
p.WriteLang(qb422016)
//line web/authorize.qtpl:18
qs422016 := string(qb422016.B)
//line web/authorize.qtpl:18
qt422016.ReleaseByteBuffer(qb422016)
//line web/authorize.qtpl:18
return qs422016
//line web/authorize.qtpl:18
}
//line web/authorize.qtpl:20
func (p *AuthPage) StreamTitle(qw422016 *qt422016.Writer) {
//line web/authorize.qtpl:20
qw422016.N().S(`
Authorize `)
//line web/authorize.qtpl:21
qw422016.E().S(p.Client.Name[0])
//line web/authorize.qtpl:21
qw422016.N().S(`
`)
//line web/authorize.qtpl:22
}
//line web/authorize.qtpl:22
func (p *AuthPage) WriteTitle(qq422016 qtio422016.Writer) {
//line web/authorize.qtpl:22
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/authorize.qtpl:22
p.StreamTitle(qw422016)
//line web/authorize.qtpl:22
qt422016.ReleaseWriter(qw422016)
//line web/authorize.qtpl:22
}
//line web/authorize.qtpl:22
func (p *AuthPage) Title() string {
//line web/authorize.qtpl:22
qb422016 := qt422016.AcquireByteBuffer()
//line web/authorize.qtpl:22
p.WriteTitle(qb422016)
//line web/authorize.qtpl:22
qs422016 := string(qb422016.B)
//line web/authorize.qtpl:22
qt422016.ReleaseByteBuffer(qb422016)
//line web/authorize.qtpl:22
return qs422016
//line web/authorize.qtpl:22
}
//line web/authorize.qtpl:24
func (p *AuthPage) StreamHead(qw422016 *qt422016.Writer) {
//line web/authorize.qtpl:24
qw422016.N().S(`
`)
//line web/authorize.qtpl:25
}
//line web/authorize.qtpl:25
func (p *AuthPage) WriteHead(qq422016 qtio422016.Writer) {
//line web/authorize.qtpl:25
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/authorize.qtpl:25
p.StreamHead(qw422016)
//line web/authorize.qtpl:25
qt422016.ReleaseWriter(qw422016)
//line web/authorize.qtpl:25
}
//line web/authorize.qtpl:25
func (p *AuthPage) Head() string {
//line web/authorize.qtpl:25
qb422016 := qt422016.AcquireByteBuffer()
//line web/authorize.qtpl:25
p.WriteHead(qb422016)
//line web/authorize.qtpl:25
qs422016 := string(qb422016.B)
//line web/authorize.qtpl:25
qt422016.ReleaseByteBuffer(qb422016)
//line web/authorize.qtpl:25
return qs422016
//line web/authorize.qtpl:25
}
//line web/authorize.qtpl:27
func (p *AuthPage) StreamBody(qw422016 *qt422016.Writer) {
//line web/authorize.qtpl:27
qw422016.N().S(`
`)
//line web/authorize.qtpl:28
if p.Client.Logo[0] != nil {
//line web/authorize.qtpl:28
qw422016.N().S(`
<img
alt="`)
//line web/authorize.qtpl:30
qw422016.E().S(p.Client.Name[0])
//line web/authorize.qtpl:30
qw422016.N().S(`"
crossorigin="anonymous"
decoding="async"
height="140"
importance="high"
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
src="`)
//line web/authorize.qtpl:37
qw422016.E().S(p.Client.Logo[0].String())
//line web/authorize.qtpl:37
qw422016.N().S(`"
width="140">
`)
//line web/authorize.qtpl:39
}
//line web/authorize.qtpl:39
qw422016.N().S(`
<h2>`)
//line web/authorize.qtpl:41
qw422016.E().S(p.Client.Name[0])
//line web/authorize.qtpl:41
qw422016.N().S(`</h2>
<form
accept-charset="utf-8"
action="/api/authorize"
autocomplete="off"
enctype="application/x-www-form-urlencoded"
method="post"
novalidate="true"
target="_self">
`)
//line web/authorize.qtpl:52
if p.CSRF != "" {
//line web/authorize.qtpl:52
qw422016.N().S(`
<input
name="_csrf"
type="hidden"
value="`)
//line web/authorize.qtpl:56
qw422016.E().S(p.CSRF)
//line web/authorize.qtpl:56
qw422016.N().S(`">
`)
//line web/authorize.qtpl:57
}
//line web/authorize.qtpl:57
qw422016.N().S(`
<input
name="response_type"
type="hidden"
value="code">
<input
name="client_id"
type="hidden"
value="`)
//line web/authorize.qtpl:67
qw422016.E().S(p.Client.URL[0].String())
//line web/authorize.qtpl:67
qw422016.N().S(`">
<input
name="redirect_uri"
type="hidden"
value="`)
//line web/authorize.qtpl:72
qw422016.E().S(p.RedirectURI.String())
//line web/authorize.qtpl:72
qw422016.N().S(`">
<input
name="state"
type="hidden"
value="`)
//line web/authorize.qtpl:77
qw422016.E().S(p.State)
//line web/authorize.qtpl:77
qw422016.N().S(`">
`)
//line web/authorize.qtpl:79
if p.CodeChallenge != "" {
//line web/authorize.qtpl:79
qw422016.N().S(`
<input
name="code_challenge"
type="hidden"
value="`)
//line web/authorize.qtpl:83
qw422016.E().S(p.CodeChallenge)
//line web/authorize.qtpl:83
qw422016.N().S(`">
<input
name="code_challenge_method"
type="hidden"
value="`)
//line web/authorize.qtpl:88
qw422016.E().S(p.CodeChallengeMethod.String())
//line web/authorize.qtpl:88
qw422016.N().S(`">
`)
//line web/authorize.qtpl:89
}
//line web/authorize.qtpl:89
qw422016.N().S(`
`)
//line web/authorize.qtpl:91
if len(p.Scope) != 0 {
//line web/authorize.qtpl:91
qw422016.N().S(`
<input
name="scope"
type="hidden"
value="`)
//line web/authorize.qtpl:95
qw422016.E().S(p.Scope.String())
//line web/authorize.qtpl:95
qw422016.N().S(`">
`)
//line web/authorize.qtpl:96
}
//line web/authorize.qtpl:96
qw422016.N().S(`
`)
//line web/authorize.qtpl:98
if p.Me != nil {
//line web/authorize.qtpl:98
qw422016.N().S(`
<input
name="me"
type="hidden"
value="`)
//line web/authorize.qtpl:102
qw422016.E().S(p.Me.String())
//line web/authorize.qtpl:102
qw422016.N().S(`">
`)
//line web/authorize.qtpl:103
}
//line web/authorize.qtpl:103
qw422016.N().S(`
<button
name="authorize"
type="submit"
value="deny">
`)
//line web/authorize.qtpl:110
p.StreamT(qw422016, "Deny")
//line web/authorize.qtpl:110
qw422016.N().S(`
</button>
<button
name="authorize"
type="submit"
value="allow">
`)
//line web/authorize.qtpl:118
p.StreamT(qw422016, "Allow")
//line web/authorize.qtpl:118
qw422016.N().S(`
</button>
</form>
`)
//line web/authorize.qtpl:121
}
//line web/authorize.qtpl:121
func (p *AuthPage) WriteBody(qq422016 qtio422016.Writer) {
//line web/authorize.qtpl:121
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/authorize.qtpl:121
p.StreamBody(qw422016)
//line web/authorize.qtpl:121
qt422016.ReleaseWriter(qw422016)
//line web/authorize.qtpl:121
}
//line web/authorize.qtpl:121
func (p *AuthPage) Body() string {
//line web/authorize.qtpl:121
qb422016 := qt422016.AcquireByteBuffer()
//line web/authorize.qtpl:121
p.WriteBody(qb422016)
//line web/authorize.qtpl:121
qs422016 := string(qb422016.B)
//line web/authorize.qtpl:121
qt422016.ReleaseByteBuffer(qb422016)
//line web/authorize.qtpl:121
return qs422016
//line web/authorize.qtpl:121
}

View File

@ -2,7 +2,7 @@
"golang.org/x/text/language" "golang.org/x/text/language"
"golang.org/x/text/message" "golang.org/x/text/message"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) %} ) %}
{% interface Page { {% interface Page {
@ -10,15 +10,14 @@
Head() Head()
Lang() Lang()
Title() Title()
T(format string, args ...interface{})
} %} } %}
{% code {% code type BaseOf struct {
type BaseOf struct { Config *domain.Config
Config *domain.Config Language language.Tag
Language language.Tag Printer *message.Printer
Printer *message.Printer } %}
}
%}
{% stripspace %} {% stripspace %}
{% func (p *BaseOf) Lang() %} {% func (p *BaseOf) Lang() %}
@ -71,6 +70,7 @@
content="width=device-width, initial-scale=1.0"> content="width=device-width, initial-scale=1.0">
{%= p.Head() %} {%= p.Head() %}
<title>{%= p.Title() %}</title> <title>{%= p.Title() %}</title>
</head> </head>
<body class="page__body body"> <body class="page__body body">
@ -79,9 +79,9 @@
</html> </html>
{% endfunc %} {% endfunc %}
{% func (p *BaseOf) T(str string, args ...interface{}) %} {% func (p *BaseOf) T(format string, args ...interface{}) %}
{% code {% code
result := p.Printer.Sprintf(str, args...) result := p.Printer.Sprintf(format, args...)
%} %}
{%s result %} {%s result %}
{% endfunc %} {% endfunc %}

View File

@ -9,7 +9,7 @@ import (
"golang.org/x/text/language" "golang.org/x/text/language"
"golang.org/x/text/message" "golang.org/x/text/message"
"source.toby3d.me/website/oauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
//line web/baseof.qtpl:8 //line web/baseof.qtpl:8
@ -51,6 +51,12 @@ type Page interface {
StreamTitle(qw422016 *qt422016.Writer) StreamTitle(qw422016 *qt422016.Writer)
//line web/baseof.qtpl:8 //line web/baseof.qtpl:8
WriteTitle(qq422016 qtio422016.Writer) WriteTitle(qq422016 qtio422016.Writer)
//line web/baseof.qtpl:8
T(format string, args ...interface{}) string
//line web/baseof.qtpl:8
StreamT(qw422016 *qt422016.Writer, format string, args ...interface{})
//line web/baseof.qtpl:8
WriteT(qq422016 qtio422016.Writer, format string, args ...interface{})
//line web/baseof.qtpl:8 //line web/baseof.qtpl:8
} }
@ -61,177 +67,177 @@ type BaseOf struct {
Printer *message.Printer Printer *message.Printer
} }
//line web/baseof.qtpl:24 //line web/baseof.qtpl:23
func (p *BaseOf) StreamLang(qw422016 *qt422016.Writer) { func (p *BaseOf) StreamLang(qw422016 *qt422016.Writer) {
//line web/baseof.qtpl:25 //line web/baseof.qtpl:24
if p.Language != language.Und { if p.Language != language.Und {
//line web/baseof.qtpl:26 //line web/baseof.qtpl:25
qw422016.E().S(p.Language.String()) qw422016.E().S(p.Language.String())
//line web/baseof.qtpl:27 //line web/baseof.qtpl:26
} else { } else {
//line web/baseof.qtpl:27 //line web/baseof.qtpl:26
qw422016.N().S(`en`) qw422016.N().S(`en`)
//line web/baseof.qtpl:29 //line web/baseof.qtpl:28
} }
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
} }
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
func (p *BaseOf) WriteLang(qq422016 qtio422016.Writer) { func (p *BaseOf) WriteLang(qq422016 qtio422016.Writer) {
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
p.StreamLang(qw422016) p.StreamLang(qw422016)
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
} }
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
func (p *BaseOf) Lang() string { func (p *BaseOf) Lang() string {
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
p.WriteLang(qb422016) p.WriteLang(qb422016)
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
return qs422016 return qs422016
//line web/baseof.qtpl:30 //line web/baseof.qtpl:29
} }
//line web/baseof.qtpl:34 //line web/baseof.qtpl:33
func (p *BaseOf) StreamTitle(qw422016 *qt422016.Writer) { func (p *BaseOf) StreamTitle(qw422016 *qt422016.Writer) {
//line web/baseof.qtpl:33
qw422016.N().S(` `)
//line web/baseof.qtpl:34
qw422016.E().S(p.Config.Name)
//line web/baseof.qtpl:34 //line web/baseof.qtpl:34
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/baseof.qtpl:35 //line web/baseof.qtpl:35
qw422016.E().S(p.Config.Name) }
//line web/baseof.qtpl:35 //line web/baseof.qtpl:35
qw422016.N().S(` `)
//line web/baseof.qtpl:36
}
//line web/baseof.qtpl:36
func (p *BaseOf) WriteTitle(qq422016 qtio422016.Writer) { func (p *BaseOf) WriteTitle(qq422016 qtio422016.Writer) {
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
p.StreamTitle(qw422016) p.StreamTitle(qw422016)
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
} }
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
func (p *BaseOf) Title() string { func (p *BaseOf) Title() string {
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
p.WriteTitle(qb422016) p.WriteTitle(qb422016)
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
return qs422016 return qs422016
//line web/baseof.qtpl:36 //line web/baseof.qtpl:35
} }
//line web/baseof.qtpl:38 //line web/baseof.qtpl:37
func (p *BaseOf) StreamHead(qw422016 *qt422016.Writer) { func (p *BaseOf) StreamHead(qw422016 *qt422016.Writer) {
//line web/baseof.qtpl:38 //line web/baseof.qtpl:37
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/baseof.qtpl:39 //line web/baseof.qtpl:38
qw422016.N().S(` <link rel="icon" href="`) qw422016.N().S(` <link rel="icon" href="`)
//line web/baseof.qtpl:42 //line web/baseof.qtpl:41
qw422016.E().S(p.Config.Server.StaticURLPrefix) qw422016.E().S(p.Config.Server.StaticURLPrefix)
//line web/baseof.qtpl:42 //line web/baseof.qtpl:41
qw422016.N().S(`/favicon.ico" sizes="any"> <link rel="icon" href="`) qw422016.N().S(`/favicon.ico" sizes="any"> <link rel="icon" href="`)
//line web/baseof.qtpl:47 //line web/baseof.qtpl:46
qw422016.E().S(p.Config.Server.StaticURLPrefix) qw422016.E().S(p.Config.Server.StaticURLPrefix)
//line web/baseof.qtpl:47 //line web/baseof.qtpl:46
qw422016.N().S(`/icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="`) qw422016.N().S(`/icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="`)
//line web/baseof.qtpl:52 //line web/baseof.qtpl:51
qw422016.E().S(p.Config.Server.StaticURLPrefix) qw422016.E().S(p.Config.Server.StaticURLPrefix)
//line web/baseof.qtpl:52 //line web/baseof.qtpl:51
qw422016.N().S(`/apple-touch-icon.png"> <link rel="manifest" href="`) qw422016.N().S(`/apple-touch-icon.png"> <link rel="manifest" href="`)
//line web/baseof.qtpl:56 //line web/baseof.qtpl:55
qw422016.E().S(p.Config.Server.StaticURLPrefix) qw422016.E().S(p.Config.Server.StaticURLPrefix)
//line web/baseof.qtpl:56 //line web/baseof.qtpl:55
qw422016.N().S(`/manifest.webmanifest"> `) qw422016.N().S(`/manifest.webmanifest"> `)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
} }
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
func (p *BaseOf) WriteHead(qq422016 qtio422016.Writer) { func (p *BaseOf) WriteHead(qq422016 qtio422016.Writer) {
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
p.StreamHead(qw422016) p.StreamHead(qw422016)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
} }
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
func (p *BaseOf) Head() string { func (p *BaseOf) Head() string {
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
p.WriteHead(qb422016) p.WriteHead(qb422016)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
return qs422016 return qs422016
//line web/baseof.qtpl:57 //line web/baseof.qtpl:56
} }
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
func (p *BaseOf) StreamBody(qw422016 *qt422016.Writer) { func (p *BaseOf) StreamBody(qw422016 *qt422016.Writer) {
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
} }
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
func (p *BaseOf) WriteBody(qq422016 qtio422016.Writer) { func (p *BaseOf) WriteBody(qq422016 qtio422016.Writer) {
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
p.StreamBody(qw422016) p.StreamBody(qw422016)
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
} }
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
func (p *BaseOf) Body() string { func (p *BaseOf) Body() string {
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
p.WriteBody(qb422016) p.WriteBody(qb422016)
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
return qs422016 return qs422016
//line web/baseof.qtpl:59 //line web/baseof.qtpl:58
} }
//line web/baseof.qtpl:61 //line web/baseof.qtpl:60
func StreamTemplate(qw422016 *qt422016.Writer, p Page) { func StreamTemplate(qw422016 *qt422016.Writer, p Page) {
//line web/baseof.qtpl:61 //line web/baseof.qtpl:60
qw422016.N().S(` <!DOCTYPE html> <html class="page" lang="`) qw422016.N().S(` <!DOCTYPE html> <html class="page" lang="`)
//line web/baseof.qtpl:65 //line web/baseof.qtpl:64
p.StreamLang(qw422016) p.StreamLang(qw422016)
//line web/baseof.qtpl:65 //line web/baseof.qtpl:64
qw422016.N().S(`"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> `) qw422016.N().S(`"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> `)
//line web/baseof.qtpl:73 //line web/baseof.qtpl:72
p.StreamHead(qw422016) p.StreamHead(qw422016)
//line web/baseof.qtpl:73 //line web/baseof.qtpl:72
qw422016.N().S(` <title>`) qw422016.N().S(` <title>`)
//line web/baseof.qtpl:74 //line web/baseof.qtpl:74
p.StreamTitle(qw422016) p.StreamTitle(qw422016)
@ -271,11 +277,11 @@ func Template(p Page) string {
} }
//line web/baseof.qtpl:82 //line web/baseof.qtpl:82
func (p *BaseOf) StreamT(qw422016 *qt422016.Writer, str string, args ...interface{}) { func (p *BaseOf) StreamT(qw422016 *qt422016.Writer, format string, args ...interface{}) {
//line web/baseof.qtpl:82 //line web/baseof.qtpl:82
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/baseof.qtpl:84 //line web/baseof.qtpl:84
result := p.Printer.Sprintf(str, args...) result := p.Printer.Sprintf(format, args...)
//line web/baseof.qtpl:85 //line web/baseof.qtpl:85
qw422016.N().S(` `) qw422016.N().S(` `)
@ -287,22 +293,22 @@ func (p *BaseOf) StreamT(qw422016 *qt422016.Writer, str string, args ...interfac
} }
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
func (p *BaseOf) WriteT(qq422016 qtio422016.Writer, str string, args ...interface{}) { func (p *BaseOf) WriteT(qq422016 qtio422016.Writer, format string, args ...interface{}) {
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
p.StreamT(qw422016, str, args...) p.StreamT(qw422016, format, args...)
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
} }
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
func (p *BaseOf) T(str string, args ...interface{}) string { func (p *BaseOf) T(format string, args ...interface{}) string {
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
p.WriteT(qb422016, str, args...) p.WriteT(qb422016, format, args...)
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/baseof.qtpl:87 //line web/baseof.qtpl:87

View File

@ -1,14 +1,12 @@
{% import "source.toby3d.me/website/oauth/internal/domain" %} {% import "source.toby3d.me/website/indieauth/internal/domain" %}
{% code {% code type HomePage struct {
type HomePage struct { BaseOf
BaseOf RedirectURI []*domain.URL
RedirectURI []*domain.URL Client *domain.Client
Client *domain.Client AuthEndpoint,
AuthEndpoint, State string
State string } %}
}
%}
{% collapsespace %} {% collapsespace %}
{% func (p *HomePage) Head() %} {% func (p *HomePage) Head() %}

View File

@ -5,7 +5,7 @@
package web package web
//line web/home.qtpl:1 //line web/home.qtpl:1
import "source.toby3d.me/website/oauth/internal/domain" import "source.toby3d.me/website/indieauth/internal/domain"
//line web/home.qtpl:3 //line web/home.qtpl:3
import ( import (
@ -20,7 +20,7 @@ var (
_ = qt422016.AcquireByteBuffer _ = qt422016.AcquireByteBuffer
) )
//line web/home.qtpl:4 //line web/home.qtpl:3
type HomePage struct { type HomePage struct {
BaseOf BaseOf
RedirectURI []*domain.URL RedirectURI []*domain.URL
@ -29,137 +29,137 @@ type HomePage struct {
State string State string
} }
//line web/home.qtpl:14 //line web/home.qtpl:12
func (p *HomePage) StreamHead(qw422016 *qt422016.Writer) { func (p *HomePage) StreamHead(qw422016 *qt422016.Writer) {
//line web/home.qtpl:14 //line web/home.qtpl:12
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/home.qtpl:15 //line web/home.qtpl:13
p.BaseOf.StreamHead(qw422016) p.BaseOf.StreamHead(qw422016)
//line web/home.qtpl:15 //line web/home.qtpl:13
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/home.qtpl:16 //line web/home.qtpl:14
for i := range p.RedirectURI { for i := range p.RedirectURI {
//line web/home.qtpl:16 //line web/home.qtpl:14
qw422016.N().S(` <link rel="redirect_uri" href="`) qw422016.N().S(` <link rel="redirect_uri" href="`)
//line web/home.qtpl:17 //line web/home.qtpl:15
qw422016.E().S(p.RedirectURI[i].String()) qw422016.E().S(p.RedirectURI[i].String())
//line web/home.qtpl:17 //line web/home.qtpl:15
qw422016.N().S(`"> `) qw422016.N().S(`"> `)
//line web/home.qtpl:18 //line web/home.qtpl:16
} }
//line web/home.qtpl:18 //line web/home.qtpl:16
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/home.qtpl:19 //line web/home.qtpl:17
} }
//line web/home.qtpl:19 //line web/home.qtpl:17
func (p *HomePage) WriteHead(qq422016 qtio422016.Writer) { func (p *HomePage) WriteHead(qq422016 qtio422016.Writer) {
//line web/home.qtpl:19 //line web/home.qtpl:17
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/home.qtpl:19 //line web/home.qtpl:17
p.StreamHead(qw422016) p.StreamHead(qw422016)
//line web/home.qtpl:19 //line web/home.qtpl:17
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/home.qtpl:19 //line web/home.qtpl:17
} }
//line web/home.qtpl:19 //line web/home.qtpl:17
func (p *HomePage) Head() string { func (p *HomePage) Head() string {
//line web/home.qtpl:19 //line web/home.qtpl:17
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/home.qtpl:19 //line web/home.qtpl:17
p.WriteHead(qb422016) p.WriteHead(qb422016)
//line web/home.qtpl:19 //line web/home.qtpl:17
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/home.qtpl:19 //line web/home.qtpl:17
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line web/home.qtpl:19 //line web/home.qtpl:17
return qs422016 return qs422016
//line web/home.qtpl:19 //line web/home.qtpl:17
} }
//line web/home.qtpl:21 //line web/home.qtpl:19
func (p *HomePage) StreamBody(qw422016 *qt422016.Writer) { func (p *HomePage) StreamBody(qw422016 *qt422016.Writer) {
//line web/home.qtpl:21 //line web/home.qtpl:19
qw422016.N().S(` <div class="h-app h-x-app"> <img class="u-logo" src="`) qw422016.N().S(` <div class="h-app h-x-app"> <img class="u-logo" src="`)
//line web/home.qtpl:25 //line web/home.qtpl:23
qw422016.E().S(p.Client.Logo[0].String()) qw422016.E().S(p.Client.Logo[0].String())
//line web/home.qtpl:25 //line web/home.qtpl:23
qw422016.N().S(`" alt="`) qw422016.N().S(`" alt="`)
//line web/home.qtpl:26 //line web/home.qtpl:24
qw422016.E().S(p.Client.Name[0]) qw422016.E().S(p.Client.Name[0])
//line web/home.qtpl:26 //line web/home.qtpl:24
qw422016.N().S(`" crossorigin="anonymous" decoding="async" height="140" importance="high" referrerpolicy="no-referrer-when-downgrade" width="140"> <h1> <a class="p-name u-url" href="`) qw422016.N().S(`" crossorigin="anonymous" decoding="async" height="140" importance="high" referrerpolicy="no-referrer-when-downgrade" width="140"> <h1> <a class="p-name u-url" href="`)
//line web/home.qtpl:37 //line web/home.qtpl:35
qw422016.E().S(p.Client.URL[0].String()) qw422016.E().S(p.Client.URL[0].String())
//line web/home.qtpl:37 //line web/home.qtpl:35
qw422016.N().S(`"> `) qw422016.N().S(`"> `)
//line web/home.qtpl:39 //line web/home.qtpl:37
qw422016.E().S(p.Client.Name[0]) qw422016.E().S(p.Client.Name[0])
//line web/home.qtpl:39 //line web/home.qtpl:37
qw422016.N().S(` </a> </h1> <form method="get" action="`) qw422016.N().S(` </a> </h1> <form method="get" action="`)
//line web/home.qtpl:45 //line web/home.qtpl:43
qw422016.E().S(p.AuthEndpoint) qw422016.E().S(p.AuthEndpoint)
//line web/home.qtpl:45 //line web/home.qtpl:43
qw422016.N().S(`" enctype="application/x-www-form-urlencoded" accept-charset="utf-8" target="_self"> `) qw422016.N().S(`" enctype="application/x-www-form-urlencoded" accept-charset="utf-8" target="_self"> `)
//line web/home.qtpl:50 //line web/home.qtpl:48
for name, value := range map[string]string{ for name, value := range map[string]string{
"client_id": p.Client.ID.String(), "client_id": p.Client.ID.String(),
"redirect_uri": p.Client.RedirectURI[0].String(), "redirect_uri": p.Client.RedirectURI[0].String(),
"response_type": "code", "response_type": "code",
"state": p.State, "state": p.State,
} { } {
//line web/home.qtpl:55 //line web/home.qtpl:53
qw422016.N().S(` <input type="hidden" name="`) qw422016.N().S(` <input type="hidden" name="`)
//line web/home.qtpl:58 //line web/home.qtpl:56
qw422016.E().S(name) qw422016.E().S(name)
//line web/home.qtpl:58 //line web/home.qtpl:56
qw422016.N().S(`" value="`) qw422016.N().S(`" value="`)
//line web/home.qtpl:59 //line web/home.qtpl:57
qw422016.E().S(value) qw422016.E().S(value)
//line web/home.qtpl:59 //line web/home.qtpl:57
qw422016.N().S(`"> `) qw422016.N().S(`"> `)
//line web/home.qtpl:60 //line web/home.qtpl:58
} }
//line web/home.qtpl:60 //line web/home.qtpl:58
qw422016.N().S(` <input type="hidden" name="scope" value="`) qw422016.N().S(` <input type="hidden" name="scope" value="`)
//line web/home.qtpl:65 //line web/home.qtpl:63
qw422016.E().S(domain.ScopeProfile.String()) qw422016.E().S(domain.ScopeProfile.String())
//line web/home.qtpl:65 //line web/home.qtpl:63
qw422016.N().S(` `) qw422016.N().S(` `)
//line web/home.qtpl:65 //line web/home.qtpl:63
qw422016.E().S(domain.ScopeEmail.String()) qw422016.E().S(domain.ScopeEmail.String())
//line web/home.qtpl:65 //line web/home.qtpl:63
qw422016.N().S(`"> <input type="url" name="me" placeholder="https://example.com/" inputmode="url" autocomplete="url" required> <button type="submit">`) qw422016.N().S(`"> <input type="url" name="me" placeholder="https://example.com/" inputmode="url" autocomplete="url" required> <button type="submit">`)
//line web/home.qtpl:75 //line web/home.qtpl:73
p.StreamT(qw422016, "Sign In") p.StreamT(qw422016, "Sign In")
//line web/home.qtpl:75 //line web/home.qtpl:73
qw422016.N().S(`</button> </form> </div> `) qw422016.N().S(`</button> </form> </div> `)
//line web/home.qtpl:78 //line web/home.qtpl:76
} }
//line web/home.qtpl:78 //line web/home.qtpl:76
func (p *HomePage) WriteBody(qq422016 qtio422016.Writer) { func (p *HomePage) WriteBody(qq422016 qtio422016.Writer) {
//line web/home.qtpl:78 //line web/home.qtpl:76
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line web/home.qtpl:78 //line web/home.qtpl:76
p.StreamBody(qw422016) p.StreamBody(qw422016)
//line web/home.qtpl:78 //line web/home.qtpl:76
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line web/home.qtpl:78 //line web/home.qtpl:76
} }
//line web/home.qtpl:78 //line web/home.qtpl:76
func (p *HomePage) Body() string { func (p *HomePage) Body() string {
//line web/home.qtpl:78 //line web/home.qtpl:76
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line web/home.qtpl:78 //line web/home.qtpl:76
p.WriteBody(qb422016) p.WriteBody(qb422016)
//line web/home.qtpl:78 //line web/home.qtpl:76
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line web/home.qtpl:78 //line web/home.qtpl:76
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line web/home.qtpl:78 //line web/home.qtpl:76
return qs422016 return qs422016
//line web/home.qtpl:78 //line web/home.qtpl:76
} }