mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-09-11 15:44:55 +08:00
Update modules (#691)
* go get -u github.com/aws/aws-sdk-go * get -u github.com/tiramiseb/go-gandi * go get -u google.golang.org/api Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
This commit is contained in:
parent
e6390c67d7
commit
bbbb0c8c95
38 changed files with 1155 additions and 254 deletions
11
go.mod
11
go.mod
|
@ -11,7 +11,7 @@ require (
|
||||||
github.com/DisposaBoy/JsonConfigReader v0.0.0-20171218180944-5ea4d0ddac55
|
github.com/DisposaBoy/JsonConfigReader v0.0.0-20171218180944-5ea4d0ddac55
|
||||||
github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d
|
github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d
|
||||||
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
|
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
|
||||||
github.com/aws/aws-sdk-go v1.29.1
|
github.com/aws/aws-sdk-go v1.29.21
|
||||||
github.com/billputer/go-namecheap v0.0.0-20170915210158-0c7adb0710f8
|
github.com/billputer/go-namecheap v0.0.0-20170915210158-0c7adb0710f8
|
||||||
github.com/cenkalti/backoff v2.1.1+incompatible // indirect
|
github.com/cenkalti/backoff v2.1.1+incompatible // indirect
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
||||||
|
@ -30,6 +30,7 @@ require (
|
||||||
github.com/hashicorp/vault/api v1.0.4
|
github.com/hashicorp/vault/api v1.0.4
|
||||||
github.com/hexonet/go-sdk v2.2.3+incompatible
|
github.com/hexonet/go-sdk v2.2.3+incompatible
|
||||||
github.com/jarcoal/httpmock v1.0.4 // indirect
|
github.com/jarcoal/httpmock v1.0.4 // indirect
|
||||||
|
github.com/jmespath/go-jmespath v0.0.0-20200310193758-2437e8417af5 // indirect
|
||||||
github.com/kolo/xmlrpc v0.0.0-20150413191830-0826b98aaa29 // indirect
|
github.com/kolo/xmlrpc v0.0.0-20150413191830-0826b98aaa29 // indirect
|
||||||
github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 // indirect
|
github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 // indirect
|
||||||
github.com/miekg/dns v1.1.27
|
github.com/miekg/dns v1.1.27
|
||||||
|
@ -43,19 +44,19 @@ require (
|
||||||
github.com/sergi/go-diff v1.1.0 // indirect
|
github.com/sergi/go-diff v1.1.0 // indirect
|
||||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a // indirect
|
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a // indirect
|
||||||
github.com/softlayer/softlayer-go v0.0.0-20170804160555-5e1c8cccc730
|
github.com/softlayer/softlayer-go v0.0.0-20170804160555-5e1c8cccc730
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.5.1
|
||||||
github.com/tdewolff/minify v2.3.6+incompatible
|
github.com/tdewolff/minify v2.3.6+incompatible
|
||||||
github.com/tdewolff/parse v2.3.4+incompatible // indirect
|
github.com/tdewolff/parse v2.3.4+incompatible // indirect
|
||||||
github.com/tdewolff/test v1.0.6 // indirect
|
github.com/tdewolff/test v1.0.6 // indirect
|
||||||
github.com/tiramiseb/go-gandi v0.0.0-20200227122905-7601fc3acbaa
|
github.com/tiramiseb/go-gandi v0.0.0-20200309181223-e1cf2e430b3a
|
||||||
github.com/urfave/cli/v2 v2.1.1
|
github.com/urfave/cli/v2 v2.1.1
|
||||||
github.com/vultr/govultr v0.2.0
|
github.com/vultr/govultr v0.2.0
|
||||||
golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d // indirect
|
golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d // indirect
|
||||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b
|
||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||||
golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c // indirect
|
golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c // indirect
|
||||||
golang.org/x/tools v0.0.0-20200303202040-658b03bcd3d8 // indirect
|
golang.org/x/tools v0.0.0-20200309202150-20ab64c0d93f // indirect
|
||||||
google.golang.org/api v0.17.0
|
google.golang.org/api v0.20.0
|
||||||
google.golang.org/appengine v1.6.5 // indirect
|
google.golang.org/appengine v1.6.5 // indirect
|
||||||
gopkg.in/ini.v1 v1.42.0 // indirect
|
gopkg.in/ini.v1 v1.42.0 // indirect
|
||||||
gopkg.in/ns1/ns1-go.v2 v2.0.0-20170502175150-c563826f4cbe
|
gopkg.in/ns1/ns1-go.v2 v2.0.0-20170502175150-c563826f4cbe
|
||||||
|
|
20
go.sum
20
go.sum
|
@ -44,8 +44,8 @@ github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNg
|
||||||
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
|
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
|
||||||
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-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/aws/aws-sdk-go v1.29.1 h1:U2vZ5WprhGAMjzb4bKVzl2QecUtZFW2BXVqa5bnd+OY=
|
github.com/aws/aws-sdk-go v1.29.21 h1:Q9XdxpJImp2HF/AqtIlonnAtG3qU9TvhpZiy1AeuQY4=
|
||||||
github.com/aws/aws-sdk-go v1.29.1/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
|
github.com/aws/aws-sdk-go v1.29.21/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
|
||||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||||
github.com/billputer/go-namecheap v0.0.0-20170915210158-0c7adb0710f8 h1:sIv3xbwhhAG94a62Q/rrSBtrWcXiYgldNOeqifyKSgo=
|
github.com/billputer/go-namecheap v0.0.0-20170915210158-0c7adb0710f8 h1:sIv3xbwhhAG94a62Q/rrSBtrWcXiYgldNOeqifyKSgo=
|
||||||
github.com/billputer/go-namecheap v0.0.0-20170915210158-0c7adb0710f8/go.mod h1:bqqNsI2akL+lLWyApkYY0cxquWPKwEBU0Wd3chi3TEg=
|
github.com/billputer/go-namecheap v0.0.0-20170915210158-0c7adb0710f8/go.mod h1:bqqNsI2akL+lLWyApkYY0cxquWPKwEBU0Wd3chi3TEg=
|
||||||
|
@ -161,6 +161,8 @@ github.com/jarcoal/httpmock v1.0.4 h1:jp+dy/+nonJE4g4xbVtl9QdrUNbn6/3hDT5R4nDIZn
|
||||||
github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
|
github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
|
github.com/jmespath/go-jmespath v0.0.0-20200310193758-2437e8417af5 h1:uHQ3zN9bw90YSNUeGWrboinB/fjXSDA7dNSg7Dznw18=
|
||||||
|
github.com/jmespath/go-jmespath v0.0.0-20200310193758-2437e8417af5/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
|
||||||
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/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
|
@ -232,14 +234,16 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0
|
||||||
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 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
github.com/tdewolff/minify v2.3.6+incompatible h1:2hw5/9ZvxhWLvBUnHE06gElGYz+Jv9R4Eys0XUzItYo=
|
github.com/tdewolff/minify v2.3.6+incompatible h1:2hw5/9ZvxhWLvBUnHE06gElGYz+Jv9R4Eys0XUzItYo=
|
||||||
github.com/tdewolff/minify v2.3.6+incompatible/go.mod h1:9Ov578KJUmAWpS6NeZwRZyT56Uf6o3Mcz9CEsg8USYs=
|
github.com/tdewolff/minify v2.3.6+incompatible/go.mod h1:9Ov578KJUmAWpS6NeZwRZyT56Uf6o3Mcz9CEsg8USYs=
|
||||||
github.com/tdewolff/parse v2.3.4+incompatible h1:x05/cnGwIMf4ceLuDMBOdQ1qGniMoxpP46ghf0Qzh38=
|
github.com/tdewolff/parse v2.3.4+incompatible h1:x05/cnGwIMf4ceLuDMBOdQ1qGniMoxpP46ghf0Qzh38=
|
||||||
github.com/tdewolff/parse v2.3.4+incompatible/go.mod h1:8oBwCsVmUkgHO8M5iCzSIDtpzXOT0WXX9cWhz+bIzJQ=
|
github.com/tdewolff/parse v2.3.4+incompatible/go.mod h1:8oBwCsVmUkgHO8M5iCzSIDtpzXOT0WXX9cWhz+bIzJQ=
|
||||||
github.com/tdewolff/test v1.0.6 h1:76mzYJQ83Op284kMT+63iCNCI7NEERsIN8dLM+RiKr4=
|
github.com/tdewolff/test v1.0.6 h1:76mzYJQ83Op284kMT+63iCNCI7NEERsIN8dLM+RiKr4=
|
||||||
github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
|
github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
|
||||||
github.com/tiramiseb/go-gandi v0.0.0-20200227122905-7601fc3acbaa h1:V0cb7c74KYakwwROlFGVlqEz3V7AW2JnIpSP6zSMdPg=
|
github.com/tiramiseb/go-gandi v0.0.0-20200309181223-e1cf2e430b3a h1:OktNmi+7LyUfkvkezbCZnKeU/DMZ59FI0F7YrsPTWqc=
|
||||||
github.com/tiramiseb/go-gandi v0.0.0-20200227122905-7601fc3acbaa/go.mod h1:wevS0bE43PMSmEldbtya+tp+Ow180ftEPix8Onwh+E4=
|
github.com/tiramiseb/go-gandi v0.0.0-20200309181223-e1cf2e430b3a/go.mod h1:wevS0bE43PMSmEldbtya+tp+Ow180ftEPix8Onwh+E4=
|
||||||
github.com/urfave/cli/v2 v2.1.1 h1:Qt8FeAtxE/vfdrLmR3rxR6JRE0RoVmbXu8+6kZtYU4k=
|
github.com/urfave/cli/v2 v2.1.1 h1:Qt8FeAtxE/vfdrLmR3rxR6JRE0RoVmbXu8+6kZtYU4k=
|
||||||
github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
|
github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
|
||||||
github.com/vultr/govultr v0.2.0 h1:CZSNNCk+PHz9hzmfH2PFGkDgc3qNetwZqtcaqL8shlg=
|
github.com/vultr/govultr v0.2.0 h1:CZSNNCk+PHz9hzmfH2PFGkDgc3qNetwZqtcaqL8shlg=
|
||||||
|
@ -336,8 +340,8 @@ golang.org/x/tools v0.0.0-20190624190245-7f2218787638 h1:uIfBkD8gLczr4XDgYpt/qJY
|
||||||
golang.org/x/tools v0.0.0-20190624190245-7f2218787638/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190624190245-7f2218787638/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200303202040-658b03bcd3d8 h1:2oWBslXKHx1vReVc1bA4mflTOcSxgXz536kSRBhwDds=
|
golang.org/x/tools v0.0.0-20200309202150-20ab64c0d93f h1:NbrfHxef+IfdI86qCgO/1Siq1BuMH2xG0NqgvCguRhQ=
|
||||||
golang.org/x/tools v0.0.0-20200303202040-658b03bcd3d8/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
golang.org/x/tools v0.0.0-20200309202150-20ab64c0d93f/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
@ -346,8 +350,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
google.golang.org/api v0.7.0 h1:9sdfJOzWlkqPltHAuzT2Cp+yrBeY1KRVYgms8soxMwM=
|
google.golang.org/api v0.7.0 h1:9sdfJOzWlkqPltHAuzT2Cp+yrBeY1KRVYgms8soxMwM=
|
||||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||||
google.golang.org/api v0.17.0 h1:0q95w+VuFtv4PAx4PZVQdBMmYbaCHbnfKaEiDIcVyag=
|
google.golang.org/api v0.20.0 h1:jz2KixHX7EcCPiQrySzPdnYT7DbINAypCqKZ1Z7GM40=
|
||||||
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
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=
|
||||||
|
|
40
vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go
generated
vendored
40
vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go
generated
vendored
|
@ -2,42 +2,8 @@
|
||||||
|
|
||||||
package aws
|
package aws
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/internal/context"
|
||||||
// An emptyCtx is a copy of the Go 1.7 context.emptyCtx type. This is copied to
|
|
||||||
// provide a 1.6 and 1.5 safe version of context that is compatible with Go
|
|
||||||
// 1.7's Context.
|
|
||||||
//
|
|
||||||
// An emptyCtx is never canceled, has no values, and has no deadline. It is not
|
|
||||||
// struct{}, since vars of this type must have distinct addresses.
|
|
||||||
type emptyCtx int
|
|
||||||
|
|
||||||
func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*emptyCtx) Done() <-chan struct{} {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*emptyCtx) Err() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*emptyCtx) Value(key interface{}) interface{} {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *emptyCtx) String() string {
|
|
||||||
switch e {
|
|
||||||
case backgroundCtx:
|
|
||||||
return "aws.BackgroundContext"
|
|
||||||
}
|
|
||||||
return "unknown empty Context"
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
backgroundCtx = new(emptyCtx)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// BackgroundContext returns a context that will never be canceled, has no
|
// BackgroundContext returns a context that will never be canceled, has no
|
||||||
|
@ -52,5 +18,5 @@ var (
|
||||||
//
|
//
|
||||||
// See https://golang.org/pkg/context for more information on Contexts.
|
// See https://golang.org/pkg/context for more information on Contexts.
|
||||||
func BackgroundContext() Context {
|
func BackgroundContext() Context {
|
||||||
return backgroundCtx
|
return context.BackgroundCtx
|
||||||
}
|
}
|
||||||
|
|
22
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.5.go
generated
vendored
Normal file
22
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.5.go
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// +build !go1.7
|
||||||
|
|
||||||
|
package credentials
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/internal/context"
|
||||||
|
)
|
||||||
|
|
||||||
|
// backgroundContext returns a context that will never be canceled, has no
|
||||||
|
// values, and no deadline. This context is used by the SDK to provide
|
||||||
|
// backwards compatibility with non-context API operations and functionality.
|
||||||
|
//
|
||||||
|
// Go 1.6 and before:
|
||||||
|
// This context function is equivalent to context.Background in the Go stdlib.
|
||||||
|
//
|
||||||
|
// Go 1.7 and later:
|
||||||
|
// The context returned will be the value returned by context.Background()
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context for more information on Contexts.
|
||||||
|
func backgroundContext() Context {
|
||||||
|
return context.BackgroundCtx
|
||||||
|
}
|
20
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.7.go
generated
vendored
Normal file
20
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.7.go
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// +build go1.7
|
||||||
|
|
||||||
|
package credentials
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
// backgroundContext returns a context that will never be canceled, has no
|
||||||
|
// values, and no deadline. This context is used by the SDK to provide
|
||||||
|
// backwards compatibility with non-context API operations and functionality.
|
||||||
|
//
|
||||||
|
// Go 1.6 and before:
|
||||||
|
// This context function is equivalent to context.Background in the Go stdlib.
|
||||||
|
//
|
||||||
|
// Go 1.7 and later:
|
||||||
|
// The context returned will be the value returned by context.Background()
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context for more information on Contexts.
|
||||||
|
func backgroundContext() Context {
|
||||||
|
return context.Background()
|
||||||
|
}
|
39
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.5.go
generated
vendored
Normal file
39
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.5.go
generated
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
// +build !go1.9
|
||||||
|
|
||||||
|
package credentials
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// Context is an copy of the Go v1.7 stdlib's context.Context interface.
|
||||||
|
// It is represented as a SDK interface to enable you to use the "WithContext"
|
||||||
|
// API methods with Go v1.6 and a Context type such as golang.org/x/net/context.
|
||||||
|
//
|
||||||
|
// This type, aws.Context, and context.Context are equivalent.
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context on how to use contexts.
|
||||||
|
type Context interface {
|
||||||
|
// Deadline returns the time when work done on behalf of this context
|
||||||
|
// should be canceled. Deadline returns ok==false when no deadline is
|
||||||
|
// set. Successive calls to Deadline return the same results.
|
||||||
|
Deadline() (deadline time.Time, ok bool)
|
||||||
|
|
||||||
|
// Done returns a channel that's closed when work done on behalf of this
|
||||||
|
// context should be canceled. Done may return nil if this context can
|
||||||
|
// never be canceled. Successive calls to Done return the same value.
|
||||||
|
Done() <-chan struct{}
|
||||||
|
|
||||||
|
// Err returns a non-nil error value after Done is closed. Err returns
|
||||||
|
// Canceled if the context was canceled or DeadlineExceeded if the
|
||||||
|
// context's deadline passed. No other values for Err are defined.
|
||||||
|
// After Done is closed, successive calls to Err return the same value.
|
||||||
|
Err() error
|
||||||
|
|
||||||
|
// Value returns the value associated with this context for key, or nil
|
||||||
|
// if no value is associated with key. Successive calls to Value with
|
||||||
|
// the same key returns the same result.
|
||||||
|
//
|
||||||
|
// Use context values only for request-scoped data that transits
|
||||||
|
// processes and API boundaries, not for passing optional parameters to
|
||||||
|
// functions.
|
||||||
|
Value(key interface{}) interface{}
|
||||||
|
}
|
13
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.9.go
generated
vendored
Normal file
13
vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.9.go
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
// +build go1.9
|
||||||
|
|
||||||
|
package credentials
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
// Context is an alias of the Go stdlib's context.Context interface.
|
||||||
|
// It can be used within the SDK's API operation "WithContext" methods.
|
||||||
|
//
|
||||||
|
// This type, aws.Context, and context.Context are equivalent.
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context on how to use contexts.
|
||||||
|
type Context = context.Context
|
62
vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
generated
vendored
62
vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
generated
vendored
|
@ -213,6 +213,49 @@ func NewCredentials(provider Provider) *Credentials {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetWithContext returns the credentials value, or error if the credentials
|
||||||
|
// Value failed to be retrieved. Will return early if the passed in context is
|
||||||
|
// canceled.
|
||||||
|
//
|
||||||
|
// Will return the cached credentials Value if it has not expired. If the
|
||||||
|
// credentials Value has expired the Provider's Retrieve() will be called
|
||||||
|
// to refresh the credentials.
|
||||||
|
//
|
||||||
|
// If Credentials.Expire() was called the credentials Value will be force
|
||||||
|
// expired, and the next call to Get() will cause them to be refreshed.
|
||||||
|
//
|
||||||
|
// Passed in Context is equivalent to aws.Context, and context.Context.
|
||||||
|
func (c *Credentials) GetWithContext(ctx Context) (Value, error) {
|
||||||
|
if curCreds := c.creds.Load(); !c.isExpired(curCreds) {
|
||||||
|
return curCreds.(Value), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cannot pass context down to the actual retrieve, because the first
|
||||||
|
// context would cancel the whole group when there is not direct
|
||||||
|
// association of items in the group.
|
||||||
|
resCh := c.sf.DoChan("", c.singleRetrieve)
|
||||||
|
select {
|
||||||
|
case res := <-resCh:
|
||||||
|
return res.Val.(Value), res.Err
|
||||||
|
case <-ctx.Done():
|
||||||
|
return Value{}, awserr.New("RequestCanceled",
|
||||||
|
"request context canceled", ctx.Err())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Credentials) singleRetrieve() (interface{}, error) {
|
||||||
|
if curCreds := c.creds.Load(); !c.isExpired(curCreds) {
|
||||||
|
return curCreds.(Value), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
creds, err := c.provider.Retrieve()
|
||||||
|
if err == nil {
|
||||||
|
c.creds.Store(creds)
|
||||||
|
}
|
||||||
|
|
||||||
|
return creds, err
|
||||||
|
}
|
||||||
|
|
||||||
// Get returns the credentials value, or error if the credentials Value failed
|
// Get returns the credentials value, or error if the credentials Value failed
|
||||||
// to be retrieved.
|
// to be retrieved.
|
||||||
//
|
//
|
||||||
|
@ -223,24 +266,7 @@ func NewCredentials(provider Provider) *Credentials {
|
||||||
// If Credentials.Expire() was called the credentials Value will be force
|
// If Credentials.Expire() was called the credentials Value will be force
|
||||||
// expired, and the next call to Get() will cause them to be refreshed.
|
// expired, and the next call to Get() will cause them to be refreshed.
|
||||||
func (c *Credentials) Get() (Value, error) {
|
func (c *Credentials) Get() (Value, error) {
|
||||||
if creds := c.creds.Load(); !c.isExpired(creds) {
|
return c.GetWithContext(backgroundContext())
|
||||||
return creds.(Value), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err, _ := c.sf.Do("", func() (interface{}, error) {
|
|
||||||
if creds := c.creds.Load(); !c.isExpired(creds) {
|
|
||||||
return creds.(Value), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err := c.provider.Retrieve()
|
|
||||||
if err == nil {
|
|
||||||
c.creds.Store(creds)
|
|
||||||
}
|
|
||||||
|
|
||||||
return creds, err
|
|
||||||
})
|
|
||||||
|
|
||||||
return creds.(Value), err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Expire expires the credentials and forces them to be retrieved on the
|
// Expire expires the credentials and forces them to be retrieved on the
|
||||||
|
|
4
vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
generated
vendored
|
@ -19,7 +19,9 @@ type StaticProvider struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewStaticCredentials returns a pointer to a new Credentials object
|
// NewStaticCredentials returns a pointer to a new Credentials object
|
||||||
// wrapping a static credentials value provider.
|
// wrapping a static credentials value provider. Token is only required
|
||||||
|
// for temporary security credentials retrieved via STS, otherwise an empty
|
||||||
|
// string can be passed for this parameter.
|
||||||
func NewStaticCredentials(id, secret, token string) *Credentials {
|
func NewStaticCredentials(id, secret, token string) *Credentials {
|
||||||
return NewCredentials(&StaticProvider{Value: Value{
|
return NewCredentials(&StaticProvider{Value: Value{
|
||||||
AccessKeyID: id,
|
AccessKeyID: id,
|
||||||
|
|
40
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
40
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
|
@ -534,6 +534,7 @@ var awsPartition = partition{
|
||||||
"appmesh": service{
|
"appmesh": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -1052,6 +1053,7 @@ var awsPartition = partition{
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-north-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
@ -1115,6 +1117,9 @@ var awsPartition = partition{
|
||||||
Protocols: []string{"https"},
|
Protocols: []string{"https"},
|
||||||
},
|
},
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-1": endpoint{},
|
||||||
|
"ap-northeast-2": endpoint{},
|
||||||
|
"ap-south-1": endpoint{},
|
||||||
"ap-southeast-1": endpoint{},
|
"ap-southeast-1": endpoint{},
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
|
@ -2444,6 +2449,12 @@ var awsPartition = partition{
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"managedblockchain": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"marketplacecommerceanalytics": service{
|
"marketplacecommerceanalytics": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3681,6 +3692,7 @@ var awsPartition = partition{
|
||||||
"servicecatalog": service{
|
"servicecatalog": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -3692,6 +3704,7 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-1-fips": endpoint{
|
"us-east-1-fips": endpoint{
|
||||||
|
@ -4358,6 +4371,13 @@ var awscnPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Services: services{
|
Services: services{
|
||||||
|
"acm": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{},
|
||||||
|
"cn-northwest-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"api.ecr": service{
|
"api.ecr": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -4412,6 +4432,13 @@ var awscnPartition = partition{
|
||||||
"cn-northwest-1": endpoint{},
|
"cn-northwest-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"backup": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{},
|
||||||
|
"cn-northwest-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"batch": service{
|
"batch": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -5802,6 +5829,13 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"xray": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-east-1": endpoint{},
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6380,6 +6414,12 @@ var awsisobPartition = partition{
|
||||||
"us-isob-east-1": endpoint{},
|
"us-isob-east-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"ssm": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-isob-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"states": service{
|
"states": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
|
4
vendor/github.com/aws/aws-sdk-go/aws/request/request.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/request/request.go
generated
vendored
|
@ -639,6 +639,10 @@ func getHost(r *http.Request) string {
|
||||||
return r.Host
|
return r.Host
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if r.URL == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
return r.URL.Host
|
return r.URL.Host
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
13
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.5.go
generated
vendored
Normal file
13
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.5.go
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
// +build !go1.7
|
||||||
|
|
||||||
|
package v4
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
)
|
||||||
|
|
||||||
|
func requestContext(r *http.Request) aws.Context {
|
||||||
|
return aws.BackgroundContext()
|
||||||
|
}
|
13
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.7.go
generated
vendored
Normal file
13
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.7.go
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
// +build go1.7
|
||||||
|
|
||||||
|
package v4
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
)
|
||||||
|
|
||||||
|
func requestContext(r *http.Request) aws.Context {
|
||||||
|
return r.Context()
|
||||||
|
}
|
2
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
generated
vendored
|
@ -340,7 +340,7 @@ func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, regi
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
ctx.credValues, err = v4.Credentials.Get()
|
ctx.credValues, err = v4.Credentials.GetWithContext(requestContext(r))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return http.Header{}, err
|
return http.Header{}, err
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
|
@ -5,4 +5,4 @@ package aws
|
||||||
const SDKName = "aws-sdk-go"
|
const SDKName = "aws-sdk-go"
|
||||||
|
|
||||||
// SDKVersion is the version of this SDK
|
// SDKVersion is the version of this SDK
|
||||||
const SDKVersion = "1.29.1"
|
const SDKVersion = "1.29.21"
|
||||||
|
|
40
vendor/github.com/aws/aws-sdk-go/internal/context/background_go1.5.go
generated
vendored
Normal file
40
vendor/github.com/aws/aws-sdk-go/internal/context/background_go1.5.go
generated
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
// +build !go1.7
|
||||||
|
|
||||||
|
package context
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// An emptyCtx is a copy of the Go 1.7 context.emptyCtx type. This is copied to
|
||||||
|
// provide a 1.6 and 1.5 safe version of context that is compatible with Go
|
||||||
|
// 1.7's Context.
|
||||||
|
//
|
||||||
|
// An emptyCtx is never canceled, has no values, and has no deadline. It is not
|
||||||
|
// struct{}, since vars of this type must have distinct addresses.
|
||||||
|
type emptyCtx int
|
||||||
|
|
||||||
|
func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*emptyCtx) Done() <-chan struct{} {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*emptyCtx) Err() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*emptyCtx) Value(key interface{}) interface{} {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *emptyCtx) String() string {
|
||||||
|
switch e {
|
||||||
|
case BackgroundCtx:
|
||||||
|
return "aws.BackgroundContext"
|
||||||
|
}
|
||||||
|
return "unknown empty Context"
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackgroundCtx is the common base context.
|
||||||
|
var BackgroundCtx = new(emptyCtx)
|
15
vendor/github.com/jmespath/go-jmespath/.travis.yml
generated
vendored
15
vendor/github.com/jmespath/go-jmespath/.travis.yml
generated
vendored
|
@ -3,7 +3,20 @@ language: go
|
||||||
sudo: false
|
sudo: false
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.4
|
- 1.5.x
|
||||||
|
- 1.6.x
|
||||||
|
- 1.7.x
|
||||||
|
- 1.8.x
|
||||||
|
- 1.9.x
|
||||||
|
- 1.10.x
|
||||||
|
- 1.11.x
|
||||||
|
- 1.12.x
|
||||||
|
- 1.13.x
|
||||||
|
- 1.14.x
|
||||||
|
- tip
|
||||||
|
|
||||||
|
allow_failures:
|
||||||
|
- go: tip
|
||||||
|
|
||||||
install: go get -v -t ./...
|
install: go get -v -t ./...
|
||||||
script: make test
|
script: make test
|
||||||
|
|
82
vendor/github.com/jmespath/go-jmespath/README.md
generated
vendored
82
vendor/github.com/jmespath/go-jmespath/README.md
generated
vendored
|
@ -4,4 +4,84 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
See http://jmespath.org for more info.
|
go-jmespath is a GO implementation of JMESPath,
|
||||||
|
which is a query language for JSON. It will take a JSON
|
||||||
|
document and transform it into another JSON document
|
||||||
|
through a JMESPath expression.
|
||||||
|
|
||||||
|
Using go-jmespath is really easy. There's a single function
|
||||||
|
you use, `jmespath.search`:
|
||||||
|
|
||||||
|
|
||||||
|
```go
|
||||||
|
> import "github.com/jmespath/go-jmespath"
|
||||||
|
>
|
||||||
|
> var jsondata = []byte(`{"foo": {"bar": {"baz": [0, 1, 2, 3, 4]}}}`) // your data
|
||||||
|
> var data interface{}
|
||||||
|
> err := json.Unmarshal(jsondata, &data)
|
||||||
|
> result, err := jmespath.Search("foo.bar.baz[2]", data)
|
||||||
|
result = 2
|
||||||
|
```
|
||||||
|
|
||||||
|
In the example we gave the ``search`` function input data of
|
||||||
|
`{"foo": {"bar": {"baz": [0, 1, 2, 3, 4]}}}` as well as the JMESPath
|
||||||
|
expression `foo.bar.baz[2]`, and the `search` function evaluated
|
||||||
|
the expression against the input data to produce the result ``2``.
|
||||||
|
|
||||||
|
The JMESPath language can do a lot more than select an element
|
||||||
|
from a list. Here are a few more examples:
|
||||||
|
|
||||||
|
```go
|
||||||
|
> var jsondata = []byte(`{"foo": {"bar": {"baz": [0, 1, 2, 3, 4]}}}`) // your data
|
||||||
|
> var data interface{}
|
||||||
|
> err := json.Unmarshal(jsondata, &data)
|
||||||
|
> result, err := jmespath.search("foo.bar", data)
|
||||||
|
result = { "baz": [ 0, 1, 2, 3, 4 ] }
|
||||||
|
|
||||||
|
|
||||||
|
> var jsondata = []byte(`{"foo": [{"first": "a", "last": "b"},
|
||||||
|
{"first": "c", "last": "d"}]}`) // your data
|
||||||
|
> var data interface{}
|
||||||
|
> err := json.Unmarshal(jsondata, &data)
|
||||||
|
> result, err := jmespath.search({"foo[*].first", data)
|
||||||
|
result [ 'a', 'c' ]
|
||||||
|
|
||||||
|
|
||||||
|
> var jsondata = []byte(`{"foo": [{"age": 20}, {"age": 25},
|
||||||
|
{"age": 30}, {"age": 35},
|
||||||
|
{"age": 40}]}`) // your data
|
||||||
|
> var data interface{}
|
||||||
|
> err := json.Unmarshal(jsondata, &data)
|
||||||
|
> result, err := jmespath.search("foo[?age > `30`]")
|
||||||
|
result = [ { age: 35 }, { age: 40 } ]
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also pre-compile your query. This is usefull if
|
||||||
|
you are going to run multiple searches with it:
|
||||||
|
|
||||||
|
```go
|
||||||
|
> var jsondata = []byte(`{"foo": "bar"}`)
|
||||||
|
> var data interface{}
|
||||||
|
> err := json.Unmarshal(jsondata, &data)
|
||||||
|
> precompiled, err := Compile("foo")
|
||||||
|
> if err != nil{
|
||||||
|
> // ... handle the error
|
||||||
|
> }
|
||||||
|
> result, err := precompiled.Search(data)
|
||||||
|
result = "bar"
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Resources
|
||||||
|
|
||||||
|
The example above only show a small amount of what
|
||||||
|
a JMESPath expression can do. If you want to take a
|
||||||
|
tour of the language, the *best* place to go is the
|
||||||
|
[JMESPath Tutorial](http://jmespath.org/tutorial.html).
|
||||||
|
|
||||||
|
One of the best things about JMESPath is that it is
|
||||||
|
implemented in many different programming languages including
|
||||||
|
python, ruby, php, lua, etc. To see a complete list of libraries,
|
||||||
|
check out the [JMESPath libraries page](http://jmespath.org/libraries.html).
|
||||||
|
|
||||||
|
And finally, the full JMESPath specification can be found
|
||||||
|
on the [JMESPath site](http://jmespath.org/specification.html).
|
||||||
|
|
2
vendor/github.com/jmespath/go-jmespath/api.go
generated
vendored
2
vendor/github.com/jmespath/go-jmespath/api.go
generated
vendored
|
@ -2,7 +2,7 @@ package jmespath
|
||||||
|
|
||||||
import "strconv"
|
import "strconv"
|
||||||
|
|
||||||
// JMESPath is the epresentation of a compiled JMES path query. A JMESPath is
|
// JMESPath is the representation of a compiled JMES path query. A JMESPath is
|
||||||
// safe for concurrent use by multiple goroutines.
|
// safe for concurrent use by multiple goroutines.
|
||||||
type JMESPath struct {
|
type JMESPath struct {
|
||||||
ast ASTNode
|
ast ASTNode
|
||||||
|
|
5
vendor/github.com/jmespath/go-jmespath/go.mod
generated
vendored
Normal file
5
vendor/github.com/jmespath/go-jmespath/go.mod
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module github.com/jmespath/go-jmespath
|
||||||
|
|
||||||
|
go 1.14
|
||||||
|
|
||||||
|
require github.com/stretchr/testify v1.5.1
|
11
vendor/github.com/jmespath/go-jmespath/go.sum
generated
vendored
Normal file
11
vendor/github.com/jmespath/go-jmespath/go.sum
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
2
vendor/github.com/jmespath/go-jmespath/parser.go
generated
vendored
2
vendor/github.com/jmespath/go-jmespath/parser.go
generated
vendored
|
@ -137,7 +137,7 @@ func (p *Parser) Parse(expression string) (ASTNode, error) {
|
||||||
}
|
}
|
||||||
if p.current() != tEOF {
|
if p.current() != tEOF {
|
||||||
return ASTNode{}, p.syntaxError(fmt.Sprintf(
|
return ASTNode{}, p.syntaxError(fmt.Sprintf(
|
||||||
"Unexpected token at the end of the expresssion: %s", p.current()))
|
"Unexpected token at the end of the expression: %s", p.current()))
|
||||||
}
|
}
|
||||||
return parsed, nil
|
return parsed, nil
|
||||||
}
|
}
|
||||||
|
|
78
vendor/github.com/stretchr/testify/assert/assertion_format.go
generated
vendored
78
vendor/github.com/stretchr/testify/assert/assertion_format.go
generated
vendored
|
@ -32,7 +32,8 @@ func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args
|
||||||
return Contains(t, s, contains, append([]interface{}{msg}, args...)...)
|
return Contains(t, s, contains, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
|
// DirExistsf checks whether a directory exists in the given path. It also fails
|
||||||
|
// if the path is a file rather a directory or there is an error checking whether it exists.
|
||||||
func DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
|
func DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -160,7 +161,8 @@ func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {
|
||||||
return False(t, value, append([]interface{}{msg}, args...)...)
|
return False(t, value, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
|
// FileExistsf checks whether a file exists in the given path. It also fails if
|
||||||
|
// the path points to a directory or there is an error when trying to check the file.
|
||||||
func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
|
func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -267,7 +269,7 @@ func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, ms
|
||||||
|
|
||||||
// InDeltaf asserts that the two numerals are within delta of each other.
|
// InDeltaf asserts that the two numerals are within delta of each other.
|
||||||
//
|
//
|
||||||
// assert.InDeltaf(t, math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01)
|
// assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted")
|
||||||
func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
|
func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -325,14 +327,6 @@ func JSONEqf(t TestingT, expected string, actual string, msg string, args ...int
|
||||||
return JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...)
|
return JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// YAMLEqf asserts that two YAML strings are equivalent.
|
|
||||||
func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {
|
|
||||||
if h, ok := t.(tHelper); ok {
|
|
||||||
h.Helper()
|
|
||||||
}
|
|
||||||
return YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lenf asserts that the specified object has specific length.
|
// Lenf asserts that the specified object has specific length.
|
||||||
// Lenf also fails if the object has a type that len() not accept.
|
// Lenf also fails if the object has a type that len() not accept.
|
||||||
//
|
//
|
||||||
|
@ -369,6 +363,17 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args .
|
||||||
return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)
|
return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Neverf asserts that the given condition doesn't satisfy in waitFor time,
|
||||||
|
// periodically checking the target function each tick.
|
||||||
|
//
|
||||||
|
// assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
|
||||||
|
func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return Never(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// Nilf asserts that the specified object is nil.
|
// Nilf asserts that the specified object is nil.
|
||||||
//
|
//
|
||||||
// assert.Nilf(t, err, "error message %s", "formatted")
|
// assert.Nilf(t, err, "error message %s", "formatted")
|
||||||
|
@ -379,6 +384,15 @@ func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool
|
||||||
return Nil(t, object, append([]interface{}{msg}, args...)...)
|
return Nil(t, object, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NoDirExistsf checks whether a directory does not exist in the given path.
|
||||||
|
// It fails if the path points to an existing _directory_ only.
|
||||||
|
func NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NoDirExists(t, path, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// NoErrorf asserts that a function returned no error (i.e. `nil`).
|
// NoErrorf asserts that a function returned no error (i.e. `nil`).
|
||||||
//
|
//
|
||||||
// actualObj, err := SomeFunction()
|
// actualObj, err := SomeFunction()
|
||||||
|
@ -392,6 +406,15 @@ func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool {
|
||||||
return NoError(t, err, append([]interface{}{msg}, args...)...)
|
return NoError(t, err, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NoFileExistsf checks whether a file does not exist in a given path. It fails
|
||||||
|
// if the path points to an existing _file_ only.
|
||||||
|
func NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NoFileExists(t, path, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the
|
// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the
|
||||||
// specified substring or element.
|
// specified substring or element.
|
||||||
//
|
//
|
||||||
|
@ -462,6 +485,19 @@ func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ..
|
||||||
return NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...)
|
return NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NotSamef asserts that two pointers do not reference the same object.
|
||||||
|
//
|
||||||
|
// assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted")
|
||||||
|
//
|
||||||
|
// Both arguments must be pointer variables. Pointer variable sameness is
|
||||||
|
// determined based on the equality of both type and value.
|
||||||
|
func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NotSame(t, expected, actual, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// NotSubsetf asserts that the specified list(array, slice...) contains not all
|
// NotSubsetf asserts that the specified list(array, slice...) contains not all
|
||||||
// elements given in the specified subset(array, slice...).
|
// elements given in the specified subset(array, slice...).
|
||||||
//
|
//
|
||||||
|
@ -491,6 +527,18 @@ func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool
|
||||||
return Panics(t, f, append([]interface{}{msg}, args...)...)
|
return Panics(t, f, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc
|
||||||
|
// panics, and that the recovered panic value is an error that satisfies the
|
||||||
|
// EqualError comparison.
|
||||||
|
//
|
||||||
|
// assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")
|
||||||
|
func PanicsWithErrorf(t TestingT, errString string, f PanicTestFunc, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return PanicsWithError(t, errString, f, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that
|
// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that
|
||||||
// the recovered panic value equals the expected panic value.
|
// the recovered panic value equals the expected panic value.
|
||||||
//
|
//
|
||||||
|
@ -557,6 +605,14 @@ func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta tim
|
||||||
return WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...)
|
return WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// YAMLEqf asserts that two YAML strings are equivalent.
|
||||||
|
func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// Zerof asserts that i is the zero value for its type.
|
// Zerof asserts that i is the zero value for its type.
|
||||||
func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {
|
func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
|
|
156
vendor/github.com/stretchr/testify/assert/assertion_forward.go
generated
vendored
156
vendor/github.com/stretchr/testify/assert/assertion_forward.go
generated
vendored
|
@ -53,7 +53,8 @@ func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string,
|
||||||
return Containsf(a.t, s, contains, msg, args...)
|
return Containsf(a.t, s, contains, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
|
// DirExists checks whether a directory exists in the given path. It also fails
|
||||||
|
// if the path is a file rather a directory or there is an error checking whether it exists.
|
||||||
func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {
|
func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -61,7 +62,8 @@ func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {
|
||||||
return DirExists(a.t, path, msgAndArgs...)
|
return DirExists(a.t, path, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
|
// DirExistsf checks whether a directory exists in the given path. It also fails
|
||||||
|
// if the path is a file rather a directory or there is an error checking whether it exists.
|
||||||
func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool {
|
func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -309,7 +311,8 @@ func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool {
|
||||||
return Falsef(a.t, value, msg, args...)
|
return Falsef(a.t, value, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
|
// FileExists checks whether a file exists in the given path. It also fails if
|
||||||
|
// the path points to a directory or there is an error when trying to check the file.
|
||||||
func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {
|
func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -317,7 +320,8 @@ func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {
|
||||||
return FileExists(a.t, path, msgAndArgs...)
|
return FileExists(a.t, path, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
|
// FileExistsf checks whether a file exists in the given path. It also fails if
|
||||||
|
// the path points to a directory or there is an error when trying to check the file.
|
||||||
func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool {
|
func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -521,7 +525,7 @@ func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}
|
||||||
|
|
||||||
// InDelta asserts that the two numerals are within delta of each other.
|
// InDelta asserts that the two numerals are within delta of each other.
|
||||||
//
|
//
|
||||||
// a.InDelta(math.Pi, (22 / 7.0), 0.01)
|
// a.InDelta(math.Pi, 22/7.0, 0.01)
|
||||||
func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
|
func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -563,7 +567,7 @@ func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, del
|
||||||
|
|
||||||
// InDeltaf asserts that the two numerals are within delta of each other.
|
// InDeltaf asserts that the two numerals are within delta of each other.
|
||||||
//
|
//
|
||||||
// a.InDeltaf(math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01)
|
// a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted")
|
||||||
func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
|
func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -639,22 +643,6 @@ func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ..
|
||||||
return JSONEqf(a.t, expected, actual, msg, args...)
|
return JSONEqf(a.t, expected, actual, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// YAMLEq asserts that two YAML strings are equivalent.
|
|
||||||
func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool {
|
|
||||||
if h, ok := a.t.(tHelper); ok {
|
|
||||||
h.Helper()
|
|
||||||
}
|
|
||||||
return YAMLEq(a.t, expected, actual, msgAndArgs...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// YAMLEqf asserts that two YAML strings are equivalent.
|
|
||||||
func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool {
|
|
||||||
if h, ok := a.t.(tHelper); ok {
|
|
||||||
h.Helper()
|
|
||||||
}
|
|
||||||
return YAMLEqf(a.t, expected, actual, msg, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Len asserts that the specified object has specific length.
|
// Len asserts that the specified object has specific length.
|
||||||
// Len also fails if the object has a type that len() not accept.
|
// Len also fails if the object has a type that len() not accept.
|
||||||
//
|
//
|
||||||
|
@ -727,6 +715,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i
|
||||||
return Lessf(a.t, e1, e2, msg, args...)
|
return Lessf(a.t, e1, e2, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Never asserts that the given condition doesn't satisfy in waitFor time,
|
||||||
|
// periodically checking the target function each tick.
|
||||||
|
//
|
||||||
|
// a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)
|
||||||
|
func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return Never(a.t, condition, waitFor, tick, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Neverf asserts that the given condition doesn't satisfy in waitFor time,
|
||||||
|
// periodically checking the target function each tick.
|
||||||
|
//
|
||||||
|
// a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
|
||||||
|
func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return Neverf(a.t, condition, waitFor, tick, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// Nil asserts that the specified object is nil.
|
// Nil asserts that the specified object is nil.
|
||||||
//
|
//
|
||||||
// a.Nil(err)
|
// a.Nil(err)
|
||||||
|
@ -747,6 +757,24 @@ func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) b
|
||||||
return Nilf(a.t, object, msg, args...)
|
return Nilf(a.t, object, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NoDirExists checks whether a directory does not exist in the given path.
|
||||||
|
// It fails if the path points to an existing _directory_ only.
|
||||||
|
func (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NoDirExists(a.t, path, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NoDirExistsf checks whether a directory does not exist in the given path.
|
||||||
|
// It fails if the path points to an existing _directory_ only.
|
||||||
|
func (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NoDirExistsf(a.t, path, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// NoError asserts that a function returned no error (i.e. `nil`).
|
// NoError asserts that a function returned no error (i.e. `nil`).
|
||||||
//
|
//
|
||||||
// actualObj, err := SomeFunction()
|
// actualObj, err := SomeFunction()
|
||||||
|
@ -773,6 +801,24 @@ func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool {
|
||||||
return NoErrorf(a.t, err, msg, args...)
|
return NoErrorf(a.t, err, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NoFileExists checks whether a file does not exist in a given path. It fails
|
||||||
|
// if the path points to an existing _file_ only.
|
||||||
|
func (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NoFileExists(a.t, path, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NoFileExistsf checks whether a file does not exist in a given path. It fails
|
||||||
|
// if the path points to an existing _file_ only.
|
||||||
|
func (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NoFileExistsf(a.t, path, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
|
// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
|
||||||
// specified substring or element.
|
// specified substring or element.
|
||||||
//
|
//
|
||||||
|
@ -913,6 +959,32 @@ func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, arg
|
||||||
return NotRegexpf(a.t, rx, str, msg, args...)
|
return NotRegexpf(a.t, rx, str, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NotSame asserts that two pointers do not reference the same object.
|
||||||
|
//
|
||||||
|
// a.NotSame(ptr1, ptr2)
|
||||||
|
//
|
||||||
|
// Both arguments must be pointer variables. Pointer variable sameness is
|
||||||
|
// determined based on the equality of both type and value.
|
||||||
|
func (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NotSame(a.t, expected, actual, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotSamef asserts that two pointers do not reference the same object.
|
||||||
|
//
|
||||||
|
// a.NotSamef(ptr1, ptr2, "error message %s", "formatted")
|
||||||
|
//
|
||||||
|
// Both arguments must be pointer variables. Pointer variable sameness is
|
||||||
|
// determined based on the equality of both type and value.
|
||||||
|
func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return NotSamef(a.t, expected, actual, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// NotSubset asserts that the specified list(array, slice...) contains not all
|
// NotSubset asserts that the specified list(array, slice...) contains not all
|
||||||
// elements given in the specified subset(array, slice...).
|
// elements given in the specified subset(array, slice...).
|
||||||
//
|
//
|
||||||
|
@ -961,6 +1033,30 @@ func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {
|
||||||
return Panics(a.t, f, msgAndArgs...)
|
return Panics(a.t, f, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PanicsWithError asserts that the code inside the specified PanicTestFunc
|
||||||
|
// panics, and that the recovered panic value is an error that satisfies the
|
||||||
|
// EqualError comparison.
|
||||||
|
//
|
||||||
|
// a.PanicsWithError("crazy error", func(){ GoCrazy() })
|
||||||
|
func (a *Assertions) PanicsWithError(errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return PanicsWithError(a.t, errString, f, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc
|
||||||
|
// panics, and that the recovered panic value is an error that satisfies the
|
||||||
|
// EqualError comparison.
|
||||||
|
//
|
||||||
|
// a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")
|
||||||
|
func (a *Assertions) PanicsWithErrorf(errString string, f PanicTestFunc, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return PanicsWithErrorf(a.t, errString, f, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
|
// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
|
||||||
// the recovered panic value equals the expected panic value.
|
// the recovered panic value equals the expected panic value.
|
||||||
//
|
//
|
||||||
|
@ -1103,6 +1199,22 @@ func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta
|
||||||
return WithinDurationf(a.t, expected, actual, delta, msg, args...)
|
return WithinDurationf(a.t, expected, actual, delta, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// YAMLEq asserts that two YAML strings are equivalent.
|
||||||
|
func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return YAMLEq(a.t, expected, actual, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// YAMLEqf asserts that two YAML strings are equivalent.
|
||||||
|
func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return YAMLEqf(a.t, expected, actual, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// Zero asserts that i is the zero value for its type.
|
// Zero asserts that i is the zero value for its type.
|
||||||
func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {
|
func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := a.t.(tHelper); ok {
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
|
218
vendor/github.com/stretchr/testify/assert/assertions.go
generated
vendored
218
vendor/github.com/stretchr/testify/assert/assertions.go
generated
vendored
|
@ -11,6 +11,7 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"runtime/debug"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
@ -21,7 +22,7 @@ import (
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_format.go.tmpl
|
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
|
||||||
|
|
||||||
// TestingT is an interface wrapper around *testing.T
|
// TestingT is an interface wrapper around *testing.T
|
||||||
type TestingT interface {
|
type TestingT interface {
|
||||||
|
@ -351,6 +352,19 @@ func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validateEqualArgs checks whether provided arguments can be safely used in the
|
||||||
|
// Equal/NotEqual functions.
|
||||||
|
func validateEqualArgs(expected, actual interface{}) error {
|
||||||
|
if expected == nil && actual == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if isFunction(expected) || isFunction(actual) {
|
||||||
|
return errors.New("cannot take func type as argument")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Same asserts that two pointers reference the same object.
|
// Same asserts that two pointers reference the same object.
|
||||||
//
|
//
|
||||||
// assert.Same(t, ptr1, ptr2)
|
// assert.Same(t, ptr1, ptr2)
|
||||||
|
@ -362,18 +376,7 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b
|
||||||
h.Helper()
|
h.Helper()
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedPtr, actualPtr := reflect.ValueOf(expected), reflect.ValueOf(actual)
|
if !samePointers(expected, actual) {
|
||||||
if expectedPtr.Kind() != reflect.Ptr || actualPtr.Kind() != reflect.Ptr {
|
|
||||||
return Fail(t, "Invalid operation: both arguments must be pointers", msgAndArgs...)
|
|
||||||
}
|
|
||||||
|
|
||||||
expectedType, actualType := reflect.TypeOf(expected), reflect.TypeOf(actual)
|
|
||||||
if expectedType != actualType {
|
|
||||||
return Fail(t, fmt.Sprintf("Pointer expected to be of type %v, but was %v",
|
|
||||||
expectedType, actualType), msgAndArgs...)
|
|
||||||
}
|
|
||||||
|
|
||||||
if expected != actual {
|
|
||||||
return Fail(t, fmt.Sprintf("Not same: \n"+
|
return Fail(t, fmt.Sprintf("Not same: \n"+
|
||||||
"expected: %p %#v\n"+
|
"expected: %p %#v\n"+
|
||||||
"actual : %p %#v", expected, expected, actual, actual), msgAndArgs...)
|
"actual : %p %#v", expected, expected, actual, actual), msgAndArgs...)
|
||||||
|
@ -382,6 +385,42 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NotSame asserts that two pointers do not reference the same object.
|
||||||
|
//
|
||||||
|
// assert.NotSame(t, ptr1, ptr2)
|
||||||
|
//
|
||||||
|
// Both arguments must be pointer variables. Pointer variable sameness is
|
||||||
|
// determined based on the equality of both type and value.
|
||||||
|
func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
|
||||||
|
if samePointers(expected, actual) {
|
||||||
|
return Fail(t, fmt.Sprintf(
|
||||||
|
"Expected and actual point to the same object: %p %#v",
|
||||||
|
expected, expected), msgAndArgs...)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// samePointers compares two generic interface objects and returns whether
|
||||||
|
// they point to the same object
|
||||||
|
func samePointers(first, second interface{}) bool {
|
||||||
|
firstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second)
|
||||||
|
if firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
firstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second)
|
||||||
|
if firstType != secondType {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare pointer addresses
|
||||||
|
return first == second
|
||||||
|
}
|
||||||
|
|
||||||
// formatUnequalValues takes two values of arbitrary types and returns string
|
// formatUnequalValues takes two values of arbitrary types and returns string
|
||||||
// representations appropriate to be presented to the user.
|
// representations appropriate to be presented to the user.
|
||||||
//
|
//
|
||||||
|
@ -393,9 +432,11 @@ func formatUnequalValues(expected, actual interface{}) (e string, a string) {
|
||||||
return fmt.Sprintf("%T(%#v)", expected, expected),
|
return fmt.Sprintf("%T(%#v)", expected, expected),
|
||||||
fmt.Sprintf("%T(%#v)", actual, actual)
|
fmt.Sprintf("%T(%#v)", actual, actual)
|
||||||
}
|
}
|
||||||
|
switch expected.(type) {
|
||||||
return fmt.Sprintf("%#v", expected),
|
case time.Duration:
|
||||||
fmt.Sprintf("%#v", actual)
|
return fmt.Sprintf("%v", expected), fmt.Sprintf("%v", actual)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%#v", expected), fmt.Sprintf("%#v", actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EqualValues asserts that two objects are equal or convertable to the same types
|
// EqualValues asserts that two objects are equal or convertable to the same types
|
||||||
|
@ -901,15 +942,17 @@ func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool {
|
||||||
type PanicTestFunc func()
|
type PanicTestFunc func()
|
||||||
|
|
||||||
// didPanic returns true if the function passed to it panics. Otherwise, it returns false.
|
// didPanic returns true if the function passed to it panics. Otherwise, it returns false.
|
||||||
func didPanic(f PanicTestFunc) (bool, interface{}) {
|
func didPanic(f PanicTestFunc) (bool, interface{}, string) {
|
||||||
|
|
||||||
didPanic := false
|
didPanic := false
|
||||||
var message interface{}
|
var message interface{}
|
||||||
|
var stack string
|
||||||
func() {
|
func() {
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if message = recover(); message != nil {
|
if message = recover(); message != nil {
|
||||||
didPanic = true
|
didPanic = true
|
||||||
|
stack = string(debug.Stack())
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -918,7 +961,7 @@ func didPanic(f PanicTestFunc) (bool, interface{}) {
|
||||||
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return didPanic, message
|
return didPanic, message, stack
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -930,7 +973,7 @@ func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
}
|
}
|
||||||
|
|
||||||
if funcDidPanic, panicValue := didPanic(f); !funcDidPanic {
|
if funcDidPanic, panicValue, _ := didPanic(f); !funcDidPanic {
|
||||||
return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -946,12 +989,34 @@ func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndAr
|
||||||
h.Helper()
|
h.Helper()
|
||||||
}
|
}
|
||||||
|
|
||||||
funcDidPanic, panicValue := didPanic(f)
|
funcDidPanic, panicValue, panickedStack := didPanic(f)
|
||||||
if !funcDidPanic {
|
if !funcDidPanic {
|
||||||
return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
|
||||||
}
|
}
|
||||||
if panicValue != expected {
|
if panicValue != expected {
|
||||||
return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v", f, expected, panicValue), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v\n\tPanic stack:\t%s", f, expected, panicValue, panickedStack), msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// PanicsWithError asserts that the code inside the specified PanicTestFunc
|
||||||
|
// panics, and that the recovered panic value is an error that satisfies the
|
||||||
|
// EqualError comparison.
|
||||||
|
//
|
||||||
|
// assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() })
|
||||||
|
func PanicsWithError(t TestingT, errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
|
||||||
|
funcDidPanic, panicValue, panickedStack := didPanic(f)
|
||||||
|
if !funcDidPanic {
|
||||||
|
return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
|
||||||
|
}
|
||||||
|
panicErr, ok := panicValue.(error)
|
||||||
|
if !ok || panicErr.Error() != errString {
|
||||||
|
return Fail(t, fmt.Sprintf("func %#v should panic with error message:\t%#v\n\tPanic value:\t%#v\n\tPanic stack:\t%s", f, errString, panicValue, panickedStack), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
@ -965,8 +1030,8 @@ func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
}
|
}
|
||||||
|
|
||||||
if funcDidPanic, panicValue := didPanic(f); funcDidPanic {
|
if funcDidPanic, panicValue, panickedStack := didPanic(f); funcDidPanic {
|
||||||
return Fail(t, fmt.Sprintf("func %#v should not panic\n\tPanic value:\t%v", f, panicValue), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("func %#v should not panic\n\tPanic value:\t%v\n\tPanic stack:\t%s", f, panicValue, panickedStack), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
@ -1026,7 +1091,7 @@ func toFloat(x interface{}) (float64, bool) {
|
||||||
|
|
||||||
// InDelta asserts that the two numerals are within delta of each other.
|
// InDelta asserts that the two numerals are within delta of each other.
|
||||||
//
|
//
|
||||||
// assert.InDelta(t, math.Pi, (22 / 7.0), 0.01)
|
// assert.InDelta(t, math.Pi, 22/7.0, 0.01)
|
||||||
func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
|
func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -1314,7 +1379,8 @@ func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
|
// FileExists checks whether a file exists in the given path. It also fails if
|
||||||
|
// the path points to a directory or there is an error when trying to check the file.
|
||||||
func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -1332,7 +1398,24 @@ func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
|
// NoFileExists checks whether a file does not exist in a given path. It fails
|
||||||
|
// if the path points to an existing _file_ only.
|
||||||
|
func NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
info, err := os.Lstat(path)
|
||||||
|
if err != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if info.IsDir() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return Fail(t, fmt.Sprintf("file %q exists", path), msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DirExists checks whether a directory exists in the given path. It also fails
|
||||||
|
// if the path is a file rather a directory or there is an error checking whether it exists.
|
||||||
func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
||||||
if h, ok := t.(tHelper); ok {
|
if h, ok := t.(tHelper); ok {
|
||||||
h.Helper()
|
h.Helper()
|
||||||
|
@ -1350,6 +1433,25 @@ func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NoDirExists checks whether a directory does not exist in the given path.
|
||||||
|
// It fails if the path points to an existing _directory_ only.
|
||||||
|
func NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
info, err := os.Lstat(path)
|
||||||
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if !info.IsDir() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return Fail(t, fmt.Sprintf("directory %q exists", path), msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
// JSONEq asserts that two JSON strings are equivalent.
|
// JSONEq asserts that two JSON strings are equivalent.
|
||||||
//
|
//
|
||||||
// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)
|
// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)
|
||||||
|
@ -1439,15 +1541,6 @@ func diff(expected interface{}, actual interface{}) string {
|
||||||
return "\n\nDiff:\n" + diff
|
return "\n\nDiff:\n" + diff
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateEqualArgs checks whether provided arguments can be safely used in the
|
|
||||||
// Equal/NotEqual functions.
|
|
||||||
func validateEqualArgs(expected, actual interface{}) error {
|
|
||||||
if isFunction(expected) || isFunction(actual) {
|
|
||||||
return errors.New("cannot take func type as argument")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func isFunction(arg interface{}) bool {
|
func isFunction(arg interface{}) bool {
|
||||||
if arg == nil {
|
if arg == nil {
|
||||||
return false
|
return false
|
||||||
|
@ -1475,24 +1568,59 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t
|
||||||
h.Helper()
|
h.Helper()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ch := make(chan bool, 1)
|
||||||
|
|
||||||
timer := time.NewTimer(waitFor)
|
timer := time.NewTimer(waitFor)
|
||||||
ticker := time.NewTicker(tick)
|
|
||||||
checkPassed := make(chan bool)
|
|
||||||
defer timer.Stop()
|
defer timer.Stop()
|
||||||
|
|
||||||
|
ticker := time.NewTicker(tick)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
defer close(checkPassed)
|
|
||||||
for {
|
for tick := ticker.C; ; {
|
||||||
select {
|
select {
|
||||||
case <-timer.C:
|
case <-timer.C:
|
||||||
return Fail(t, "Condition never satisfied", msgAndArgs...)
|
return Fail(t, "Condition never satisfied", msgAndArgs...)
|
||||||
case result := <-checkPassed:
|
case <-tick:
|
||||||
if result {
|
tick = nil
|
||||||
|
go func() { ch <- condition() }()
|
||||||
|
case v := <-ch:
|
||||||
|
if v {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case <-ticker.C:
|
tick = ticker.C
|
||||||
go func() {
|
}
|
||||||
checkPassed <- condition()
|
}
|
||||||
}()
|
}
|
||||||
|
|
||||||
|
// Never asserts that the given condition doesn't satisfy in waitFor time,
|
||||||
|
// periodically checking the target function each tick.
|
||||||
|
//
|
||||||
|
// assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)
|
||||||
|
func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
|
||||||
|
ch := make(chan bool, 1)
|
||||||
|
|
||||||
|
timer := time.NewTimer(waitFor)
|
||||||
|
defer timer.Stop()
|
||||||
|
|
||||||
|
ticker := time.NewTicker(tick)
|
||||||
|
defer ticker.Stop()
|
||||||
|
|
||||||
|
for tick := ticker.C; ; {
|
||||||
|
select {
|
||||||
|
case <-timer.C:
|
||||||
|
return true
|
||||||
|
case <-tick:
|
||||||
|
tick = nil
|
||||||
|
go func() { ch <- condition() }()
|
||||||
|
case v := <-ch:
|
||||||
|
if v {
|
||||||
|
return Fail(t, "Condition satisfied", msgAndArgs...)
|
||||||
|
}
|
||||||
|
tick = ticker.C
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/stretchr/testify/assert/forward_assertions.go
generated
vendored
2
vendor/github.com/stretchr/testify/assert/forward_assertions.go
generated
vendored
|
@ -13,4 +13,4 @@ func New(t TestingT) *Assertions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs
|
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs"
|
||||||
|
|
2
vendor/github.com/tiramiseb/go-gandi/domain/domain.go
generated
vendored
2
vendor/github.com/tiramiseb/go-gandi/domain/domain.go
generated
vendored
|
@ -173,7 +173,7 @@ func (g *Domain) GetDomain(domain string) (domainResponse Details, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDomain creates a single Domain
|
// CreateDomain creates a single Domain
|
||||||
func (g *Domain) CreateDomain(domain string, req CreateRequest) (err error) {
|
func (g *Domain) CreateDomain(req CreateRequest) (err error) {
|
||||||
_, err = g.client.Post("domains", req, nil)
|
_, err = g.client.Post("domains", req, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/tiramiseb/go-gandi/livedns/keys.go
generated
vendored
2
vendor/github.com/tiramiseb/go-gandi/livedns/keys.go
generated
vendored
|
@ -5,7 +5,7 @@ import "github.com/tiramiseb/go-gandi/internal/client"
|
||||||
// SigningKey holds data about a DNSSEC signing key
|
// SigningKey holds data about a DNSSEC signing key
|
||||||
type SigningKey struct {
|
type SigningKey struct {
|
||||||
Status string `json:"status,omitempty"`
|
Status string `json:"status,omitempty"`
|
||||||
UUID string `json:"uuid,omitempty"`
|
UUID string `json:"id,omitempty"`
|
||||||
Algorithm int `json:"algorithm,omitempty"`
|
Algorithm int `json:"algorithm,omitempty"`
|
||||||
Deleted *bool `json:"deleted"`
|
Deleted *bool `json:"deleted"`
|
||||||
AlgorithmName string `json:"algorithm_name,omitempty"`
|
AlgorithmName string `json:"algorithm_name,omitempty"`
|
||||||
|
|
7
vendor/golang.org/x/tools/internal/imports/imports.go
generated
vendored
7
vendor/golang.org/x/tools/internal/imports/imports.go
generated
vendored
|
@ -21,7 +21,6 @@ import (
|
||||||
"go/token"
|
"go/token"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -155,12 +154,6 @@ func initialize(filename string, src []byte, opt *Options) ([]byte, *Options, er
|
||||||
GOSUMDB: os.Getenv("GOSUMDB"),
|
GOSUMDB: os.Getenv("GOSUMDB"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the logger if the user has not provided it.
|
|
||||||
if opt.Env.Logf == nil {
|
|
||||||
opt.Env.Logf = log.Printf
|
|
||||||
}
|
|
||||||
|
|
||||||
if src == nil {
|
if src == nil {
|
||||||
b, err := ioutil.ReadFile(filename)
|
b, err := ioutil.ReadFile(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
45
vendor/google.golang.org/api/dns/v1/dns-gen.go
generated
vendored
45
vendor/google.golang.org/api/dns/v1/dns-gen.go
generated
vendored
|
@ -56,6 +56,7 @@ import (
|
||||||
googleapi "google.golang.org/api/googleapi"
|
googleapi "google.golang.org/api/googleapi"
|
||||||
gensupport "google.golang.org/api/internal/gensupport"
|
gensupport "google.golang.org/api/internal/gensupport"
|
||||||
option "google.golang.org/api/option"
|
option "google.golang.org/api/option"
|
||||||
|
internaloption "google.golang.org/api/option/internaloption"
|
||||||
htransport "google.golang.org/api/transport/http"
|
htransport "google.golang.org/api/transport/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -72,6 +73,7 @@ var _ = googleapi.Version
|
||||||
var _ = errors.New
|
var _ = errors.New
|
||||||
var _ = strings.Replace
|
var _ = strings.Replace
|
||||||
var _ = context.Canceled
|
var _ = context.Canceled
|
||||||
|
var _ = internaloption.WithDefaultEndpoint
|
||||||
|
|
||||||
const apiId = "dns:v1"
|
const apiId = "dns:v1"
|
||||||
const apiName = "dns"
|
const apiName = "dns"
|
||||||
|
@ -103,6 +105,7 @@ func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, err
|
||||||
)
|
)
|
||||||
// NOTE: prepend, so we don't override user-specified scopes.
|
// NOTE: prepend, so we don't override user-specified scopes.
|
||||||
opts = append([]option.ClientOption{scopesOption}, opts...)
|
opts = append([]option.ClientOption{scopesOption}, opts...)
|
||||||
|
opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
|
||||||
client, endpoint, err := htransport.NewClient(ctx, opts...)
|
client, endpoint, err := htransport.NewClient(ctx, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -1754,7 +1757,7 @@ func (c *ChangesCreateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -1928,7 +1931,7 @@ func (c *ChangesGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2129,7 +2132,7 @@ func (c *ChangesListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2353,7 +2356,7 @@ func (c *DnsKeysGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DnsKeysGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DnsKeysGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2551,7 +2554,7 @@ func (c *DnsKeysListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DnsKeysListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DnsKeysListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2754,7 +2757,7 @@ func (c *ManagedZoneOperationsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2949,7 +2952,7 @@ func (c *ManagedZoneOperationsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3149,7 +3152,7 @@ func (c *ManagedZonesCreateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3302,7 +3305,7 @@ func (c *ManagedZonesDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3438,7 +3441,7 @@ func (c *ManagedZonesGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3620,7 +3623,7 @@ func (c *ManagedZonesListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3804,7 +3807,7 @@ func (c *ManagedZonesPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZonesPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3967,7 +3970,7 @@ func (c *ManagedZonesUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ManagedZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4128,7 +4131,7 @@ func (c *PoliciesCreateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *PoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *PoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4282,7 +4285,7 @@ func (c *PoliciesDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *PoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *PoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4418,7 +4421,7 @@ func (c *PoliciesGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *PoliciesGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *PoliciesGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4592,7 +4595,7 @@ func (c *PoliciesListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *PoliciesListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *PoliciesListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4771,7 +4774,7 @@ func (c *PoliciesPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *PoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *PoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4934,7 +4937,7 @@ func (c *PoliciesUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *PoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *PoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5104,7 +5107,7 @@ func (c *ProjectsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5288,7 +5291,7 @@ func (c *ResourceRecordSetsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
|
53
vendor/google.golang.org/api/internal/gensupport/version.go
generated
vendored
Normal file
53
vendor/google.golang.org/api/internal/gensupport/version.go
generated
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
// Copyright 2020 Google LLC. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package gensupport
|
||||||
|
|
||||||
|
import (
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
"unicode"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GoVersion returns the Go runtime version. The returned string
|
||||||
|
// has no whitespace.
|
||||||
|
func GoVersion() string {
|
||||||
|
return goVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
var goVersion = goVer(runtime.Version())
|
||||||
|
|
||||||
|
const develPrefix = "devel +"
|
||||||
|
|
||||||
|
func goVer(s string) string {
|
||||||
|
if strings.HasPrefix(s, develPrefix) {
|
||||||
|
s = s[len(develPrefix):]
|
||||||
|
if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
|
||||||
|
s = s[:p]
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(s, "go1") {
|
||||||
|
s = s[2:]
|
||||||
|
var prerelease string
|
||||||
|
if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
|
||||||
|
s, prerelease = s[:p], s[p:]
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(s, ".") {
|
||||||
|
s += "0"
|
||||||
|
} else if strings.Count(s, ".") < 2 {
|
||||||
|
s += ".0"
|
||||||
|
}
|
||||||
|
if prerelease != "" {
|
||||||
|
s += "-" + prerelease
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func notSemverRune(r rune) bool {
|
||||||
|
return !strings.ContainsRune("0123456789.", r)
|
||||||
|
}
|
53
vendor/google.golang.org/api/internal/pool.go
generated
vendored
53
vendor/google.golang.org/api/internal/pool.go
generated
vendored
|
@ -1,53 +0,0 @@
|
||||||
// Copyright 2016 Google LLC.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package internal
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
|
|
||||||
"google.golang.org/grpc/naming"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO: move to transport/grpc package
|
|
||||||
|
|
||||||
// PoolResolver provides a fixed list of addresses to load balance between
|
|
||||||
// and does not provide further updates.
|
|
||||||
type PoolResolver struct {
|
|
||||||
poolSize int
|
|
||||||
dialOpt *DialSettings
|
|
||||||
ch chan []*naming.Update
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewPoolResolver returns a PoolResolver
|
|
||||||
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
|
||||||
func NewPoolResolver(size int, o *DialSettings) *PoolResolver {
|
|
||||||
return &PoolResolver{poolSize: size, dialOpt: o}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resolve returns a Watcher for the endpoint defined by the DialSettings
|
|
||||||
// provided to NewPoolResolver.
|
|
||||||
func (r *PoolResolver) Resolve(target string) (naming.Watcher, error) {
|
|
||||||
if r.dialOpt.Endpoint == "" {
|
|
||||||
return nil, errors.New("no endpoint configured")
|
|
||||||
}
|
|
||||||
addrs := make([]*naming.Update, 0, r.poolSize)
|
|
||||||
for i := 0; i < r.poolSize; i++ {
|
|
||||||
addrs = append(addrs, &naming.Update{Op: naming.Add, Addr: r.dialOpt.Endpoint, Metadata: i})
|
|
||||||
}
|
|
||||||
r.ch = make(chan []*naming.Update, 1)
|
|
||||||
r.ch <- addrs
|
|
||||||
return r, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Next returns a static list of updates on the first call,
|
|
||||||
// and blocks indefinitely until Close is called on subsequent calls.
|
|
||||||
func (r *PoolResolver) Next() ([]*naming.Update, error) {
|
|
||||||
return <-r.ch, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close releases resources associated with the pool and causes Next to unblock.
|
|
||||||
func (r *PoolResolver) Close() {
|
|
||||||
close(r.ch)
|
|
||||||
}
|
|
9
vendor/google.golang.org/api/internal/settings.go
generated
vendored
9
vendor/google.golang.org/api/internal/settings.go
generated
vendored
|
@ -6,6 +6,7 @@
|
||||||
package internal
|
package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
@ -18,6 +19,7 @@ import (
|
||||||
// Google API service.
|
// Google API service.
|
||||||
type DialSettings struct {
|
type DialSettings struct {
|
||||||
Endpoint string
|
Endpoint string
|
||||||
|
DefaultEndpoint string
|
||||||
Scopes []string
|
Scopes []string
|
||||||
TokenSource oauth2.TokenSource
|
TokenSource oauth2.TokenSource
|
||||||
Credentials *google.Credentials
|
Credentials *google.Credentials
|
||||||
|
@ -33,6 +35,7 @@ type DialSettings struct {
|
||||||
GRPCConnPoolSize int
|
GRPCConnPoolSize int
|
||||||
NoAuth bool
|
NoAuth bool
|
||||||
TelemetryDisabled bool
|
TelemetryDisabled bool
|
||||||
|
ClientCertSource func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
|
||||||
|
|
||||||
// Google API system parameters. For more information please read:
|
// Google API system parameters. For more information please read:
|
||||||
// https://cloud.google.com/apis/docs/system-parameters
|
// https://cloud.google.com/apis/docs/system-parameters
|
||||||
|
@ -90,6 +93,12 @@ func (ds *DialSettings) Validate() error {
|
||||||
if ds.HTTPClient != nil && ds.RequestReason != "" {
|
if ds.HTTPClient != nil && ds.RequestReason != "" {
|
||||||
return errors.New("WithHTTPClient is incompatible with RequestReason")
|
return errors.New("WithHTTPClient is incompatible with RequestReason")
|
||||||
}
|
}
|
||||||
|
if ds.HTTPClient != nil && ds.ClientCertSource != nil {
|
||||||
|
return errors.New("WithHTTPClient is incompatible with WithClientCertSource")
|
||||||
|
}
|
||||||
|
if ds.ClientCertSource != nil && (ds.GRPCConn != nil || ds.GRPCConnPool != nil || ds.GRPCConnPoolSize != 0 || ds.GRPCDialOpts != nil) {
|
||||||
|
return errors.New("WithClientCertSource is currently only supported for HTTP. gRPC settings are incompatible")
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
26
vendor/google.golang.org/api/option/internaloption/internaloption.go
generated
vendored
Normal file
26
vendor/google.golang.org/api/option/internaloption/internaloption.go
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright 2020 Google LLC.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package internaloption contains options used internally by Google client code.
|
||||||
|
package internaloption
|
||||||
|
|
||||||
|
import (
|
||||||
|
"google.golang.org/api/internal"
|
||||||
|
"google.golang.org/api/option"
|
||||||
|
)
|
||||||
|
|
||||||
|
type defaultEndpointOption string
|
||||||
|
|
||||||
|
func (o defaultEndpointOption) Apply(settings *internal.DialSettings) {
|
||||||
|
settings.DefaultEndpoint = string(o)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithDefaultEndpoint is an option that indicates the default endpoint.
|
||||||
|
//
|
||||||
|
// It should only be used internally by generated clients.
|
||||||
|
//
|
||||||
|
// This is similar to WithEndpoint, but allows us to determine whether the user has overriden the default endpoint.
|
||||||
|
func WithDefaultEndpoint(url string) option.ClientOption {
|
||||||
|
return defaultEndpointOption(url)
|
||||||
|
}
|
40
vendor/google.golang.org/api/option/option.go
generated
vendored
40
vendor/google.golang.org/api/option/option.go
generated
vendored
|
@ -6,6 +6,7 @@
|
||||||
package option
|
package option
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/tls"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
|
@ -142,6 +143,7 @@ func (w withGRPCDialOption) Apply(o *internal.DialSettings) {
|
||||||
|
|
||||||
// WithGRPCConnectionPool returns a ClientOption that creates a pool of gRPC
|
// WithGRPCConnectionPool returns a ClientOption that creates a pool of gRPC
|
||||||
// connections that requests will be balanced between.
|
// connections that requests will be balanced between.
|
||||||
|
//
|
||||||
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
||||||
func WithGRPCConnectionPool(size int) ClientOption {
|
func WithGRPCConnectionPool(size int) ClientOption {
|
||||||
return withGRPCConnectionPool(size)
|
return withGRPCConnectionPool(size)
|
||||||
|
@ -227,11 +229,43 @@ func (w withRequestReason) Apply(o *internal.DialSettings) {
|
||||||
// settings on gRPC and HTTP clients.
|
// settings on gRPC and HTTP clients.
|
||||||
// An example reason would be to bind custom telemetry that overrides the defaults.
|
// An example reason would be to bind custom telemetry that overrides the defaults.
|
||||||
func WithTelemetryDisabled() ClientOption {
|
func WithTelemetryDisabled() ClientOption {
|
||||||
return withTelemetryDisabledOption{}
|
return withTelemetryDisabled{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type withTelemetryDisabledOption struct{}
|
type withTelemetryDisabled struct{}
|
||||||
|
|
||||||
func (w withTelemetryDisabledOption) Apply(o *internal.DialSettings) {
|
func (w withTelemetryDisabled) Apply(o *internal.DialSettings) {
|
||||||
o.TelemetryDisabled = true
|
o.TelemetryDisabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClientCertSource is a function that returns a TLS client certificate to be used
|
||||||
|
// when opening TLS connections.
|
||||||
|
//
|
||||||
|
// It follows the same semantics as crypto/tls.Config.GetClientCertificate.
|
||||||
|
//
|
||||||
|
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
||||||
|
type ClientCertSource = func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
|
||||||
|
|
||||||
|
// WithClientCertSource returns a ClientOption that specifies a
|
||||||
|
// callback function for obtaining a TLS client certificate.
|
||||||
|
//
|
||||||
|
// This option is used for supporting mTLS authentication, where the
|
||||||
|
// server validates the client certifcate when establishing a connection.
|
||||||
|
//
|
||||||
|
// The callback function will be invoked whenever the server requests a
|
||||||
|
// certificate from the client. Implementations of the callback function
|
||||||
|
// should try to ensure that a valid certificate can be repeatedly returned
|
||||||
|
// on demand for the entire life cycle of the transport client. If a nil
|
||||||
|
// Certificate is returned (i.e. no Certificate can be obtained), an error
|
||||||
|
// should be returned.
|
||||||
|
//
|
||||||
|
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
||||||
|
func WithClientCertSource(s ClientCertSource) ClientOption {
|
||||||
|
return withClientCertSource{s}
|
||||||
|
}
|
||||||
|
|
||||||
|
type withClientCertSource struct{ s ClientCertSource }
|
||||||
|
|
||||||
|
func (w withClientCertSource) Apply(o *internal.DialSettings) {
|
||||||
|
o.ClientCertSource = w.s
|
||||||
|
}
|
||||||
|
|
110
vendor/google.golang.org/api/transport/cert/default_cert.go
generated
vendored
Normal file
110
vendor/google.golang.org/api/transport/cert/default_cert.go
generated
vendored
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
// Copyright 2020 Google LLC.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package cert contains certificate tools for Google API clients.
|
||||||
|
// This package is intended to be used with crypto/tls.Config.GetClientCertificate.
|
||||||
|
//
|
||||||
|
// The certificates can be used to satisfy Google's Endpoint Validation.
|
||||||
|
// See https://cloud.google.com/endpoint-verification/docs/overview
|
||||||
|
//
|
||||||
|
// This package is not intended for use by end developers. Use the
|
||||||
|
// google.golang.org/api/option package to configure API clients.
|
||||||
|
package cert
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/tls"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"os/user"
|
||||||
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
metadataPath = ".secureConnect"
|
||||||
|
metadataFile = "context_aware_metadata.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
defaultSourceOnce sync.Once
|
||||||
|
defaultSource Source
|
||||||
|
defaultSourceErr error
|
||||||
|
)
|
||||||
|
|
||||||
|
// Source is a function that can be passed into crypto/tls.Config.GetClientCertificate.
|
||||||
|
type Source func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
|
||||||
|
|
||||||
|
// DefaultSource returns a certificate source that execs the command specified
|
||||||
|
// in the file at ~/.secureConnect/context_aware_metadata.json
|
||||||
|
//
|
||||||
|
// If that file does not exist, a nil source is returned.
|
||||||
|
func DefaultSource() (Source, error) {
|
||||||
|
defaultSourceOnce.Do(func() {
|
||||||
|
defaultSource, defaultSourceErr = newSecureConnectSource()
|
||||||
|
})
|
||||||
|
return defaultSource, defaultSourceErr
|
||||||
|
}
|
||||||
|
|
||||||
|
type secureConnectSource struct {
|
||||||
|
metadata secureConnectMetadata
|
||||||
|
}
|
||||||
|
|
||||||
|
type secureConnectMetadata struct {
|
||||||
|
Cmd []string `json:"cert_provider_command"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// newSecureConnectSource creates a secureConnectSource by reading the well-known file.
|
||||||
|
func newSecureConnectSource() (Source, error) {
|
||||||
|
user, err := user.Current()
|
||||||
|
if err != nil {
|
||||||
|
// Ignore.
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
filename := filepath.Join(user.HomeDir, metadataPath, metadataFile)
|
||||||
|
file, err := ioutil.ReadFile(filename)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
// Ignore.
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var metadata secureConnectMetadata
|
||||||
|
if err := json.Unmarshal(file, &metadata); err != nil {
|
||||||
|
return nil, fmt.Errorf("cert: could not parse JSON in %q: %v", filename, err)
|
||||||
|
}
|
||||||
|
if err := validateMetadata(metadata); err != nil {
|
||||||
|
return nil, fmt.Errorf("cert: invalid config in %q: %v", filename, err)
|
||||||
|
}
|
||||||
|
return (&secureConnectSource{
|
||||||
|
metadata: metadata,
|
||||||
|
}).getClientCertificate, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateMetadata(metadata secureConnectMetadata) error {
|
||||||
|
if len(metadata.Cmd) == 0 {
|
||||||
|
return errors.New("empty cert_provider_command")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *secureConnectSource) getClientCertificate(info *tls.CertificateRequestInfo) (*tls.Certificate, error) {
|
||||||
|
// TODO(cbro): consider caching valid certificates rather than exec'ing every time.
|
||||||
|
command := s.metadata.Cmd
|
||||||
|
data, err := exec.Command(command[0], command[1:]...).Output()
|
||||||
|
if err != nil {
|
||||||
|
// TODO(cbro): read stderr for error message? Might contain sensitive info.
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cert, err := tls.X509KeyPair(data, data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &cert, nil
|
||||||
|
}
|
130
vendor/google.golang.org/api/transport/http/dial.go
generated
vendored
130
vendor/google.golang.org/api/transport/http/dial.go
generated
vendored
|
@ -9,14 +9,18 @@ package http
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"go.opencensus.io/plugin/ochttp"
|
"go.opencensus.io/plugin/ochttp"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"google.golang.org/api/googleapi/transport"
|
"google.golang.org/api/googleapi/transport"
|
||||||
"google.golang.org/api/internal"
|
"google.golang.org/api/internal"
|
||||||
"google.golang.org/api/option"
|
"google.golang.org/api/option"
|
||||||
|
"google.golang.org/api/transport/cert"
|
||||||
"google.golang.org/api/transport/http/internal/propagation"
|
"google.golang.org/api/transport/http/internal/propagation"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,15 +32,23 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*http.Client,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
// TODO(cbro): consider injecting the User-Agent even if an explicit HTTP client is provided?
|
clientCertSource, err := getClientCertificateSource(settings)
|
||||||
if settings.HTTPClient != nil {
|
|
||||||
return settings.HTTPClient, settings.Endpoint, nil
|
|
||||||
}
|
|
||||||
trans, err := newTransport(ctx, defaultBaseTransport(ctx), settings)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
return &http.Client{Transport: trans}, settings.Endpoint, nil
|
endpoint, err := getEndpoint(settings, clientCertSource)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
// TODO(cbro): consider injecting the User-Agent even if an explicit HTTP client is provided?
|
||||||
|
if settings.HTTPClient != nil {
|
||||||
|
return settings.HTTPClient, endpoint, nil
|
||||||
|
}
|
||||||
|
trans, err := newTransport(ctx, defaultBaseTransport(ctx, clientCertSource), settings)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
return &http.Client{Transport: trans}, endpoint, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTransport creates an http.RoundTripper for use communicating with a Google
|
// NewTransport creates an http.RoundTripper for use communicating with a Google
|
||||||
|
@ -137,11 +149,23 @@ func (t *parameterTransport) RoundTrip(req *http.Request) (*http.Response, error
|
||||||
var appengineUrlfetchHook func(context.Context) http.RoundTripper
|
var appengineUrlfetchHook func(context.Context) http.RoundTripper
|
||||||
|
|
||||||
// defaultBaseTransport returns the base HTTP transport.
|
// defaultBaseTransport returns the base HTTP transport.
|
||||||
// On App Engine, this is urlfetch.Transport, otherwise it's http.DefaultTransport.
|
// On App Engine, this is urlfetch.Transport.
|
||||||
func defaultBaseTransport(ctx context.Context) http.RoundTripper {
|
// If TLSCertificate is available, return a custom Transport with TLSClientConfig.
|
||||||
|
// Otherwise, return http.DefaultTransport.
|
||||||
|
func defaultBaseTransport(ctx context.Context, clientCertSource cert.Source) http.RoundTripper {
|
||||||
if appengineUrlfetchHook != nil {
|
if appengineUrlfetchHook != nil {
|
||||||
return appengineUrlfetchHook(ctx)
|
return appengineUrlfetchHook(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if clientCertSource != nil {
|
||||||
|
// TODO (cbro): copy default transport settings from http.DefaultTransport
|
||||||
|
return &http.Transport{
|
||||||
|
TLSClientConfig: &tls.Config{
|
||||||
|
GetClientCertificate: clientCertSource,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return http.DefaultTransport
|
return http.DefaultTransport
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,3 +178,93 @@ func addOCTransport(trans http.RoundTripper, settings *internal.DialSettings) ht
|
||||||
Propagation: &propagation.HTTPFormat{},
|
Propagation: &propagation.HTTPFormat{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getClientCertificateSource returns a default client certificate source, if
|
||||||
|
// not provided by the user.
|
||||||
|
//
|
||||||
|
// A nil default source can be returned if the source does not exist. Any exceptions
|
||||||
|
// encountered while initializing the default source will be reported as client
|
||||||
|
// error (ex. corrupt metadata file).
|
||||||
|
//
|
||||||
|
// The overall logic is as follows:
|
||||||
|
// 1. If both endpoint override and client certificate are specified, use them as is.
|
||||||
|
// 2. If user does not specify client certificate, we will attempt to use default
|
||||||
|
// client certificate.
|
||||||
|
// 3. If user does not specify endpoint override, we will use defaultMtlsEndpoint if
|
||||||
|
// client certificate is available and defaultEndpoint otherwise.
|
||||||
|
//
|
||||||
|
// Implications of the above logic:
|
||||||
|
// 1. If the user specifies a non-mTLS endpoint override but client certificate is
|
||||||
|
// available, we will pass along the cert anyway and let the server decide what to do.
|
||||||
|
// 2. If the user specifies an mTLS endpoint override but client certificate is not
|
||||||
|
// available, we will not fail-fast, but let backend throw error when connecting.
|
||||||
|
//
|
||||||
|
// We would like to avoid introducing client-side logic that parses whether the
|
||||||
|
// endpoint override is an mTLS url, since the url pattern may change at anytime.
|
||||||
|
func getClientCertificateSource(settings *internal.DialSettings) (cert.Source, error) {
|
||||||
|
if settings.ClientCertSource != nil {
|
||||||
|
return settings.ClientCertSource, nil
|
||||||
|
}
|
||||||
|
return cert.DefaultSource()
|
||||||
|
}
|
||||||
|
|
||||||
|
// getEndpoint returns the endpoint for the service, taking into account the
|
||||||
|
// user-provided endpoint override "settings.Endpoint"
|
||||||
|
//
|
||||||
|
// If no endpoint override is specified, we will return the default endpoint (or
|
||||||
|
// the default mTLS endpoint if a client certificate is available).
|
||||||
|
//
|
||||||
|
// If the endpoint override is an address (host:port) rather than full base
|
||||||
|
// URL (ex. https://...), then the user-provided address will be merged into
|
||||||
|
// the default endpoint. For example, WithEndpoint("myhost:8000") and
|
||||||
|
// WithDefaultEndpoint("https://foo.com/bar/baz") will return "https://myhost:8080/bar/baz"
|
||||||
|
func getEndpoint(settings *internal.DialSettings, clientCertSource cert.Source) (string, error) {
|
||||||
|
if settings.Endpoint == "" {
|
||||||
|
if clientCertSource != nil {
|
||||||
|
return generateDefaultMtlsEndpoint(settings.DefaultEndpoint), nil
|
||||||
|
}
|
||||||
|
return settings.DefaultEndpoint, nil
|
||||||
|
}
|
||||||
|
if strings.Contains(settings.Endpoint, "://") {
|
||||||
|
// User passed in a full URL path, use it verbatim.
|
||||||
|
return settings.Endpoint, nil
|
||||||
|
}
|
||||||
|
if settings.DefaultEndpoint == "" {
|
||||||
|
return "", errors.New("WithEndpoint requires a full URL path")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume user-provided endpoint is host[:port], merge it with the default endpoint.
|
||||||
|
return mergeEndpoints(settings.DefaultEndpoint, settings.Endpoint)
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeEndpoints(base, newHost string) (string, error) {
|
||||||
|
u, err := url.Parse(base)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
u.Host = newHost
|
||||||
|
return u.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// generateDefaultMtlsEndpoint attempts to derive the mTLS version of the
|
||||||
|
// defaultEndpoint via regex, and returns defaultEndpoint if unsuccessful.
|
||||||
|
//
|
||||||
|
// We need to applying the following 2 transformations:
|
||||||
|
// 1. pubsub.googleapis.com to pubsub.mtls.googleapis.com
|
||||||
|
// 2. pubsub.sandbox.googleapis.com to pubsub.mtls.sandbox.googleapis.com
|
||||||
|
//
|
||||||
|
// TODO(andyzhao): In the future, the mTLS endpoint will be read from the Discovery Document
|
||||||
|
// and passed in as defaultMtlsEndpoint instead of generated from defaultEndpoint,
|
||||||
|
// and this function will be removed.
|
||||||
|
func generateDefaultMtlsEndpoint(defaultEndpoint string) string {
|
||||||
|
var domains = []string{
|
||||||
|
".sandbox.googleapis.com", // must come first because .googleapis.com is a substring
|
||||||
|
".googleapis.com",
|
||||||
|
}
|
||||||
|
for _, domain := range domains {
|
||||||
|
if strings.Contains(defaultEndpoint, domain) {
|
||||||
|
return strings.Replace(defaultEndpoint, domain, ".mtls"+domain, -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return defaultEndpoint
|
||||||
|
}
|
||||||
|
|
16
vendor/modules.txt
vendored
16
vendor/modules.txt
vendored
|
@ -34,7 +34,7 @@ github.com/TomOnTime/utfutil
|
||||||
# github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
|
# github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
|
||||||
## explicit
|
## explicit
|
||||||
github.com/andreyvit/diff
|
github.com/andreyvit/diff
|
||||||
# github.com/aws/aws-sdk-go v1.29.1
|
# github.com/aws/aws-sdk-go v1.29.21
|
||||||
## explicit
|
## explicit
|
||||||
github.com/aws/aws-sdk-go/aws
|
github.com/aws/aws-sdk-go/aws
|
||||||
github.com/aws/aws-sdk-go/aws/awserr
|
github.com/aws/aws-sdk-go/aws/awserr
|
||||||
|
@ -54,6 +54,7 @@ github.com/aws/aws-sdk-go/aws/endpoints
|
||||||
github.com/aws/aws-sdk-go/aws/request
|
github.com/aws/aws-sdk-go/aws/request
|
||||||
github.com/aws/aws-sdk-go/aws/session
|
github.com/aws/aws-sdk-go/aws/session
|
||||||
github.com/aws/aws-sdk-go/aws/signer/v4
|
github.com/aws/aws-sdk-go/aws/signer/v4
|
||||||
|
github.com/aws/aws-sdk-go/internal/context
|
||||||
github.com/aws/aws-sdk-go/internal/ini
|
github.com/aws/aws-sdk-go/internal/ini
|
||||||
github.com/aws/aws-sdk-go/internal/sdkio
|
github.com/aws/aws-sdk-go/internal/sdkio
|
||||||
github.com/aws/aws-sdk-go/internal/sdkmath
|
github.com/aws/aws-sdk-go/internal/sdkmath
|
||||||
|
@ -204,7 +205,8 @@ github.com/hexonet/go-sdk/responsetemplatemanager
|
||||||
github.com/hexonet/go-sdk/socketconfig
|
github.com/hexonet/go-sdk/socketconfig
|
||||||
# github.com/jarcoal/httpmock v1.0.4
|
# github.com/jarcoal/httpmock v1.0.4
|
||||||
## explicit
|
## explicit
|
||||||
# github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af
|
# github.com/jmespath/go-jmespath v0.0.0-20200310193758-2437e8417af5
|
||||||
|
## explicit
|
||||||
github.com/jmespath/go-jmespath
|
github.com/jmespath/go-jmespath
|
||||||
# github.com/kolo/xmlrpc v0.0.0-20150413191830-0826b98aaa29
|
# github.com/kolo/xmlrpc v0.0.0-20150413191830-0826b98aaa29
|
||||||
## explicit
|
## explicit
|
||||||
|
@ -283,7 +285,7 @@ github.com/softlayer/softlayer-go/filter
|
||||||
github.com/softlayer/softlayer-go/services
|
github.com/softlayer/softlayer-go/services
|
||||||
github.com/softlayer/softlayer-go/session
|
github.com/softlayer/softlayer-go/session
|
||||||
github.com/softlayer/softlayer-go/sl
|
github.com/softlayer/softlayer-go/sl
|
||||||
# github.com/stretchr/testify v1.4.0
|
# github.com/stretchr/testify v1.5.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/stretchr/testify/assert
|
github.com/stretchr/testify/assert
|
||||||
# github.com/tdewolff/minify v2.3.6+incompatible
|
# github.com/tdewolff/minify v2.3.6+incompatible
|
||||||
|
@ -298,7 +300,7 @@ github.com/tdewolff/parse/json
|
||||||
github.com/tdewolff/parse/strconv
|
github.com/tdewolff/parse/strconv
|
||||||
# github.com/tdewolff/test v1.0.6
|
# github.com/tdewolff/test v1.0.6
|
||||||
## explicit
|
## explicit
|
||||||
# github.com/tiramiseb/go-gandi v0.0.0-20200227122905-7601fc3acbaa
|
# github.com/tiramiseb/go-gandi v0.0.0-20200309181223-e1cf2e430b3a
|
||||||
## explicit
|
## explicit
|
||||||
github.com/tiramiseb/go-gandi
|
github.com/tiramiseb/go-gandi
|
||||||
github.com/tiramiseb/go-gandi/domain
|
github.com/tiramiseb/go-gandi/domain
|
||||||
|
@ -379,7 +381,7 @@ golang.org/x/text/unicode/bidi
|
||||||
golang.org/x/text/unicode/norm
|
golang.org/x/text/unicode/norm
|
||||||
# golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
|
# golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
|
||||||
golang.org/x/time/rate
|
golang.org/x/time/rate
|
||||||
# golang.org/x/tools v0.0.0-20200303202040-658b03bcd3d8
|
# golang.org/x/tools v0.0.0-20200309202150-20ab64c0d93f
|
||||||
## explicit
|
## explicit
|
||||||
golang.org/x/tools/go/ast/astutil
|
golang.org/x/tools/go/ast/astutil
|
||||||
golang.org/x/tools/imports
|
golang.org/x/tools/imports
|
||||||
|
@ -390,7 +392,7 @@ golang.org/x/tools/internal/imports
|
||||||
# golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
|
# golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
|
||||||
golang.org/x/xerrors
|
golang.org/x/xerrors
|
||||||
golang.org/x/xerrors/internal
|
golang.org/x/xerrors/internal
|
||||||
# google.golang.org/api v0.17.0
|
# google.golang.org/api v0.20.0
|
||||||
## explicit
|
## explicit
|
||||||
google.golang.org/api/dns/v1
|
google.golang.org/api/dns/v1
|
||||||
google.golang.org/api/googleapi
|
google.golang.org/api/googleapi
|
||||||
|
@ -399,6 +401,8 @@ google.golang.org/api/internal
|
||||||
google.golang.org/api/internal/gensupport
|
google.golang.org/api/internal/gensupport
|
||||||
google.golang.org/api/internal/third_party/uritemplates
|
google.golang.org/api/internal/third_party/uritemplates
|
||||||
google.golang.org/api/option
|
google.golang.org/api/option
|
||||||
|
google.golang.org/api/option/internaloption
|
||||||
|
google.golang.org/api/transport/cert
|
||||||
google.golang.org/api/transport/http
|
google.golang.org/api/transport/http
|
||||||
google.golang.org/api/transport/http/internal/propagation
|
google.golang.org/api/transport/http/internal/propagation
|
||||||
# google.golang.org/appengine v1.6.5
|
# google.golang.org/appengine v1.6.5
|
||||||
|
|
Loading…
Add table
Reference in a new issue