mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
vendor: make vendor-update
This commit is contained in:
parent
8164cd8932
commit
b39d5ef656
113 changed files with 9484 additions and 1325 deletions
9
go.mod
9
go.mod
|
@ -13,10 +13,17 @@ require (
|
||||||
github.com/aws/aws-sdk-go v1.37.1
|
github.com/aws/aws-sdk-go v1.37.1
|
||||||
github.com/cespare/xxhash/v2 v2.1.1
|
github.com/cespare/xxhash/v2 v2.1.1
|
||||||
github.com/cheggaaa/pb/v3 v3.0.5
|
github.com/cheggaaa/pb/v3 v3.0.5
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
||||||
|
github.com/fatih/color v1.10.0 // indirect
|
||||||
github.com/golang/snappy v0.0.2
|
github.com/golang/snappy v0.0.2
|
||||||
github.com/influxdata/influxdb v1.8.3
|
github.com/influxdata/influxdb v1.8.4
|
||||||
github.com/klauspost/compress v1.11.7
|
github.com/klauspost/compress v1.11.7
|
||||||
|
github.com/mattn/go-runewidth v0.0.10 // indirect
|
||||||
|
github.com/prometheus/client_golang v1.9.0 // indirect
|
||||||
|
github.com/prometheus/procfs v0.3.0 // indirect
|
||||||
github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9
|
github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9
|
||||||
|
github.com/rivo/uniseg v0.2.0 // indirect
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
github.com/urfave/cli/v2 v2.3.0
|
github.com/urfave/cli/v2 v2.3.0
|
||||||
github.com/valyala/fastjson v1.6.3
|
github.com/valyala/fastjson v1.6.3
|
||||||
github.com/valyala/fastrand v1.0.0
|
github.com/valyala/fastrand v1.0.0
|
||||||
|
|
49
go.sum
49
go.sum
|
@ -123,8 +123,6 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ
|
||||||
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||||
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
|
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
|
||||||
github.com/aws/aws-sdk-go v1.35.31/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
github.com/aws/aws-sdk-go v1.35.31/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
||||||
github.com/aws/aws-sdk-go v1.36.25 h1:foHwQg8LGGuR9L8IODs2co5OQqjYhNNrngefIbXbyjg=
|
|
||||||
github.com/aws/aws-sdk-go v1.36.25/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
|
||||||
github.com/aws/aws-sdk-go v1.37.1 h1:BTHmuN+gzhxkvU9sac2tZvaY0gV9ihbHw+KxZOecYvY=
|
github.com/aws/aws-sdk-go v1.37.1 h1:BTHmuN+gzhxkvU9sac2tZvaY0gV9ihbHw+KxZOecYvY=
|
||||||
github.com/aws/aws-sdk-go v1.37.1/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
github.com/aws/aws-sdk-go v1.37.1/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
||||||
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
|
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
|
||||||
|
@ -162,8 +160,9 @@ github.com/containerd/containerd v1.3.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMX
|
||||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||||
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
|
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
|
github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
|
||||||
|
@ -198,8 +197,9 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||||
github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
|
|
||||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||||
|
github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
|
||||||
|
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
||||||
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
|
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
|
||||||
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
|
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
|
||||||
|
@ -463,8 +463,9 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:
|
||||||
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY=
|
github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY=
|
||||||
github.com/influxdata/influxdb v1.8.3 h1:WEypI1BQFTT4teLM+1qkEcvUi0dAvopAI/ir0vAiBg8=
|
|
||||||
github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI=
|
github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI=
|
||||||
|
github.com/influxdata/influxdb v1.8.4 h1:FUcPJJ1/sM47gX3Xr7QCIbkmZ2N4ug5CV7iOFQCR75A=
|
||||||
|
github.com/influxdata/influxdb v1.8.4/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI=
|
||||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||||
github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk=
|
github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk=
|
||||||
github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE=
|
github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE=
|
||||||
|
@ -506,8 +507,6 @@ github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0
|
||||||
github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/compress v1.11.6 h1:EgWPCW6O3n1D5n99Zq3xXBt9uCwRGvpwGOusOLNBRSQ=
|
|
||||||
github.com/klauspost/compress v1.11.6/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
|
||||||
github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg=
|
github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg=
|
||||||
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
|
@ -543,8 +542,9 @@ github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kN
|
||||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||||
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
|
|
||||||
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||||
|
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
|
||||||
|
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||||
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||||
|
@ -554,8 +554,9 @@ github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHX
|
||||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||||
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54=
|
|
||||||
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||||
|
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
|
||||||
|
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||||
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||||
github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
|
github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
||||||
|
@ -653,8 +654,9 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD
|
||||||
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
||||||
github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4=
|
github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4=
|
||||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||||
github.com/prometheus/client_golang v1.8.0 h1:zvJNkoCFAnYFNC24FV8nW4JdRJ3GIFcLbg65lL/JDcw=
|
|
||||||
github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM=
|
github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM=
|
||||||
|
github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU=
|
||||||
|
github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU=
|
||||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||||
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
|
@ -677,20 +679,25 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
|
||||||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||||
github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||||
github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4=
|
|
||||||
github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||||
|
github.com/prometheus/procfs v0.3.0 h1:Uehi/mxLK0eiUc0H0++5tpMGTexB8wZ598MIgU8VpDM=
|
||||||
|
github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||||
github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9 h1:F2A86PGVYqn3P7oWbrSmSlJHae9y6wwpAdoWb/pZi6Q=
|
github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9 h1:F2A86PGVYqn3P7oWbrSmSlJHae9y6wwpAdoWb/pZi6Q=
|
||||||
github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9/go.mod h1:1MDE/bXgu4gqd5w/otko6WQpXZX9vu8QX4KbitCmaPg=
|
github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9/go.mod h1:1MDE/bXgu4gqd5w/otko6WQpXZX9vu8QX4KbitCmaPg=
|
||||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||||
github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc=
|
github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc=
|
||||||
|
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||||
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||||
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||||
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
|
||||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||||
|
@ -701,7 +708,6 @@ github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfP
|
||||||
github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
||||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||||
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||||
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
||||||
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
||||||
|
@ -788,7 +794,6 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.5 h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0=
|
|
||||||
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||||
go.opencensus.io v0.22.6 h1:BdkrbWrzDlV9dnbzoP7sfN+dHheJ4J9JOaYxcUDL+ok=
|
go.opencensus.io v0.22.6 h1:BdkrbWrzDlV9dnbzoP7sfN+dHheJ4J9JOaYxcUDL+ok=
|
||||||
go.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
go.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||||
|
@ -857,7 +862,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
|
||||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8=
|
|
||||||
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=
|
golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=
|
||||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
@ -905,7 +909,6 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
|
||||||
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw=
|
|
||||||
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew=
|
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew=
|
||||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
@ -917,8 +920,6 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr
|
||||||
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
golang.org/x/oauth2 v0.0.0-20210112200429-01de73cf58bd h1:0n2rzLq6xLtV9OFaT0BF2syUkjOwRrJ1zvXY5hH7Kkc=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20210112200429-01de73cf58bd/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g=
|
golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g=
|
||||||
golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
@ -930,8 +931,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
|
|
||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
@ -995,9 +996,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210113000019-eaf3bda374d2 h1:F9vNgpIiamoF+Q1/c78bikg/NScXEtbZSNEpnRelOzs=
|
|
||||||
golang.org/x/sys v0.0.0-20210113000019-eaf3bda374d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=
|
||||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
@ -1087,8 +1087,6 @@ golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4f
|
||||||
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.0.0-20210112230658-8b4aab62c064 h1:BmCFkEH4nJrYcAc2L08yX5RhYGD4j58PTMkEUDkpz2I=
|
|
||||||
golang.org/x/tools v0.0.0-20210112230658-8b4aab62c064/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
|
||||||
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
|
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
|
||||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||||
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=
|
||||||
|
@ -1122,7 +1120,6 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513
|
||||||
google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo=
|
google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo=
|
||||||
google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
|
google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
|
||||||
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
|
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
|
||||||
google.golang.org/api v0.36.0 h1:l2Nfbl2GPXdWorv+dT2XfinX2jOOw4zv1VhLstx+6rE=
|
|
||||||
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
|
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
|
||||||
google.golang.org/api v0.38.0 h1:vDyWk6eup8eQAidaZ31sNWIn8tZEL8qpbtGkBD4ytQo=
|
google.golang.org/api v0.38.0 h1:vDyWk6eup8eQAidaZ31sNWIn8tZEL8qpbtGkBD4ytQo=
|
||||||
google.golang.org/api v0.38.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
|
google.golang.org/api v0.38.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
|
||||||
|
@ -1177,8 +1174,6 @@ google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6D
|
||||||
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
google.golang.org/genproto v0.0.0-20210111234610-22ae2b108f89 h1:R2owLnwrU3BdTJ5R9cnHDNsnEmBQ7n5lZjKShnbISe4=
|
|
||||||
google.golang.org/genproto v0.0.0-20210111234610-22ae2b108f89/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
|
||||||
google.golang.org/genproto v0.0.0-20210201151548-94839c025ad4 h1:HPkKL4eEh/nemF/FRzYMrFsAh1ZPm5t8NqKBI/Ejlg0=
|
google.golang.org/genproto v0.0.0-20210201151548-94839c025ad4 h1:HPkKL4eEh/nemF/FRzYMrFsAh1ZPm5t8NqKBI/Ejlg0=
|
||||||
google.golang.org/genproto v0.0.0-20210201151548-94839c025ad4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
google.golang.org/genproto v0.0.0-20210201151548-94839c025ad4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||||
|
@ -1203,8 +1198,6 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM
|
||||||
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
|
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
|
||||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
|
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
|
||||||
google.golang.org/grpc v1.34.1 h1:ugq+9++ZQPFzM2pKUMCIK8gj9M0pFyuUWO9Q8kwEDQw=
|
|
||||||
google.golang.org/grpc v1.34.1/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
|
|
||||||
google.golang.org/grpc v1.35.0 h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8=
|
google.golang.org/grpc v1.35.0 h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8=
|
||||||
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
|
|
32
vendor/github.com/aws/aws-sdk-go/aws/config.go
generated
vendored
32
vendor/github.com/aws/aws-sdk-go/aws/config.go
generated
vendored
|
@ -438,13 +438,6 @@ func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
// MergeIn merges the passed in configs into the existing config object.
|
|
||||||
func (c *Config) MergeIn(cfgs ...*Config) {
|
|
||||||
for _, other := range cfgs {
|
|
||||||
mergeInConfig(c, other)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag
|
// WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag
|
||||||
// when resolving the endpoint for a service
|
// when resolving the endpoint for a service
|
||||||
func (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config {
|
func (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config {
|
||||||
|
@ -459,6 +452,27 @@ func (c *Config) WithS3UsEast1RegionalEndpoint(sre endpoints.S3UsEast1RegionalEn
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithLowerCaseHeaderMaps sets a config LowerCaseHeaderMaps value
|
||||||
|
// returning a Config pointer for chaining.
|
||||||
|
func (c *Config) WithLowerCaseHeaderMaps(t bool) *Config {
|
||||||
|
c.LowerCaseHeaderMaps = &t
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithDisableRestProtocolURICleaning sets a config DisableRestProtocolURICleaning value
|
||||||
|
// returning a Config pointer for chaining.
|
||||||
|
func (c *Config) WithDisableRestProtocolURICleaning(t bool) *Config {
|
||||||
|
c.DisableRestProtocolURICleaning = &t
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergeIn merges the passed in configs into the existing config object.
|
||||||
|
func (c *Config) MergeIn(cfgs ...*Config) {
|
||||||
|
for _, other := range cfgs {
|
||||||
|
mergeInConfig(c, other)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func mergeInConfig(dst *Config, other *Config) {
|
func mergeInConfig(dst *Config, other *Config) {
|
||||||
if other == nil {
|
if other == nil {
|
||||||
return
|
return
|
||||||
|
@ -571,6 +585,10 @@ func mergeInConfig(dst *Config, other *Config) {
|
||||||
if other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint {
|
if other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint {
|
||||||
dst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint
|
dst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if other.LowerCaseHeaderMaps != nil {
|
||||||
|
dst.LowerCaseHeaderMaps = other.LowerCaseHeaderMaps
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy will return a shallow copy of the Config object. If any additional
|
// Copy will return a shallow copy of the Config object. If any additional
|
||||||
|
|
60
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go
generated
vendored
Normal file
60
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go
generated
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
// Package ssocreds provides a credential provider for retrieving temporary AWS credentials using an SSO access token.
|
||||||
|
//
|
||||||
|
// IMPORTANT: The provider in this package does not initiate or perform the AWS SSO login flow. The SDK provider
|
||||||
|
// expects that you have already performed the SSO login flow using AWS CLI using the "aws sso login" command, or by
|
||||||
|
// some other mechanism. The provider must find a valid non-expired access token for the AWS SSO user portal URL in
|
||||||
|
// ~/.aws/sso/cache. If a cached token is not found, it is expired, or the file is malformed an error will be returned.
|
||||||
|
//
|
||||||
|
// Loading AWS SSO credentials with the AWS shared configuration file
|
||||||
|
//
|
||||||
|
// You can use configure AWS SSO credentials from the AWS shared configuration file by
|
||||||
|
// providing the specifying the required keys in the profile:
|
||||||
|
//
|
||||||
|
// sso_account_id
|
||||||
|
// sso_region
|
||||||
|
// sso_role_name
|
||||||
|
// sso_start_url
|
||||||
|
//
|
||||||
|
// For example, the following defines a profile "devsso" and specifies the AWS SSO parameters that defines the target
|
||||||
|
// account, role, sign-on portal, and the region where the user portal is located. Note: all SSO arguments must be
|
||||||
|
// provided, or an error will be returned.
|
||||||
|
//
|
||||||
|
// [profile devsso]
|
||||||
|
// sso_start_url = https://my-sso-portal.awsapps.com/start
|
||||||
|
// sso_role_name = SSOReadOnlyRole
|
||||||
|
// sso_region = us-east-1
|
||||||
|
// sso_account_id = 123456789012
|
||||||
|
//
|
||||||
|
// Using the config module, you can load the AWS SDK shared configuration, and specify that this profile be used to
|
||||||
|
// retrieve credentials. For example:
|
||||||
|
//
|
||||||
|
// sess, err := session.NewSessionWithOptions(session.Options{
|
||||||
|
// SharedConfigState: session.SharedConfigEnable,
|
||||||
|
// Profile: "devsso",
|
||||||
|
// })
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Programmatically loading AWS SSO credentials directly
|
||||||
|
//
|
||||||
|
// You can programmatically construct the AWS SSO Provider in your application, and provide the necessary information
|
||||||
|
// to load and retrieve temporary credentials using an access token from ~/.aws/sso/cache.
|
||||||
|
//
|
||||||
|
// svc := sso.New(sess, &aws.Config{
|
||||||
|
// Region: aws.String("us-west-2"), // Client Region must correspond to the AWS SSO user portal region
|
||||||
|
// })
|
||||||
|
//
|
||||||
|
// provider := ssocreds.NewCredentialsWithClient(svc, "123456789012", "SSOReadOnlyRole", "https://my-sso-portal.awsapps.com/start")
|
||||||
|
//
|
||||||
|
// credentials, err := provider.Get()
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Additional Resources
|
||||||
|
//
|
||||||
|
// Configuring the AWS CLI to use AWS Single Sign-On: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
|
||||||
|
//
|
||||||
|
// AWS Single Sign-On User Guide: https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html
|
||||||
|
package ssocreds
|
9
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go
generated
vendored
Normal file
9
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
package ssocreds
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
func getHomeDirectory() string {
|
||||||
|
return os.Getenv("HOME")
|
||||||
|
}
|
7
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go
generated
vendored
Normal file
7
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package ssocreds
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
func getHomeDirectory() string {
|
||||||
|
return os.Getenv("USERPROFILE")
|
||||||
|
}
|
180
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go
generated
vendored
Normal file
180
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go
generated
vendored
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
package ssocreds
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha1"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/client"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sso"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sso/ssoiface"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ErrCodeSSOProviderInvalidToken is the code type that is returned if loaded token has expired or is otherwise invalid.
|
||||||
|
// To refresh the SSO session run aws sso login with the corresponding profile.
|
||||||
|
const ErrCodeSSOProviderInvalidToken = "SSOProviderInvalidToken"
|
||||||
|
|
||||||
|
const invalidTokenMessage = "the SSO session has expired or is invalid"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
nowTime = time.Now
|
||||||
|
defaultCacheLocation = defaultCacheLocationImpl
|
||||||
|
}
|
||||||
|
|
||||||
|
var nowTime func() time.Time
|
||||||
|
|
||||||
|
// ProviderName is the name of the provider used to specify the source of credentials.
|
||||||
|
const ProviderName = "SSOProvider"
|
||||||
|
|
||||||
|
var defaultCacheLocation func() string
|
||||||
|
|
||||||
|
func defaultCacheLocationImpl() string {
|
||||||
|
return filepath.Join(getHomeDirectory(), ".aws", "sso", "cache")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Provider is an AWS credential provider that retrieves temporary AWS credentials by exchanging an SSO login token.
|
||||||
|
type Provider struct {
|
||||||
|
credentials.Expiry
|
||||||
|
|
||||||
|
// The Client which is configured for the AWS Region where the AWS SSO user portal is located.
|
||||||
|
Client ssoiface.SSOAPI
|
||||||
|
|
||||||
|
// The AWS account that is assigned to the user.
|
||||||
|
AccountID string
|
||||||
|
|
||||||
|
// The role name that is assigned to the user.
|
||||||
|
RoleName string
|
||||||
|
|
||||||
|
// The URL that points to the organization's AWS Single Sign-On (AWS SSO) user portal.
|
||||||
|
StartURL string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentials returns a new AWS Single Sign-On (AWS SSO) credential provider. The ConfigProvider is expected to be configured
|
||||||
|
// for the AWS Region where the AWS SSO user portal is located.
|
||||||
|
func NewCredentials(configProvider client.ConfigProvider, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials {
|
||||||
|
return NewCredentialsWithClient(sso.New(configProvider), accountID, roleName, startURL, optFns...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentialsWithClient returns a new AWS Single Sign-On (AWS SSO) credential provider. The provided client is expected to be configured
|
||||||
|
// for the AWS Region where the AWS SSO user portal is located.
|
||||||
|
func NewCredentialsWithClient(client ssoiface.SSOAPI, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials {
|
||||||
|
p := &Provider{
|
||||||
|
Client: client,
|
||||||
|
AccountID: accountID,
|
||||||
|
RoleName: roleName,
|
||||||
|
StartURL: startURL,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fn := range optFns {
|
||||||
|
fn(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentials.NewCredentials(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal
|
||||||
|
// by exchanging the accessToken present in ~/.aws/sso/cache.
|
||||||
|
func (p *Provider) Retrieve() (credentials.Value, error) {
|
||||||
|
return p.RetrieveWithContext(aws.BackgroundContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetrieveWithContext retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal
|
||||||
|
// by exchanging the accessToken present in ~/.aws/sso/cache.
|
||||||
|
func (p *Provider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {
|
||||||
|
tokenFile, err := loadTokenFile(p.StartURL)
|
||||||
|
if err != nil {
|
||||||
|
return credentials.Value{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
output, err := p.Client.GetRoleCredentialsWithContext(ctx, &sso.GetRoleCredentialsInput{
|
||||||
|
AccessToken: &tokenFile.AccessToken,
|
||||||
|
AccountId: &p.AccountID,
|
||||||
|
RoleName: &p.RoleName,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return credentials.Value{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
expireTime := time.Unix(0, aws.Int64Value(output.RoleCredentials.Expiration)*int64(time.Millisecond)).UTC()
|
||||||
|
p.SetExpiration(expireTime, 0)
|
||||||
|
|
||||||
|
return credentials.Value{
|
||||||
|
AccessKeyID: aws.StringValue(output.RoleCredentials.AccessKeyId),
|
||||||
|
SecretAccessKey: aws.StringValue(output.RoleCredentials.SecretAccessKey),
|
||||||
|
SessionToken: aws.StringValue(output.RoleCredentials.SessionToken),
|
||||||
|
ProviderName: ProviderName,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCacheFileName(url string) (string, error) {
|
||||||
|
hash := sha1.New()
|
||||||
|
_, err := hash.Write([]byte(url))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return strings.ToLower(hex.EncodeToString(hash.Sum(nil))) + ".json", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type rfc3339 time.Time
|
||||||
|
|
||||||
|
func (r *rfc3339) UnmarshalJSON(bytes []byte) error {
|
||||||
|
var value string
|
||||||
|
|
||||||
|
if err := json.Unmarshal(bytes, &value); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
parse, err := time.Parse(time.RFC3339, value)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("expected RFC3339 timestamp: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
*r = rfc3339(parse)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type token struct {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
ExpiresAt rfc3339 `json:"expiresAt"`
|
||||||
|
Region string `json:"region,omitempty"`
|
||||||
|
StartURL string `json:"startUrl,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t token) Expired() bool {
|
||||||
|
return nowTime().Round(0).After(time.Time(t.ExpiresAt))
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadTokenFile(startURL string) (t token, err error) {
|
||||||
|
key, err := getCacheFileName(startURL)
|
||||||
|
if err != nil {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fileBytes, err := ioutil.ReadFile(filepath.Join(defaultCacheLocation(), key))
|
||||||
|
if err != nil {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(fileBytes, &t); err != nil {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(t.AccessToken) == 0 {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
if t.Expired() {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, nil
|
||||||
|
}
|
12
vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go
generated
vendored
12
vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go
generated
vendored
|
@ -244,9 +244,11 @@ type AssumeRoleProvider struct {
|
||||||
MaxJitterFrac float64
|
MaxJitterFrac float64
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCredentials returns a pointer to a new Credentials object wrapping the
|
// NewCredentials returns a pointer to a new Credentials value wrapping the
|
||||||
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
||||||
// role will be named after a nanosecond timestamp of this operation.
|
// role will be named after a nanosecond timestamp of this operation. The
|
||||||
|
// Credentials value will attempt to refresh the credentials using the provider
|
||||||
|
// when Credentials.Get is called, if the cached credentials are expiring.
|
||||||
//
|
//
|
||||||
// Takes a Config provider to create the STS client. The ConfigProvider is
|
// Takes a Config provider to create the STS client. The ConfigProvider is
|
||||||
// satisfied by the session.Session type.
|
// satisfied by the session.Session type.
|
||||||
|
@ -268,9 +270,11 @@ func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*As
|
||||||
return credentials.NewCredentials(p)
|
return credentials.NewCredentials(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping the
|
// NewCredentialsWithClient returns a pointer to a new Credentials value wrapping the
|
||||||
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
||||||
// role will be named after a nanosecond timestamp of this operation.
|
// role will be named after a nanosecond timestamp of this operation. The
|
||||||
|
// Credentials value will attempt to refresh the credentials using the provider
|
||||||
|
// when Credentials.Get is called, if the cached credentials are expiring.
|
||||||
//
|
//
|
||||||
// Takes an AssumeRoler which can be satisfied by the STS client.
|
// Takes an AssumeRoler which can be satisfied by the STS client.
|
||||||
//
|
//
|
||||||
|
|
99
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
99
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
|
@ -380,9 +380,33 @@ var awsPartition = partition{
|
||||||
"me-south-1": endpoint{},
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-1-fips": endpoint{
|
||||||
"us-west-1": endpoint{},
|
Hostname: "api.detective-fips.us-east-1.amazonaws.com",
|
||||||
"us-west-2": endpoint{},
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-east-2": endpoint{},
|
||||||
|
"us-east-2-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-east-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-west-1": endpoint{},
|
||||||
|
"us-west-1-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"api.ecr": service{
|
"api.ecr": service{
|
||||||
|
@ -746,6 +770,7 @@ var awsPartition = partition{
|
||||||
"appmesh": service{
|
"appmesh": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -1413,6 +1438,7 @@ var awsPartition = partition{
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-north-1": endpoint{},
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -3053,6 +3079,7 @@ var awsPartition = partition{
|
||||||
"fsx": service{
|
"fsx": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -3062,6 +3089,7 @@ var awsPartition = partition{
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-north-1": endpoint{},
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -3095,11 +3123,12 @@ var awsPartition = partition{
|
||||||
Region: "us-west-2",
|
Region: "us-west-2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"sa-east-1": endpoint{},
|
"me-south-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-west-1": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
"us-west-2": endpoint{},
|
"us-west-1": endpoint{},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"gamelift": service{
|
"gamelift": service{
|
||||||
|
@ -3759,6 +3788,7 @@ var awsPartition = partition{
|
||||||
"lakeformation": service{
|
"lakeformation": 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{},
|
||||||
|
@ -4274,7 +4304,19 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-west-2": endpoint{},
|
"us-east-1-fips": endpoint{
|
||||||
|
Hostname: "models-fips.lex.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "models-fips.lex.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"monitoring": service{
|
"monitoring": service{
|
||||||
|
@ -5188,7 +5230,19 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-west-2": endpoint{},
|
"us-east-1-fips": endpoint{
|
||||||
|
Hostname: "runtime-fips.lex.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "runtime-fips.lex.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"runtime.sagemaker": service{
|
"runtime.sagemaker": service{
|
||||||
|
@ -8674,7 +8728,12 @@ var awsusgovPartition = partition{
|
||||||
Region: "us-gov-east-1",
|
Region: "us-gov-east-1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"us-gov-east-1": endpoint{},
|
"us-gov-east-1": endpoint{
|
||||||
|
Hostname: "greengrass.us-gov-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-gov-west-1": endpoint{
|
"us-gov-west-1": endpoint{
|
||||||
Hostname: "greengrass.us-gov-west-1.amazonaws.com",
|
Hostname: "greengrass.us-gov-west-1.amazonaws.com",
|
||||||
CredentialScope: credentialScope{
|
CredentialScope: credentialScope{
|
||||||
|
@ -9833,6 +9892,18 @@ var awsisoPartition = partition{
|
||||||
"us-iso-east-1": endpoint{},
|
"us-iso-east-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"medialive": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"mediapackage": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"monitoring": service{
|
"monitoring": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -9909,6 +9980,12 @@ var awsisoPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"ssm": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"states": service{
|
"states": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
|
19
vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go
generated
vendored
19
vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go
generated
vendored
|
@ -9,6 +9,7 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/processcreds"
|
"github.com/aws/aws-sdk-go/aws/credentials/processcreds"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials/ssocreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/defaults"
|
"github.com/aws/aws-sdk-go/aws/defaults"
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
@ -100,6 +101,9 @@ func resolveCredsFromProfile(cfg *aws.Config,
|
||||||
sharedCfg.Creds,
|
sharedCfg.Creds,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
case sharedCfg.hasSSOConfiguration():
|
||||||
|
creds = resolveSSOCredentials(cfg, sharedCfg, handlers)
|
||||||
|
|
||||||
case len(sharedCfg.CredentialProcess) != 0:
|
case len(sharedCfg.CredentialProcess) != 0:
|
||||||
// Get credentials from CredentialProcess
|
// Get credentials from CredentialProcess
|
||||||
creds = processcreds.NewCredentials(sharedCfg.CredentialProcess)
|
creds = processcreds.NewCredentials(sharedCfg.CredentialProcess)
|
||||||
|
@ -151,6 +155,21 @@ func resolveCredsFromProfile(cfg *aws.Config,
|
||||||
return creds, nil
|
return creds, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func resolveSSOCredentials(cfg *aws.Config, sharedCfg sharedConfig, handlers request.Handlers) *credentials.Credentials {
|
||||||
|
cfgCopy := cfg.Copy()
|
||||||
|
cfgCopy.Region = &sharedCfg.SSORegion
|
||||||
|
|
||||||
|
return ssocreds.NewCredentials(
|
||||||
|
&Session{
|
||||||
|
Config: cfgCopy,
|
||||||
|
Handlers: handlers.Copy(),
|
||||||
|
},
|
||||||
|
sharedCfg.SSOAccountID,
|
||||||
|
sharedCfg.SSORoleName,
|
||||||
|
sharedCfg.SSOStartURL,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// valid credential source values
|
// valid credential source values
|
||||||
const (
|
const (
|
||||||
credSourceEc2Metadata = "Ec2InstanceMetadata"
|
credSourceEc2Metadata = "Ec2InstanceMetadata"
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/session/session.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/session/session.go
generated
vendored
|
@ -36,7 +36,7 @@ const (
|
||||||
|
|
||||||
// ErrSharedConfigSourceCollision will be returned if a section contains both
|
// ErrSharedConfigSourceCollision will be returned if a section contains both
|
||||||
// source_profile and credential_source
|
// source_profile and credential_source
|
||||||
var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only source profile or credential source can be specified, not both", nil)
|
var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only one credential type may be specified per profile: source profile, credential source, credential process, web identity token, or sso", nil)
|
||||||
|
|
||||||
// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment
|
// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment
|
||||||
// variables are empty and Environment was set as the credential source
|
// variables are empty and Environment was set as the credential source
|
||||||
|
|
80
vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
generated
vendored
80
vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
generated
vendored
|
@ -2,6 +2,7 @@ package session
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
@ -25,6 +26,12 @@ const (
|
||||||
roleSessionNameKey = `role_session_name` // optional
|
roleSessionNameKey = `role_session_name` // optional
|
||||||
roleDurationSecondsKey = "duration_seconds" // optional
|
roleDurationSecondsKey = "duration_seconds" // optional
|
||||||
|
|
||||||
|
// AWS Single Sign-On (AWS SSO) group
|
||||||
|
ssoAccountIDKey = "sso_account_id"
|
||||||
|
ssoRegionKey = "sso_region"
|
||||||
|
ssoRoleNameKey = "sso_role_name"
|
||||||
|
ssoStartURL = "sso_start_url"
|
||||||
|
|
||||||
// CSM options
|
// CSM options
|
||||||
csmEnabledKey = `csm_enabled`
|
csmEnabledKey = `csm_enabled`
|
||||||
csmHostKey = `csm_host`
|
csmHostKey = `csm_host`
|
||||||
|
@ -78,6 +85,11 @@ type sharedConfig struct {
|
||||||
CredentialProcess string
|
CredentialProcess string
|
||||||
WebIdentityTokenFile string
|
WebIdentityTokenFile string
|
||||||
|
|
||||||
|
SSOAccountID string
|
||||||
|
SSORegion string
|
||||||
|
SSORoleName string
|
||||||
|
SSOStartURL string
|
||||||
|
|
||||||
RoleARN string
|
RoleARN string
|
||||||
RoleSessionName string
|
RoleSessionName string
|
||||||
ExternalID string
|
ExternalID string
|
||||||
|
@ -217,9 +229,9 @@ func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile s
|
||||||
cfg.clearAssumeRoleOptions()
|
cfg.clearAssumeRoleOptions()
|
||||||
} else {
|
} else {
|
||||||
// First time a profile has been seen, It must either be a assume role
|
// First time a profile has been seen, It must either be a assume role
|
||||||
// or credentials. Assert if the credential type requires a role ARN,
|
// credentials, or SSO. Assert if the credential type requires a role ARN,
|
||||||
// the ARN is also set.
|
// the ARN is also set, or validate that the SSO configuration is complete.
|
||||||
if err := cfg.validateCredentialsRequireARN(profile); err != nil {
|
if err := cfg.validateCredentialsConfig(profile); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -312,6 +324,12 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, e
|
||||||
}
|
}
|
||||||
cfg.S3UsEast1RegionalEndpoint = sre
|
cfg.S3UsEast1RegionalEndpoint = sre
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AWS Single Sign-On (AWS SSO)
|
||||||
|
updateString(&cfg.SSOAccountID, section, ssoAccountIDKey)
|
||||||
|
updateString(&cfg.SSORegion, section, ssoRegionKey)
|
||||||
|
updateString(&cfg.SSORoleName, section, ssoRoleNameKey)
|
||||||
|
updateString(&cfg.SSOStartURL, section, ssoStartURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
updateString(&cfg.CredentialProcess, section, credentialProcessKey)
|
updateString(&cfg.CredentialProcess, section, credentialProcessKey)
|
||||||
|
@ -342,6 +360,18 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, e
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *sharedConfig) validateCredentialsConfig(profile string) error {
|
||||||
|
if err := cfg.validateCredentialsRequireARN(profile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cfg.validateSSOConfiguration(profile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error {
|
func (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error {
|
||||||
var credSource string
|
var credSource string
|
||||||
|
|
||||||
|
@ -371,6 +401,7 @@ func (cfg *sharedConfig) validateCredentialType() error {
|
||||||
len(cfg.CredentialSource) != 0,
|
len(cfg.CredentialSource) != 0,
|
||||||
len(cfg.CredentialProcess) != 0,
|
len(cfg.CredentialProcess) != 0,
|
||||||
len(cfg.WebIdentityTokenFile) != 0,
|
len(cfg.WebIdentityTokenFile) != 0,
|
||||||
|
cfg.hasSSOConfiguration(),
|
||||||
) {
|
) {
|
||||||
return ErrSharedConfigSourceCollision
|
return ErrSharedConfigSourceCollision
|
||||||
}
|
}
|
||||||
|
@ -378,12 +409,43 @@ func (cfg *sharedConfig) validateCredentialType() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *sharedConfig) validateSSOConfiguration(profile string) error {
|
||||||
|
if !cfg.hasSSOConfiguration() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var missing []string
|
||||||
|
if len(cfg.SSOAccountID) == 0 {
|
||||||
|
missing = append(missing, ssoAccountIDKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(cfg.SSORegion) == 0 {
|
||||||
|
missing = append(missing, ssoRegionKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(cfg.SSORoleName) == 0 {
|
||||||
|
missing = append(missing, ssoRoleNameKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(cfg.SSOStartURL) == 0 {
|
||||||
|
missing = append(missing, ssoStartURL)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(missing) > 0 {
|
||||||
|
return fmt.Errorf("profile %q is configured to use SSO but is missing required configuration: %s",
|
||||||
|
profile, strings.Join(missing, ", "))
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (cfg *sharedConfig) hasCredentials() bool {
|
func (cfg *sharedConfig) hasCredentials() bool {
|
||||||
switch {
|
switch {
|
||||||
case len(cfg.SourceProfileName) != 0:
|
case len(cfg.SourceProfileName) != 0:
|
||||||
case len(cfg.CredentialSource) != 0:
|
case len(cfg.CredentialSource) != 0:
|
||||||
case len(cfg.CredentialProcess) != 0:
|
case len(cfg.CredentialProcess) != 0:
|
||||||
case len(cfg.WebIdentityTokenFile) != 0:
|
case len(cfg.WebIdentityTokenFile) != 0:
|
||||||
|
case cfg.hasSSOConfiguration():
|
||||||
case cfg.Creds.HasKeys():
|
case cfg.Creds.HasKeys():
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
|
@ -407,6 +469,18 @@ func (cfg *sharedConfig) clearAssumeRoleOptions() {
|
||||||
cfg.SourceProfileName = ""
|
cfg.SourceProfileName = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *sharedConfig) hasSSOConfiguration() bool {
|
||||||
|
switch {
|
||||||
|
case len(cfg.SSOAccountID) != 0:
|
||||||
|
case len(cfg.SSORegion) != 0:
|
||||||
|
case len(cfg.SSORoleName) != 0:
|
||||||
|
case len(cfg.SSOStartURL) != 0:
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func oneOrNone(bs ...bool) bool {
|
func oneOrNone(bs ...bool) bool {
|
||||||
var count int
|
var count int
|
||||||
|
|
||||||
|
|
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.36.25"
|
const SDKVersion = "1.37.1"
|
||||||
|
|
44
vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
generated
vendored
44
vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
generated
vendored
|
@ -1,9 +1,10 @@
|
||||||
package protocol
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"net"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ValidateEndpointHostHandler is a request handler that will validate the
|
// ValidateEndpointHostHandler is a request handler that will validate the
|
||||||
|
@ -22,8 +23,26 @@ var ValidateEndpointHostHandler = request.NamedHandler{
|
||||||
// 3986 host. Returns error if the host is not valid.
|
// 3986 host. Returns error if the host is not valid.
|
||||||
func ValidateEndpointHost(opName, host string) error {
|
func ValidateEndpointHost(opName, host string) error {
|
||||||
paramErrs := request.ErrInvalidParams{Context: opName}
|
paramErrs := request.ErrInvalidParams{Context: opName}
|
||||||
labels := strings.Split(host, ".")
|
|
||||||
|
|
||||||
|
var hostname string
|
||||||
|
var port string
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if strings.Contains(host, ":") {
|
||||||
|
hostname, port, err = net.SplitHostPort(host)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
paramErrs.Add(request.NewErrParamFormat("endpoint", err.Error(), host))
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ValidPortNumber(port) {
|
||||||
|
paramErrs.Add(request.NewErrParamFormat("endpoint port number", "[0-65535]", port))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
hostname = host
|
||||||
|
}
|
||||||
|
|
||||||
|
labels := strings.Split(hostname, ".")
|
||||||
for i, label := range labels {
|
for i, label := range labels {
|
||||||
if i == len(labels)-1 && len(label) == 0 {
|
if i == len(labels)-1 && len(label) == 0 {
|
||||||
// Allow trailing dot for FQDN hosts.
|
// Allow trailing dot for FQDN hosts.
|
||||||
|
@ -36,7 +55,11 @@ func ValidateEndpointHost(opName, host string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(host) > 255 {
|
if len(hostname) == 0 {
|
||||||
|
paramErrs.Add(request.NewErrParamMinLen("endpoint host", 1))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(hostname) > 255 {
|
||||||
paramErrs.Add(request.NewErrParamMaxLen(
|
paramErrs.Add(request.NewErrParamMaxLen(
|
||||||
"endpoint host", 255, host,
|
"endpoint host", 255, host,
|
||||||
))
|
))
|
||||||
|
@ -66,3 +89,16 @@ func ValidHostLabel(label string) bool {
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidPortNumber return if the port is valid RFC 3986 port
|
||||||
|
func ValidPortNumber(port string) bool {
|
||||||
|
i, err := strconv.Atoi(port)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if i < 0 || i > 65535 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
88
vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go
generated
vendored
Normal file
88
vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
// Package jsonrpc provides JSON RPC utilities for serialization of AWS
|
||||||
|
// requests and responses.
|
||||||
|
package jsonrpc
|
||||||
|
|
||||||
|
//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/json.json build_test.go
|
||||||
|
//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/json.json unmarshal_test.go
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
var emptyJSON = []byte("{}")
|
||||||
|
|
||||||
|
// BuildHandler is a named request handler for building jsonrpc protocol
|
||||||
|
// requests
|
||||||
|
var BuildHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.jsonrpc.Build",
|
||||||
|
Fn: Build,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalHandler is a named request handler for unmarshaling jsonrpc
|
||||||
|
// protocol requests
|
||||||
|
var UnmarshalHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.jsonrpc.Unmarshal",
|
||||||
|
Fn: Unmarshal,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMetaHandler is a named request handler for unmarshaling jsonrpc
|
||||||
|
// protocol request metadata
|
||||||
|
var UnmarshalMetaHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.jsonrpc.UnmarshalMeta",
|
||||||
|
Fn: UnmarshalMeta,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build builds a JSON payload for a JSON RPC request.
|
||||||
|
func Build(req *request.Request) {
|
||||||
|
var buf []byte
|
||||||
|
var err error
|
||||||
|
if req.ParamsFilled() {
|
||||||
|
buf, err = jsonutil.BuildJSON(req.Params)
|
||||||
|
if err != nil {
|
||||||
|
req.Error = awserr.New(request.ErrCodeSerialization, "failed encoding JSON RPC request", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
buf = emptyJSON
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.ClientInfo.TargetPrefix != "" || string(buf) != "{}" {
|
||||||
|
req.SetBufferBody(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.ClientInfo.TargetPrefix != "" {
|
||||||
|
target := req.ClientInfo.TargetPrefix + "." + req.Operation.Name
|
||||||
|
req.HTTPRequest.Header.Add("X-Amz-Target", target)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only set the content type if one is not already specified and an
|
||||||
|
// JSONVersion is specified.
|
||||||
|
if ct, v := req.HTTPRequest.Header.Get("Content-Type"), req.ClientInfo.JSONVersion; len(ct) == 0 && len(v) != 0 {
|
||||||
|
jsonVersion := req.ClientInfo.JSONVersion
|
||||||
|
req.HTTPRequest.Header.Set("Content-Type", "application/x-amz-json-"+jsonVersion)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal unmarshals a response for a JSON RPC service.
|
||||||
|
func Unmarshal(req *request.Request) {
|
||||||
|
defer req.HTTPResponse.Body.Close()
|
||||||
|
if req.DataFilled() {
|
||||||
|
err := jsonutil.UnmarshalJSON(req.Data, req.HTTPResponse.Body)
|
||||||
|
if err != nil {
|
||||||
|
req.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(request.ErrCodeSerialization, "failed decoding JSON RPC response", err),
|
||||||
|
req.HTTPResponse.StatusCode,
|
||||||
|
req.RequestID,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMeta unmarshals headers from a response for a JSON RPC service.
|
||||||
|
func UnmarshalMeta(req *request.Request) {
|
||||||
|
rest.UnmarshalMeta(req)
|
||||||
|
}
|
107
vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/unmarshal_error.go
generated
vendored
Normal file
107
vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/unmarshal_error.go
generated
vendored
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
package jsonrpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UnmarshalTypedError provides unmarshaling errors API response errors
|
||||||
|
// for both typed and untyped errors.
|
||||||
|
type UnmarshalTypedError struct {
|
||||||
|
exceptions map[string]func(protocol.ResponseMetadata) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewUnmarshalTypedError returns an UnmarshalTypedError initialized for the
|
||||||
|
// set of exception names to the error unmarshalers
|
||||||
|
func NewUnmarshalTypedError(exceptions map[string]func(protocol.ResponseMetadata) error) *UnmarshalTypedError {
|
||||||
|
return &UnmarshalTypedError{
|
||||||
|
exceptions: exceptions,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError attempts to unmarshal the HTTP response error as a known
|
||||||
|
// error type. If unable to unmarshal the error type, the generic SDK error
|
||||||
|
// type will be used.
|
||||||
|
func (u *UnmarshalTypedError) UnmarshalError(
|
||||||
|
resp *http.Response,
|
||||||
|
respMeta protocol.ResponseMetadata,
|
||||||
|
) (error, error) {
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
var jsonErr jsonErrorResponse
|
||||||
|
teeReader := io.TeeReader(resp.Body, &buf)
|
||||||
|
err := jsonutil.UnmarshalJSONError(&jsonErr, teeReader)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
body := ioutil.NopCloser(&buf)
|
||||||
|
|
||||||
|
// Code may be separated by hash(#), with the last element being the code
|
||||||
|
// used by the SDK.
|
||||||
|
codeParts := strings.SplitN(jsonErr.Code, "#", 2)
|
||||||
|
code := codeParts[len(codeParts)-1]
|
||||||
|
msg := jsonErr.Message
|
||||||
|
|
||||||
|
if fn, ok := u.exceptions[code]; ok {
|
||||||
|
// If exception code is know, use associated constructor to get a value
|
||||||
|
// for the exception that the JSON body can be unmarshaled into.
|
||||||
|
v := fn(respMeta)
|
||||||
|
err := jsonutil.UnmarshalJSONCaseInsensitive(v, body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// fallback to unmodeled generic exceptions
|
||||||
|
return awserr.NewRequestFailure(
|
||||||
|
awserr.New(code, msg, nil),
|
||||||
|
respMeta.StatusCode,
|
||||||
|
respMeta.RequestID,
|
||||||
|
), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalErrorHandler is a named request handler for unmarshaling jsonrpc
|
||||||
|
// protocol request errors
|
||||||
|
var UnmarshalErrorHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.jsonrpc.UnmarshalError",
|
||||||
|
Fn: UnmarshalError,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError unmarshals an error response for a JSON RPC service.
|
||||||
|
func UnmarshalError(req *request.Request) {
|
||||||
|
defer req.HTTPResponse.Body.Close()
|
||||||
|
|
||||||
|
var jsonErr jsonErrorResponse
|
||||||
|
err := jsonutil.UnmarshalJSONError(&jsonErr, req.HTTPResponse.Body)
|
||||||
|
if err != nil {
|
||||||
|
req.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(request.ErrCodeSerialization,
|
||||||
|
"failed to unmarshal error message", err),
|
||||||
|
req.HTTPResponse.StatusCode,
|
||||||
|
req.RequestID,
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
codes := strings.SplitN(jsonErr.Code, "#", 2)
|
||||||
|
req.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(codes[len(codes)-1], jsonErr.Message, nil),
|
||||||
|
req.HTTPResponse.StatusCode,
|
||||||
|
req.RequestID,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
type jsonErrorResponse struct {
|
||||||
|
Code string `json:"__type"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
59
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go
generated
vendored
Normal file
59
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
// Package restjson provides RESTful JSON serialization of AWS
|
||||||
|
// requests and responses.
|
||||||
|
package restjson
|
||||||
|
|
||||||
|
//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/rest-json.json build_test.go
|
||||||
|
//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/rest-json.json unmarshal_test.go
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BuildHandler is a named request handler for building restjson protocol
|
||||||
|
// requests
|
||||||
|
var BuildHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.Build",
|
||||||
|
Fn: Build,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalHandler is a named request handler for unmarshaling restjson
|
||||||
|
// protocol requests
|
||||||
|
var UnmarshalHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.Unmarshal",
|
||||||
|
Fn: Unmarshal,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMetaHandler is a named request handler for unmarshaling restjson
|
||||||
|
// protocol request metadata
|
||||||
|
var UnmarshalMetaHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.UnmarshalMeta",
|
||||||
|
Fn: UnmarshalMeta,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build builds a request for the REST JSON protocol.
|
||||||
|
func Build(r *request.Request) {
|
||||||
|
rest.Build(r)
|
||||||
|
|
||||||
|
if t := rest.PayloadType(r.Params); t == "structure" || t == "" {
|
||||||
|
if v := r.HTTPRequest.Header.Get("Content-Type"); len(v) == 0 {
|
||||||
|
r.HTTPRequest.Header.Set("Content-Type", "application/json")
|
||||||
|
}
|
||||||
|
jsonrpc.Build(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal unmarshals a response body for the REST JSON protocol.
|
||||||
|
func Unmarshal(r *request.Request) {
|
||||||
|
if t := rest.PayloadType(r.Data); t == "structure" || t == "" {
|
||||||
|
jsonrpc.Unmarshal(r)
|
||||||
|
} else {
|
||||||
|
rest.Unmarshal(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMeta unmarshals response headers for the REST JSON protocol.
|
||||||
|
func UnmarshalMeta(r *request.Request) {
|
||||||
|
rest.UnmarshalMeta(r)
|
||||||
|
}
|
134
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go
generated
vendored
Normal file
134
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go
generated
vendored
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
package restjson
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
errorTypeHeader = "X-Amzn-Errortype"
|
||||||
|
errorMessageHeader = "X-Amzn-Errormessage"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UnmarshalTypedError provides unmarshaling errors API response errors
|
||||||
|
// for both typed and untyped errors.
|
||||||
|
type UnmarshalTypedError struct {
|
||||||
|
exceptions map[string]func(protocol.ResponseMetadata) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewUnmarshalTypedError returns an UnmarshalTypedError initialized for the
|
||||||
|
// set of exception names to the error unmarshalers
|
||||||
|
func NewUnmarshalTypedError(exceptions map[string]func(protocol.ResponseMetadata) error) *UnmarshalTypedError {
|
||||||
|
return &UnmarshalTypedError{
|
||||||
|
exceptions: exceptions,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError attempts to unmarshal the HTTP response error as a known
|
||||||
|
// error type. If unable to unmarshal the error type, the generic SDK error
|
||||||
|
// type will be used.
|
||||||
|
func (u *UnmarshalTypedError) UnmarshalError(
|
||||||
|
resp *http.Response,
|
||||||
|
respMeta protocol.ResponseMetadata,
|
||||||
|
) (error, error) {
|
||||||
|
|
||||||
|
code := resp.Header.Get(errorTypeHeader)
|
||||||
|
msg := resp.Header.Get(errorMessageHeader)
|
||||||
|
|
||||||
|
body := resp.Body
|
||||||
|
if len(code) == 0 {
|
||||||
|
// If unable to get code from HTTP headers have to parse JSON message
|
||||||
|
// to determine what kind of exception this will be.
|
||||||
|
var buf bytes.Buffer
|
||||||
|
var jsonErr jsonErrorResponse
|
||||||
|
teeReader := io.TeeReader(resp.Body, &buf)
|
||||||
|
err := jsonutil.UnmarshalJSONError(&jsonErr, teeReader)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
body = ioutil.NopCloser(&buf)
|
||||||
|
code = jsonErr.Code
|
||||||
|
msg = jsonErr.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
// If code has colon separators remove them so can compare against modeled
|
||||||
|
// exception names.
|
||||||
|
code = strings.SplitN(code, ":", 2)[0]
|
||||||
|
|
||||||
|
if fn, ok := u.exceptions[code]; ok {
|
||||||
|
// If exception code is know, use associated constructor to get a value
|
||||||
|
// for the exception that the JSON body can be unmarshaled into.
|
||||||
|
v := fn(respMeta)
|
||||||
|
if err := jsonutil.UnmarshalJSONCaseInsensitive(v, body); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rest.UnmarshalResponse(resp, v, true); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// fallback to unmodeled generic exceptions
|
||||||
|
return awserr.NewRequestFailure(
|
||||||
|
awserr.New(code, msg, nil),
|
||||||
|
respMeta.StatusCode,
|
||||||
|
respMeta.RequestID,
|
||||||
|
), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalErrorHandler is a named request handler for unmarshaling restjson
|
||||||
|
// protocol request errors
|
||||||
|
var UnmarshalErrorHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.UnmarshalError",
|
||||||
|
Fn: UnmarshalError,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError unmarshals a response error for the REST JSON protocol.
|
||||||
|
func UnmarshalError(r *request.Request) {
|
||||||
|
defer r.HTTPResponse.Body.Close()
|
||||||
|
|
||||||
|
var jsonErr jsonErrorResponse
|
||||||
|
err := jsonutil.UnmarshalJSONError(&jsonErr, r.HTTPResponse.Body)
|
||||||
|
if err != nil {
|
||||||
|
r.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(request.ErrCodeSerialization,
|
||||||
|
"failed to unmarshal response error", err),
|
||||||
|
r.HTTPResponse.StatusCode,
|
||||||
|
r.RequestID,
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
code := r.HTTPResponse.Header.Get(errorTypeHeader)
|
||||||
|
if code == "" {
|
||||||
|
code = jsonErr.Code
|
||||||
|
}
|
||||||
|
msg := r.HTTPResponse.Header.Get(errorMessageHeader)
|
||||||
|
if msg == "" {
|
||||||
|
msg = jsonErr.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
code = strings.SplitN(code, ":", 2)[0]
|
||||||
|
r.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(code, jsonErr.Message, nil),
|
||||||
|
r.HTTPResponse.StatusCode,
|
||||||
|
r.RequestID,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
type jsonErrorResponse struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
5
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
generated
vendored
5
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
generated
vendored
|
@ -109,6 +109,9 @@ type UploadOutput struct {
|
||||||
// The ID for a multipart upload to S3. In the case of an error the error
|
// The ID for a multipart upload to S3. In the case of an error the error
|
||||||
// can be cast to the MultiUploadFailure interface to extract the upload ID.
|
// can be cast to the MultiUploadFailure interface to extract the upload ID.
|
||||||
UploadID string
|
UploadID string
|
||||||
|
|
||||||
|
// Entity tag of the object.
|
||||||
|
ETag *string
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithUploaderRequestOptions appends to the Uploader's API request options.
|
// WithUploaderRequestOptions appends to the Uploader's API request options.
|
||||||
|
@ -527,6 +530,7 @@ func (u *uploader) singlePart(r io.ReadSeeker, cleanup func()) (*UploadOutput, e
|
||||||
return &UploadOutput{
|
return &UploadOutput{
|
||||||
Location: url,
|
Location: url,
|
||||||
VersionID: out.VersionId,
|
VersionID: out.VersionId,
|
||||||
|
ETag: out.ETag,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,6 +636,7 @@ func (u *multiuploader) upload(firstBuf io.ReadSeeker, cleanup func()) (*UploadO
|
||||||
Location: uploadLocation,
|
Location: uploadLocation,
|
||||||
VersionID: complete.VersionId,
|
VersionID: complete.VersionId,
|
||||||
UploadID: u.uploadID,
|
UploadID: u.uploadID,
|
||||||
|
ETag: complete.ETag,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1210
vendor/github.com/aws/aws-sdk-go/service/sso/api.go
generated
vendored
Normal file
1210
vendor/github.com/aws/aws-sdk-go/service/sso/api.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
44
vendor/github.com/aws/aws-sdk-go/service/sso/doc.go
generated
vendored
Normal file
44
vendor/github.com/aws/aws-sdk-go/service/sso/doc.go
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package sso provides the client and types for making API
|
||||||
|
// requests to AWS Single Sign-On.
|
||||||
|
//
|
||||||
|
// AWS Single Sign-On Portal is a web service that makes it easy for you to
|
||||||
|
// assign user access to AWS SSO resources such as the user portal. Users can
|
||||||
|
// get AWS account applications and roles assigned to them and get federated
|
||||||
|
// into the application.
|
||||||
|
//
|
||||||
|
// For general information about AWS SSO, see What is AWS Single Sign-On? (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
|
||||||
|
// in the AWS SSO User Guide.
|
||||||
|
//
|
||||||
|
// This API reference guide describes the AWS SSO Portal operations that you
|
||||||
|
// can call programatically and includes detailed information on data types
|
||||||
|
// and errors.
|
||||||
|
//
|
||||||
|
// AWS provides SDKs that consist of libraries and sample code for various programming
|
||||||
|
// languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs
|
||||||
|
// provide a convenient way to create programmatic access to AWS SSO and other
|
||||||
|
// AWS services. For more information about the AWS SDKs, including how to download
|
||||||
|
// and install them, see Tools for Amazon Web Services (http://aws.amazon.com/tools/).
|
||||||
|
//
|
||||||
|
// See https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10 for more information on this service.
|
||||||
|
//
|
||||||
|
// See sso package documentation for more information.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/
|
||||||
|
//
|
||||||
|
// Using the Client
|
||||||
|
//
|
||||||
|
// To contact AWS Single Sign-On with the SDK use the New function to create
|
||||||
|
// a new service client. With that client you can make API requests to the service.
|
||||||
|
// These clients are safe to use concurrently.
|
||||||
|
//
|
||||||
|
// See the SDK's documentation for more information on how to use the SDK.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/
|
||||||
|
//
|
||||||
|
// See aws.Config documentation for more information on configuring SDK clients.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config
|
||||||
|
//
|
||||||
|
// See the AWS Single Sign-On client SSO for more
|
||||||
|
// information on creating client for this service.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/#New
|
||||||
|
package sso
|
44
vendor/github.com/aws/aws-sdk-go/service/sso/errors.go
generated
vendored
Normal file
44
vendor/github.com/aws/aws-sdk-go/service/sso/errors.go
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
package sso
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
|
||||||
|
// ErrCodeInvalidRequestException for service response error code
|
||||||
|
// "InvalidRequestException".
|
||||||
|
//
|
||||||
|
// Indicates that a problem occurred with the input to the request. For example,
|
||||||
|
// a required parameter might be missing or out of range.
|
||||||
|
ErrCodeInvalidRequestException = "InvalidRequestException"
|
||||||
|
|
||||||
|
// ErrCodeResourceNotFoundException for service response error code
|
||||||
|
// "ResourceNotFoundException".
|
||||||
|
//
|
||||||
|
// The specified resource doesn't exist.
|
||||||
|
ErrCodeResourceNotFoundException = "ResourceNotFoundException"
|
||||||
|
|
||||||
|
// ErrCodeTooManyRequestsException for service response error code
|
||||||
|
// "TooManyRequestsException".
|
||||||
|
//
|
||||||
|
// Indicates that the request is being made too frequently and is more than
|
||||||
|
// what the server can handle.
|
||||||
|
ErrCodeTooManyRequestsException = "TooManyRequestsException"
|
||||||
|
|
||||||
|
// ErrCodeUnauthorizedException for service response error code
|
||||||
|
// "UnauthorizedException".
|
||||||
|
//
|
||||||
|
// Indicates that the request is not authorized. This can happen due to an invalid
|
||||||
|
// access token in the request.
|
||||||
|
ErrCodeUnauthorizedException = "UnauthorizedException"
|
||||||
|
)
|
||||||
|
|
||||||
|
var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{
|
||||||
|
"InvalidRequestException": newErrorInvalidRequestException,
|
||||||
|
"ResourceNotFoundException": newErrorResourceNotFoundException,
|
||||||
|
"TooManyRequestsException": newErrorTooManyRequestsException,
|
||||||
|
"UnauthorizedException": newErrorUnauthorizedException,
|
||||||
|
}
|
104
vendor/github.com/aws/aws-sdk-go/service/sso/service.go
generated
vendored
Normal file
104
vendor/github.com/aws/aws-sdk-go/service/sso/service.go
generated
vendored
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
package sso
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/client"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/client/metadata"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/signer/v4"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/restjson"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SSO provides the API operation methods for making requests to
|
||||||
|
// AWS Single Sign-On. See this package's package overview docs
|
||||||
|
// for details on the service.
|
||||||
|
//
|
||||||
|
// SSO methods are safe to use concurrently. It is not safe to
|
||||||
|
// modify mutate any of the struct's properties though.
|
||||||
|
type SSO struct {
|
||||||
|
*client.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Used for custom client initialization logic
|
||||||
|
var initClient func(*client.Client)
|
||||||
|
|
||||||
|
// Used for custom request initialization logic
|
||||||
|
var initRequest func(*request.Request)
|
||||||
|
|
||||||
|
// Service information constants
|
||||||
|
const (
|
||||||
|
ServiceName = "SSO" // Name of service.
|
||||||
|
EndpointsID = "portal.sso" // ID to lookup a service endpoint with.
|
||||||
|
ServiceID = "SSO" // ServiceID is a unique identifier of a specific service.
|
||||||
|
)
|
||||||
|
|
||||||
|
// New creates a new instance of the SSO client with a session.
|
||||||
|
// If additional configuration is needed for the client instance use the optional
|
||||||
|
// aws.Config parameter to add your extra config.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// mySession := session.Must(session.NewSession())
|
||||||
|
//
|
||||||
|
// // Create a SSO client from just a session.
|
||||||
|
// svc := sso.New(mySession)
|
||||||
|
//
|
||||||
|
// // Create a SSO client with additional configuration
|
||||||
|
// svc := sso.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
|
||||||
|
func New(p client.ConfigProvider, cfgs ...*aws.Config) *SSO {
|
||||||
|
c := p.ClientConfig(EndpointsID, cfgs...)
|
||||||
|
if c.SigningNameDerived || len(c.SigningName) == 0 {
|
||||||
|
c.SigningName = "awsssoportal"
|
||||||
|
}
|
||||||
|
return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// newClient creates, initializes and returns a new service client instance.
|
||||||
|
func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *SSO {
|
||||||
|
svc := &SSO{
|
||||||
|
Client: client.New(
|
||||||
|
cfg,
|
||||||
|
metadata.ClientInfo{
|
||||||
|
ServiceName: ServiceName,
|
||||||
|
ServiceID: ServiceID,
|
||||||
|
SigningName: signingName,
|
||||||
|
SigningRegion: signingRegion,
|
||||||
|
PartitionID: partitionID,
|
||||||
|
Endpoint: endpoint,
|
||||||
|
APIVersion: "2019-06-10",
|
||||||
|
},
|
||||||
|
handlers,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handlers
|
||||||
|
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
|
||||||
|
svc.Handlers.Build.PushBackNamed(restjson.BuildHandler)
|
||||||
|
svc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler)
|
||||||
|
svc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler)
|
||||||
|
svc.Handlers.UnmarshalError.PushBackNamed(
|
||||||
|
protocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Run custom client initialization if present
|
||||||
|
if initClient != nil {
|
||||||
|
initClient(svc.Client)
|
||||||
|
}
|
||||||
|
|
||||||
|
return svc
|
||||||
|
}
|
||||||
|
|
||||||
|
// newRequest creates a new request for a SSO operation and runs any
|
||||||
|
// custom request initialization.
|
||||||
|
func (c *SSO) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
||||||
|
req := c.NewRequest(op, params, data)
|
||||||
|
|
||||||
|
// Run custom request initialization if present
|
||||||
|
if initRequest != nil {
|
||||||
|
initRequest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
return req
|
||||||
|
}
|
86
vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go
generated
vendored
Normal file
86
vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package ssoiface provides an interface to enable mocking the AWS Single Sign-On service client
|
||||||
|
// for testing your code.
|
||||||
|
//
|
||||||
|
// It is important to note that this interface will have breaking changes
|
||||||
|
// when the service model is updated and adds new API operations, paginators,
|
||||||
|
// and waiters.
|
||||||
|
package ssoiface
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sso"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SSOAPI provides an interface to enable mocking the
|
||||||
|
// sso.SSO service client's API operation,
|
||||||
|
// paginators, and waiters. This make unit testing your code that calls out
|
||||||
|
// to the SDK's service client's calls easier.
|
||||||
|
//
|
||||||
|
// The best way to use this interface is so the SDK's service client's calls
|
||||||
|
// can be stubbed out for unit testing your code with the SDK without needing
|
||||||
|
// to inject custom request handlers into the SDK's request pipeline.
|
||||||
|
//
|
||||||
|
// // myFunc uses an SDK service client to make a request to
|
||||||
|
// // AWS Single Sign-On.
|
||||||
|
// func myFunc(svc ssoiface.SSOAPI) bool {
|
||||||
|
// // Make svc.GetRoleCredentials request
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func main() {
|
||||||
|
// sess := session.New()
|
||||||
|
// svc := sso.New(sess)
|
||||||
|
//
|
||||||
|
// myFunc(svc)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// In your _test.go file:
|
||||||
|
//
|
||||||
|
// // Define a mock struct to be used in your unit tests of myFunc.
|
||||||
|
// type mockSSOClient struct {
|
||||||
|
// ssoiface.SSOAPI
|
||||||
|
// }
|
||||||
|
// func (m *mockSSOClient) GetRoleCredentials(input *sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error) {
|
||||||
|
// // mock response/functionality
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func TestMyFunc(t *testing.T) {
|
||||||
|
// // Setup Test
|
||||||
|
// mockSvc := &mockSSOClient{}
|
||||||
|
//
|
||||||
|
// myfunc(mockSvc)
|
||||||
|
//
|
||||||
|
// // Verify myFunc's functionality
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// It is important to note that this interface will have breaking changes
|
||||||
|
// when the service model is updated and adds new API operations, paginators,
|
||||||
|
// and waiters. Its suggested to use the pattern above for testing, or using
|
||||||
|
// tooling to generate mocks to satisfy the interfaces.
|
||||||
|
type SSOAPI interface {
|
||||||
|
GetRoleCredentials(*sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error)
|
||||||
|
GetRoleCredentialsWithContext(aws.Context, *sso.GetRoleCredentialsInput, ...request.Option) (*sso.GetRoleCredentialsOutput, error)
|
||||||
|
GetRoleCredentialsRequest(*sso.GetRoleCredentialsInput) (*request.Request, *sso.GetRoleCredentialsOutput)
|
||||||
|
|
||||||
|
ListAccountRoles(*sso.ListAccountRolesInput) (*sso.ListAccountRolesOutput, error)
|
||||||
|
ListAccountRolesWithContext(aws.Context, *sso.ListAccountRolesInput, ...request.Option) (*sso.ListAccountRolesOutput, error)
|
||||||
|
ListAccountRolesRequest(*sso.ListAccountRolesInput) (*request.Request, *sso.ListAccountRolesOutput)
|
||||||
|
|
||||||
|
ListAccountRolesPages(*sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool) error
|
||||||
|
ListAccountRolesPagesWithContext(aws.Context, *sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListAccounts(*sso.ListAccountsInput) (*sso.ListAccountsOutput, error)
|
||||||
|
ListAccountsWithContext(aws.Context, *sso.ListAccountsInput, ...request.Option) (*sso.ListAccountsOutput, error)
|
||||||
|
ListAccountsRequest(*sso.ListAccountsInput) (*request.Request, *sso.ListAccountsOutput)
|
||||||
|
|
||||||
|
ListAccountsPages(*sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool) error
|
||||||
|
ListAccountsPagesWithContext(aws.Context, *sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
Logout(*sso.LogoutInput) (*sso.LogoutOutput, error)
|
||||||
|
LogoutWithContext(aws.Context, *sso.LogoutInput, ...request.Option) (*sso.LogoutOutput, error)
|
||||||
|
LogoutRequest(*sso.LogoutInput) (*request.Request, *sso.LogoutOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ SSOAPI = (*sso.SSO)(nil)
|
13
vendor/github.com/fatih/color/README.md
generated
vendored
13
vendor/github.com/fatih/color/README.md
generated
vendored
|
@ -1,20 +1,11 @@
|
||||||
# Archived project. No maintenance.
|
# color [![](https://github.com/fatih/color/workflows/build/badge.svg)](https://github.com/fatih/color/actions) [![PkgGoDev](https://pkg.go.dev/badge/github.com/fatih/color)](https://pkg.go.dev/github.com/fatih/color)
|
||||||
|
|
||||||
This project is not maintained anymore and is archived. Feel free to fork and
|
|
||||||
make your own changes if needed. For more detail read my blog post: [Taking an indefinite sabbatical from my projects](https://arslan.io/2018/10/09/taking-an-indefinite-sabbatical-from-my-projects/)
|
|
||||||
|
|
||||||
Thanks to everyone for their valuable feedback and contributions.
|
|
||||||
|
|
||||||
|
|
||||||
# Color [![GoDoc](https://godoc.org/github.com/fatih/color?status.svg)](https://godoc.org/github.com/fatih/color)
|
|
||||||
|
|
||||||
Color lets you use colorized outputs in terms of [ANSI Escape
|
Color lets you use colorized outputs in terms of [ANSI Escape
|
||||||
Codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) in Go (Golang). It
|
Codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) in Go (Golang). It
|
||||||
has support for Windows too! The API can be used in several ways, pick one that
|
has support for Windows too! The API can be used in several ways, pick one that
|
||||||
suits you.
|
suits you.
|
||||||
|
|
||||||
|
![Color](https://user-images.githubusercontent.com/438920/96832689-03b3e000-13f4-11eb-9803-46f4c4de3406.jpg)
|
||||||
![Color](https://i.imgur.com/c1JI0lA.png)
|
|
||||||
|
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
4
vendor/github.com/fatih/color/go.mod
generated
vendored
4
vendor/github.com/fatih/color/go.mod
generated
vendored
|
@ -3,6 +3,6 @@ module github.com/fatih/color
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/mattn/go-colorable v0.1.4
|
github.com/mattn/go-colorable v0.1.8
|
||||||
github.com/mattn/go-isatty v0.0.11
|
github.com/mattn/go-isatty v0.0.12
|
||||||
)
|
)
|
||||||
|
|
15
vendor/github.com/fatih/color/go.sum
generated
vendored
15
vendor/github.com/fatih/color/go.sum
generated
vendored
|
@ -1,8 +1,7 @@
|
||||||
github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
|
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
|
||||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
||||||
github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
|
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||||
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
|
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
|
||||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
|
|
294
vendor/github.com/klauspost/compress/flate/gen_inflate.go
generated
vendored
294
vendor/github.com/klauspost/compress/flate/gen_inflate.go
generated
vendored
|
@ -1,294 +0,0 @@
|
||||||
// +build generate
|
|
||||||
|
|
||||||
//go:generate go run $GOFILE && gofmt -w inflate_gen.go
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
f, err := os.Create("inflate_gen.go")
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
types := []string{"*bytes.Buffer", "*bytes.Reader", "*bufio.Reader", "*strings.Reader"}
|
|
||||||
names := []string{"BytesBuffer", "BytesReader", "BufioReader", "StringsReader"}
|
|
||||||
imports := []string{"bytes", "bufio", "io", "strings", "math/bits"}
|
|
||||||
f.WriteString(`// Code generated by go generate gen_inflate.go. DO NOT EDIT.
|
|
||||||
|
|
||||||
package flate
|
|
||||||
|
|
||||||
import (
|
|
||||||
`)
|
|
||||||
|
|
||||||
for _, imp := range imports {
|
|
||||||
f.WriteString("\t\"" + imp + "\"\n")
|
|
||||||
}
|
|
||||||
f.WriteString(")\n\n")
|
|
||||||
|
|
||||||
template := `
|
|
||||||
|
|
||||||
// Decode a single Huffman block from f.
|
|
||||||
// hl and hd are the Huffman states for the lit/length values
|
|
||||||
// and the distance values, respectively. If hd == nil, using the
|
|
||||||
// fixed distance encoding associated with fixed Huffman blocks.
|
|
||||||
func (f *decompressor) $FUNCNAME$() {
|
|
||||||
const (
|
|
||||||
stateInit = iota // Zero value must be stateInit
|
|
||||||
stateDict
|
|
||||||
)
|
|
||||||
fr := f.r.($TYPE$)
|
|
||||||
|
|
||||||
switch f.stepState {
|
|
||||||
case stateInit:
|
|
||||||
goto readLiteral
|
|
||||||
case stateDict:
|
|
||||||
goto copyHistory
|
|
||||||
}
|
|
||||||
|
|
||||||
readLiteral:
|
|
||||||
// Read literal and/or (length, distance) according to RFC section 3.2.3.
|
|
||||||
{
|
|
||||||
var v int
|
|
||||||
{
|
|
||||||
// Inlined v, err := f.huffSym(f.hl)
|
|
||||||
// Since a huffmanDecoder can be empty or be composed of a degenerate tree
|
|
||||||
// with single element, huffSym must error on these two edge cases. In both
|
|
||||||
// cases, the chunks slice will be 0 for the invalid sequence, leading it
|
|
||||||
// satisfy the n == 0 check below.
|
|
||||||
n := uint(f.hl.maxRead)
|
|
||||||
// Optimization. Compiler isn't smart enough to keep f.b,f.nb in registers,
|
|
||||||
// but is smart enough to keep local variables in registers, so use nb and b,
|
|
||||||
// inline call to moreBits and reassign b,nb back to f on return.
|
|
||||||
nb, b := f.nb, f.b
|
|
||||||
for {
|
|
||||||
for nb < n {
|
|
||||||
c, err := fr.ReadByte()
|
|
||||||
if err != nil {
|
|
||||||
f.b = b
|
|
||||||
f.nb = nb
|
|
||||||
f.err = noEOF(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.roffset++
|
|
||||||
b |= uint32(c) << (nb & regSizeMaskUint32)
|
|
||||||
nb += 8
|
|
||||||
}
|
|
||||||
chunk := f.hl.chunks[b&(huffmanNumChunks-1)]
|
|
||||||
n = uint(chunk & huffmanCountMask)
|
|
||||||
if n > huffmanChunkBits {
|
|
||||||
chunk = f.hl.links[chunk>>huffmanValueShift][(b>>huffmanChunkBits)&f.hl.linkMask]
|
|
||||||
n = uint(chunk & huffmanCountMask)
|
|
||||||
}
|
|
||||||
if n <= nb {
|
|
||||||
if n == 0 {
|
|
||||||
f.b = b
|
|
||||||
f.nb = nb
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("huffsym: n==0")
|
|
||||||
}
|
|
||||||
f.err = CorruptInputError(f.roffset)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.b = b >> (n & regSizeMaskUint32)
|
|
||||||
f.nb = nb - n
|
|
||||||
v = int(chunk >> huffmanValueShift)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var length int
|
|
||||||
switch {
|
|
||||||
case v < 256:
|
|
||||||
f.dict.writeByte(byte(v))
|
|
||||||
if f.dict.availWrite() == 0 {
|
|
||||||
f.toRead = f.dict.readFlush()
|
|
||||||
f.step = (*decompressor).$FUNCNAME$
|
|
||||||
f.stepState = stateInit
|
|
||||||
return
|
|
||||||
}
|
|
||||||
goto readLiteral
|
|
||||||
case v == 256:
|
|
||||||
f.finishBlock()
|
|
||||||
return
|
|
||||||
// otherwise, reference to older data
|
|
||||||
case v < 265:
|
|
||||||
length = v - (257 - 3)
|
|
||||||
case v < maxNumLit:
|
|
||||||
val := decCodeToLen[(v - 257)]
|
|
||||||
length = int(val.length) + 3
|
|
||||||
n := uint(val.extra)
|
|
||||||
for f.nb < n {
|
|
||||||
c, err := fr.ReadByte()
|
|
||||||
if err != nil {
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("morebits n>0:", err)
|
|
||||||
}
|
|
||||||
f.err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.roffset++
|
|
||||||
f.b |= uint32(c) << f.nb
|
|
||||||
f.nb += 8
|
|
||||||
}
|
|
||||||
length += int(f.b & uint32(1<<(n®SizeMaskUint32)-1))
|
|
||||||
f.b >>= n & regSizeMaskUint32
|
|
||||||
f.nb -= n
|
|
||||||
default:
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println(v, ">= maxNumLit")
|
|
||||||
}
|
|
||||||
f.err = CorruptInputError(f.roffset)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var dist uint32
|
|
||||||
if f.hd == nil {
|
|
||||||
for f.nb < 5 {
|
|
||||||
c, err := fr.ReadByte()
|
|
||||||
if err != nil {
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("morebits f.nb<5:", err)
|
|
||||||
}
|
|
||||||
f.err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.roffset++
|
|
||||||
f.b |= uint32(c) << f.nb
|
|
||||||
f.nb += 8
|
|
||||||
}
|
|
||||||
dist = uint32(bits.Reverse8(uint8(f.b & 0x1F << 3)))
|
|
||||||
f.b >>= 5
|
|
||||||
f.nb -= 5
|
|
||||||
} else {
|
|
||||||
// Since a huffmanDecoder can be empty or be composed of a degenerate tree
|
|
||||||
// with single element, huffSym must error on these two edge cases. In both
|
|
||||||
// cases, the chunks slice will be 0 for the invalid sequence, leading it
|
|
||||||
// satisfy the n == 0 check below.
|
|
||||||
n := uint(f.hd.maxRead)
|
|
||||||
// Optimization. Compiler isn't smart enough to keep f.b,f.nb in registers,
|
|
||||||
// but is smart enough to keep local variables in registers, so use nb and b,
|
|
||||||
// inline call to moreBits and reassign b,nb back to f on return.
|
|
||||||
nb, b := f.nb, f.b
|
|
||||||
for {
|
|
||||||
for nb < n {
|
|
||||||
c, err := fr.ReadByte()
|
|
||||||
if err != nil {
|
|
||||||
f.b = b
|
|
||||||
f.nb = nb
|
|
||||||
f.err = noEOF(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.roffset++
|
|
||||||
b |= uint32(c) << (nb & regSizeMaskUint32)
|
|
||||||
nb += 8
|
|
||||||
}
|
|
||||||
chunk := f.hd.chunks[b&(huffmanNumChunks-1)]
|
|
||||||
n = uint(chunk & huffmanCountMask)
|
|
||||||
if n > huffmanChunkBits {
|
|
||||||
chunk = f.hd.links[chunk>>huffmanValueShift][(b>>huffmanChunkBits)&f.hd.linkMask]
|
|
||||||
n = uint(chunk & huffmanCountMask)
|
|
||||||
}
|
|
||||||
if n <= nb {
|
|
||||||
if n == 0 {
|
|
||||||
f.b = b
|
|
||||||
f.nb = nb
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("huffsym: n==0")
|
|
||||||
}
|
|
||||||
f.err = CorruptInputError(f.roffset)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.b = b >> (n & regSizeMaskUint32)
|
|
||||||
f.nb = nb - n
|
|
||||||
dist = uint32(chunk >> huffmanValueShift)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch {
|
|
||||||
case dist < 4:
|
|
||||||
dist++
|
|
||||||
case dist < maxNumDist:
|
|
||||||
nb := uint(dist-2) >> 1
|
|
||||||
// have 1 bit in bottom of dist, need nb more.
|
|
||||||
extra := (dist & 1) << (nb & regSizeMaskUint32)
|
|
||||||
for f.nb < nb {
|
|
||||||
c, err := fr.ReadByte()
|
|
||||||
if err != nil {
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("morebits f.nb<nb:", err)
|
|
||||||
}
|
|
||||||
f.err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.roffset++
|
|
||||||
f.b |= uint32(c) << f.nb
|
|
||||||
f.nb += 8
|
|
||||||
}
|
|
||||||
extra |= f.b & uint32(1<<(nb®SizeMaskUint32)-1)
|
|
||||||
f.b >>= nb & regSizeMaskUint32
|
|
||||||
f.nb -= nb
|
|
||||||
dist = 1<<((nb+1)®SizeMaskUint32) + 1 + extra
|
|
||||||
default:
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("dist too big:", dist, maxNumDist)
|
|
||||||
}
|
|
||||||
f.err = CorruptInputError(f.roffset)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// No check on length; encoding can be prescient.
|
|
||||||
if dist > uint32(f.dict.histSize()) {
|
|
||||||
if debugDecode {
|
|
||||||
fmt.Println("dist > f.dict.histSize():", dist, f.dict.histSize())
|
|
||||||
}
|
|
||||||
f.err = CorruptInputError(f.roffset)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
f.copyLen, f.copyDist = length, int(dist)
|
|
||||||
goto copyHistory
|
|
||||||
}
|
|
||||||
|
|
||||||
copyHistory:
|
|
||||||
// Perform a backwards copy according to RFC section 3.2.3.
|
|
||||||
{
|
|
||||||
cnt := f.dict.tryWriteCopy(f.copyDist, f.copyLen)
|
|
||||||
if cnt == 0 {
|
|
||||||
cnt = f.dict.writeCopy(f.copyDist, f.copyLen)
|
|
||||||
}
|
|
||||||
f.copyLen -= cnt
|
|
||||||
|
|
||||||
if f.dict.availWrite() == 0 || f.copyLen > 0 {
|
|
||||||
f.toRead = f.dict.readFlush()
|
|
||||||
f.step = (*decompressor).$FUNCNAME$ // We need to continue this work
|
|
||||||
f.stepState = stateDict
|
|
||||||
return
|
|
||||||
}
|
|
||||||
goto readLiteral
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
`
|
|
||||||
for i, t := range types {
|
|
||||||
s := strings.Replace(template, "$FUNCNAME$", "huffman"+names[i], -1)
|
|
||||||
s = strings.Replace(s, "$TYPE$", t, -1)
|
|
||||||
f.WriteString(s)
|
|
||||||
}
|
|
||||||
f.WriteString("func (f *decompressor) huffmanBlockDecoder() func() {\n")
|
|
||||||
f.WriteString("\tswitch f.r.(type) {\n")
|
|
||||||
for i, t := range types {
|
|
||||||
f.WriteString("\t\tcase " + t + ":\n")
|
|
||||||
f.WriteString("\t\t\treturn f.huffman" + names[i] + "\n")
|
|
||||||
}
|
|
||||||
f.WriteString("\t\tdefault:\n")
|
|
||||||
f.WriteString("\t\t\treturn f.huffmanBlockGeneric")
|
|
||||||
f.WriteString("\t}\n}\n")
|
|
||||||
}
|
|
4
vendor/github.com/klauspost/compress/huff0/README.md
generated
vendored
4
vendor/github.com/klauspost/compress/huff0/README.md
generated
vendored
|
@ -14,7 +14,9 @@ but it can be used as a secondary step to compressors (like Snappy) that does no
|
||||||
|
|
||||||
## News
|
## News
|
||||||
|
|
||||||
* Mar 2018: First implementation released. Consider this beta software for now.
|
This is used as part of the [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression package.
|
||||||
|
|
||||||
|
This ensures that most functionality is well tested.
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
|
|
7
vendor/github.com/klauspost/compress/zstd/decoder.go
generated
vendored
7
vendor/github.com/klauspost/compress/zstd/decoder.go
generated
vendored
|
@ -5,7 +5,6 @@
|
||||||
package zstd
|
package zstd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -179,11 +178,13 @@ func (d *Decoder) Reset(r io.Reader) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If bytes buffer and < 1MB, do sync decoding anyway.
|
// If bytes buffer and < 1MB, do sync decoding anyway.
|
||||||
if bb, ok := r.(*bytes.Buffer); ok && bb.Len() < 1<<20 {
|
if bb, ok := r.(byter); ok && bb.Len() < 1<<20 {
|
||||||
|
var bb2 byter
|
||||||
|
bb2 = bb
|
||||||
if debug {
|
if debug {
|
||||||
println("*bytes.Buffer detected, doing sync decode, len:", bb.Len())
|
println("*bytes.Buffer detected, doing sync decode, len:", bb.Len())
|
||||||
}
|
}
|
||||||
b := bb.Bytes()
|
b := bb2.Bytes()
|
||||||
var dst []byte
|
var dst []byte
|
||||||
if cap(d.current.b) > 0 {
|
if cap(d.current.b) > 0 {
|
||||||
dst = d.current.b
|
dst = d.current.b
|
||||||
|
|
8
vendor/github.com/klauspost/compress/zstd/zstd.go
generated
vendored
8
vendor/github.com/klauspost/compress/zstd/zstd.go
generated
vendored
|
@ -4,6 +4,7 @@
|
||||||
package zstd
|
package zstd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
"math"
|
"math"
|
||||||
|
@ -146,3 +147,10 @@ func load64(b []byte, i int) uint64 {
|
||||||
return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
|
return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
|
||||||
uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
|
uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type byter interface {
|
||||||
|
Bytes() []byte
|
||||||
|
Len() int
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ byter = &bytes.Buffer{}
|
||||||
|
|
28
vendor/github.com/mattn/go-colorable/colorable_windows.go
generated
vendored
28
vendor/github.com/mattn/go-colorable/colorable_windows.go
generated
vendored
|
@ -10,6 +10,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ const (
|
||||||
backgroundRed = 0x40
|
backgroundRed = 0x40
|
||||||
backgroundIntensity = 0x80
|
backgroundIntensity = 0x80
|
||||||
backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity)
|
backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity)
|
||||||
|
commonLvbUnderscore = 0x8000
|
||||||
|
|
||||||
cENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
|
cENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
|
||||||
)
|
)
|
||||||
|
@ -93,6 +95,7 @@ type Writer struct {
|
||||||
oldattr word
|
oldattr word
|
||||||
oldpos coord
|
oldpos coord
|
||||||
rest bytes.Buffer
|
rest bytes.Buffer
|
||||||
|
mutex sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewColorable returns new instance of Writer which handles escape sequence from File.
|
// NewColorable returns new instance of Writer which handles escape sequence from File.
|
||||||
|
@ -432,6 +435,8 @@ func atoiWithDefault(s string, def int) (int, error) {
|
||||||
|
|
||||||
// Write writes data on console
|
// Write writes data on console
|
||||||
func (w *Writer) Write(data []byte) (n int, err error) {
|
func (w *Writer) Write(data []byte) (n int, err error) {
|
||||||
|
w.mutex.Lock()
|
||||||
|
defer w.mutex.Unlock()
|
||||||
var csbi consoleScreenBufferInfo
|
var csbi consoleScreenBufferInfo
|
||||||
procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
|
procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
|
||||||
|
|
||||||
|
@ -683,14 +688,19 @@ loop:
|
||||||
switch {
|
switch {
|
||||||
case n == 0 || n == 100:
|
case n == 0 || n == 100:
|
||||||
attr = w.oldattr
|
attr = w.oldattr
|
||||||
case 1 <= n && n <= 5:
|
case n == 4:
|
||||||
|
attr |= commonLvbUnderscore
|
||||||
|
case (1 <= n && n <= 3) || n == 5:
|
||||||
attr |= foregroundIntensity
|
attr |= foregroundIntensity
|
||||||
case n == 7:
|
case n == 7 || n == 27:
|
||||||
attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)
|
attr =
|
||||||
case n == 22 || n == 25:
|
(attr &^ (foregroundMask | backgroundMask)) |
|
||||||
attr |= foregroundIntensity
|
((attr & foregroundMask) << 4) |
|
||||||
case n == 27:
|
((attr & backgroundMask) >> 4)
|
||||||
attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)
|
case n == 22:
|
||||||
|
attr &^= foregroundIntensity
|
||||||
|
case n == 24:
|
||||||
|
attr &^= commonLvbUnderscore
|
||||||
case 30 <= n && n <= 37:
|
case 30 <= n && n <= 37:
|
||||||
attr &= backgroundMask
|
attr &= backgroundMask
|
||||||
if (n-30)&1 != 0 {
|
if (n-30)&1 != 0 {
|
||||||
|
@ -709,7 +719,7 @@ loop:
|
||||||
n256setup()
|
n256setup()
|
||||||
}
|
}
|
||||||
attr &= backgroundMask
|
attr &= backgroundMask
|
||||||
attr |= n256foreAttr[n256]
|
attr |= n256foreAttr[n256%len(n256foreAttr)]
|
||||||
i += 2
|
i += 2
|
||||||
}
|
}
|
||||||
} else if len(token) == 5 && token[i+1] == "2" {
|
} else if len(token) == 5 && token[i+1] == "2" {
|
||||||
|
@ -751,7 +761,7 @@ loop:
|
||||||
n256setup()
|
n256setup()
|
||||||
}
|
}
|
||||||
attr &= foregroundMask
|
attr &= foregroundMask
|
||||||
attr |= n256backAttr[n256]
|
attr |= n256backAttr[n256%len(n256backAttr)]
|
||||||
i += 2
|
i += 2
|
||||||
}
|
}
|
||||||
} else if len(token) == 5 && token[i+1] == "2" {
|
} else if len(token) == 5 && token[i+1] == "2" {
|
||||||
|
|
14
vendor/github.com/mattn/go-runewidth/.travis.yml
generated
vendored
14
vendor/github.com/mattn/go-runewidth/.travis.yml
generated
vendored
|
@ -1,8 +1,16 @@
|
||||||
language: go
|
language: go
|
||||||
|
sudo: false
|
||||||
go:
|
go:
|
||||||
|
- 1.13.x
|
||||||
- tip
|
- tip
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- go get github.com/mattn/goveralls
|
- go get -t -v ./...
|
||||||
- go get golang.org/x/tools/cmd/cover
|
|
||||||
script:
|
script:
|
||||||
- $HOME/gopath/bin/goveralls -repotoken lAKAWPzcGsD3A8yBX3BGGtRUdJ6CaGERL
|
- go generate
|
||||||
|
- git diff --cached --exit-code
|
||||||
|
- ./go.test.sh
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|
|
@ -2,7 +2,7 @@ go-runewidth
|
||||||
============
|
============
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/mattn/go-runewidth.png?branch=master)](https://travis-ci.org/mattn/go-runewidth)
|
[![Build Status](https://travis-ci.org/mattn/go-runewidth.png?branch=master)](https://travis-ci.org/mattn/go-runewidth)
|
||||||
[![Coverage Status](https://coveralls.io/repos/mattn/go-runewidth/badge.png?branch=HEAD)](https://coveralls.io/r/mattn/go-runewidth?branch=HEAD)
|
[![Codecov](https://codecov.io/gh/mattn/go-runewidth/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-runewidth)
|
||||||
[![GoDoc](https://godoc.org/github.com/mattn/go-runewidth?status.svg)](http://godoc.org/github.com/mattn/go-runewidth)
|
[![GoDoc](https://godoc.org/github.com/mattn/go-runewidth?status.svg)](http://godoc.org/github.com/mattn/go-runewidth)
|
||||||
[![Go Report Card](https://goreportcard.com/badge/github.com/mattn/go-runewidth)](https://goreportcard.com/report/github.com/mattn/go-runewidth)
|
[![Go Report Card](https://goreportcard.com/badge/github.com/mattn/go-runewidth)](https://goreportcard.com/report/github.com/mattn/go-runewidth)
|
||||||
|
|
2
vendor/github.com/mattn/go-runewidth/go.mod
generated
vendored
2
vendor/github.com/mattn/go-runewidth/go.mod
generated
vendored
|
@ -1,3 +1,5 @@
|
||||||
module github.com/mattn/go-runewidth
|
module github.com/mattn/go-runewidth
|
||||||
|
|
||||||
go 1.9
|
go 1.9
|
||||||
|
|
||||||
|
require github.com/rivo/uniseg v0.1.0
|
||||||
|
|
2
vendor/github.com/mattn/go-runewidth/go.sum
generated
vendored
Normal file
2
vendor/github.com/mattn/go-runewidth/go.sum
generated
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
|
||||||
|
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
12
vendor/github.com/mattn/go-runewidth/go.test.sh
generated
vendored
Normal file
12
vendor/github.com/mattn/go-runewidth/go.test.sh
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
echo "" > coverage.txt
|
||||||
|
|
||||||
|
for d in $(go list ./... | grep -v vendor); do
|
||||||
|
go test -race -coverprofile=profile.out -covermode=atomic "$d"
|
||||||
|
if [ -f profile.out ]; then
|
||||||
|
cat profile.out >> coverage.txt
|
||||||
|
rm profile.out
|
||||||
|
fi
|
||||||
|
done
|
81
vendor/github.com/mattn/go-runewidth/runewidth.go
generated
vendored
81
vendor/github.com/mattn/go-runewidth/runewidth.go
generated
vendored
|
@ -2,6 +2,8 @@ package runewidth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/rivo/uniseg"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate go run script/generate.go
|
//go:generate go run script/generate.go
|
||||||
|
@ -10,9 +12,6 @@ var (
|
||||||
// EastAsianWidth will be set true if the current locale is CJK
|
// EastAsianWidth will be set true if the current locale is CJK
|
||||||
EastAsianWidth bool
|
EastAsianWidth bool
|
||||||
|
|
||||||
// ZeroWidthJoiner is flag to set to use UTR#51 ZWJ
|
|
||||||
ZeroWidthJoiner bool
|
|
||||||
|
|
||||||
// DefaultCondition is a condition in current locale
|
// DefaultCondition is a condition in current locale
|
||||||
DefaultCondition = &Condition{}
|
DefaultCondition = &Condition{}
|
||||||
)
|
)
|
||||||
|
@ -30,7 +29,6 @@ func handleEnv() {
|
||||||
}
|
}
|
||||||
// update DefaultCondition
|
// update DefaultCondition
|
||||||
DefaultCondition.EastAsianWidth = EastAsianWidth
|
DefaultCondition.EastAsianWidth = EastAsianWidth
|
||||||
DefaultCondition.ZeroWidthJoiner = ZeroWidthJoiner
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type interval struct {
|
type interval struct {
|
||||||
|
@ -50,7 +48,6 @@ func inTables(r rune, ts ...table) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func inTable(r rune, t table) bool {
|
func inTable(r rune, t table) bool {
|
||||||
// func (t table) IncludesRune(r rune) bool {
|
|
||||||
if r < t[0].first {
|
if r < t[0].first {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -86,15 +83,13 @@ var nonprint = table{
|
||||||
|
|
||||||
// Condition have flag EastAsianWidth whether the current locale is CJK or not.
|
// Condition have flag EastAsianWidth whether the current locale is CJK or not.
|
||||||
type Condition struct {
|
type Condition struct {
|
||||||
EastAsianWidth bool
|
EastAsianWidth bool
|
||||||
ZeroWidthJoiner bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCondition return new instance of Condition which is current locale.
|
// NewCondition return new instance of Condition which is current locale.
|
||||||
func NewCondition() *Condition {
|
func NewCondition() *Condition {
|
||||||
return &Condition{
|
return &Condition{
|
||||||
EastAsianWidth: EastAsianWidth,
|
EastAsianWidth: EastAsianWidth,
|
||||||
ZeroWidthJoiner: ZeroWidthJoiner,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,38 +106,20 @@ func (c *Condition) RuneWidth(r rune) int {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Condition) stringWidth(s string) (width int) {
|
|
||||||
for _, r := range []rune(s) {
|
|
||||||
width += c.RuneWidth(r)
|
|
||||||
}
|
|
||||||
return width
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Condition) stringWidthZeroJoiner(s string) (width int) {
|
|
||||||
r1, r2 := rune(0), rune(0)
|
|
||||||
for _, r := range []rune(s) {
|
|
||||||
if r == 0xFE0E || r == 0xFE0F {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
w := c.RuneWidth(r)
|
|
||||||
if r2 == 0x200D && inTables(r, emoji) && inTables(r1, emoji) {
|
|
||||||
if width < w {
|
|
||||||
width = w
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
width += w
|
|
||||||
}
|
|
||||||
r1, r2 = r2, r
|
|
||||||
}
|
|
||||||
return width
|
|
||||||
}
|
|
||||||
|
|
||||||
// StringWidth return width as you can see
|
// StringWidth return width as you can see
|
||||||
func (c *Condition) StringWidth(s string) (width int) {
|
func (c *Condition) StringWidth(s string) (width int) {
|
||||||
if c.ZeroWidthJoiner {
|
g := uniseg.NewGraphemes(s)
|
||||||
return c.stringWidthZeroJoiner(s)
|
for g.Next() {
|
||||||
|
var chWidth int
|
||||||
|
for _, r := range g.Runes() {
|
||||||
|
chWidth = c.RuneWidth(r)
|
||||||
|
if chWidth > 0 {
|
||||||
|
break // Our best guess at this point is to use the width of the first non-zero-width rune.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
width += chWidth
|
||||||
}
|
}
|
||||||
return c.stringWidth(s)
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Truncate return string truncated with w cells
|
// Truncate return string truncated with w cells
|
||||||
|
@ -150,19 +127,25 @@ func (c *Condition) Truncate(s string, w int, tail string) string {
|
||||||
if c.StringWidth(s) <= w {
|
if c.StringWidth(s) <= w {
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
r := []rune(s)
|
w -= c.StringWidth(tail)
|
||||||
tw := c.StringWidth(tail)
|
var width int
|
||||||
w -= tw
|
pos := len(s)
|
||||||
width := 0
|
g := uniseg.NewGraphemes(s)
|
||||||
i := 0
|
for g.Next() {
|
||||||
for ; i < len(r); i++ {
|
var chWidth int
|
||||||
cw := c.RuneWidth(r[i])
|
for _, r := range g.Runes() {
|
||||||
if width+cw > w {
|
chWidth = c.RuneWidth(r)
|
||||||
|
if chWidth > 0 {
|
||||||
|
break // See StringWidth() for details.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if width+chWidth > w {
|
||||||
|
pos, _ = g.Positions()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
width += cw
|
width += chWidth
|
||||||
}
|
}
|
||||||
return string(r[0:i]) + tail
|
return s[:pos] + tail
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrap return string wrapped with w cells
|
// Wrap return string wrapped with w cells
|
||||||
|
@ -170,7 +153,7 @@ func (c *Condition) Wrap(s string, w int) string {
|
||||||
width := 0
|
width := 0
|
||||||
out := ""
|
out := ""
|
||||||
for _, r := range []rune(s) {
|
for _, r := range []rune(s) {
|
||||||
cw := RuneWidth(r)
|
cw := c.RuneWidth(r)
|
||||||
if r == '\n' {
|
if r == '\n' {
|
||||||
out += string(r)
|
out += string(r)
|
||||||
width = 0
|
width = 0
|
||||||
|
|
5
vendor/github.com/mattn/go-runewidth/runewidth_posix.go
generated
vendored
5
vendor/github.com/mattn/go-runewidth/runewidth_posix.go
generated
vendored
|
@ -62,7 +62,10 @@ func isEastAsian(locale string) bool {
|
||||||
|
|
||||||
// IsEastAsian return true if the current locale is CJK
|
// IsEastAsian return true if the current locale is CJK
|
||||||
func IsEastAsian() bool {
|
func IsEastAsian() bool {
|
||||||
locale := os.Getenv("LC_CTYPE")
|
locale := os.Getenv("LC_ALL")
|
||||||
|
if locale == "" {
|
||||||
|
locale = os.Getenv("LC_CTYPE")
|
||||||
|
}
|
||||||
if locale == "" {
|
if locale == "" {
|
||||||
locale = os.Getenv("LANG")
|
locale = os.Getenv("LANG")
|
||||||
}
|
}
|
||||||
|
|
420
vendor/github.com/mattn/go-runewidth/runewidth_table.go
generated
vendored
420
vendor/github.com/mattn/go-runewidth/runewidth_table.go
generated
vendored
|
@ -1,20 +1,23 @@
|
||||||
|
// Code generated by script/generate.go. DO NOT EDIT.
|
||||||
|
|
||||||
package runewidth
|
package runewidth
|
||||||
|
|
||||||
var combining = table{
|
var combining = table{
|
||||||
{0x0300, 0x036F}, {0x0483, 0x0489}, {0x07EB, 0x07F3},
|
{0x0300, 0x036F}, {0x0483, 0x0489}, {0x07EB, 0x07F3},
|
||||||
{0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0D00, 0x0D01},
|
{0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0D00, 0x0D01},
|
||||||
{0x135D, 0x135F}, {0x1A7F, 0x1A7F}, {0x1AB0, 0x1ABE},
|
{0x135D, 0x135F}, {0x1A7F, 0x1A7F}, {0x1AB0, 0x1AC0},
|
||||||
{0x1B6B, 0x1B73}, {0x1DC0, 0x1DF9}, {0x1DFB, 0x1DFF},
|
{0x1B6B, 0x1B73}, {0x1DC0, 0x1DF9}, {0x1DFB, 0x1DFF},
|
||||||
{0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2DE0, 0x2DFF},
|
{0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2DE0, 0x2DFF},
|
||||||
{0x3099, 0x309A}, {0xA66F, 0xA672}, {0xA674, 0xA67D},
|
{0x3099, 0x309A}, {0xA66F, 0xA672}, {0xA674, 0xA67D},
|
||||||
{0xA69E, 0xA69F}, {0xA6F0, 0xA6F1}, {0xA8E0, 0xA8F1},
|
{0xA69E, 0xA69F}, {0xA6F0, 0xA6F1}, {0xA8E0, 0xA8F1},
|
||||||
{0xFE20, 0xFE2F}, {0x101FD, 0x101FD}, {0x10376, 0x1037A},
|
{0xFE20, 0xFE2F}, {0x101FD, 0x101FD}, {0x10376, 0x1037A},
|
||||||
{0x10F46, 0x10F50}, {0x11300, 0x11301}, {0x1133B, 0x1133C},
|
{0x10EAB, 0x10EAC}, {0x10F46, 0x10F50}, {0x11300, 0x11301},
|
||||||
{0x11366, 0x1136C}, {0x11370, 0x11374}, {0x16AF0, 0x16AF4},
|
{0x1133B, 0x1133C}, {0x11366, 0x1136C}, {0x11370, 0x11374},
|
||||||
{0x1D165, 0x1D169}, {0x1D16D, 0x1D172}, {0x1D17B, 0x1D182},
|
{0x16AF0, 0x16AF4}, {0x1D165, 0x1D169}, {0x1D16D, 0x1D172},
|
||||||
{0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD}, {0x1D242, 0x1D244},
|
{0x1D17B, 0x1D182}, {0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD},
|
||||||
{0x1E000, 0x1E006}, {0x1E008, 0x1E018}, {0x1E01B, 0x1E021},
|
{0x1D242, 0x1D244}, {0x1E000, 0x1E006}, {0x1E008, 0x1E018},
|
||||||
{0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, {0x1E8D0, 0x1E8D6},
|
{0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, {0x1E026, 0x1E02A},
|
||||||
|
{0x1E8D0, 0x1E8D6},
|
||||||
}
|
}
|
||||||
|
|
||||||
var doublewidth = table{
|
var doublewidth = table{
|
||||||
|
@ -32,29 +35,30 @@ var doublewidth = table{
|
||||||
{0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99},
|
{0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99},
|
||||||
{0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x2FFB},
|
{0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x2FFB},
|
||||||
{0x3000, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF},
|
{0x3000, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF},
|
||||||
{0x3105, 0x312F}, {0x3131, 0x318E}, {0x3190, 0x31BA},
|
{0x3105, 0x312F}, {0x3131, 0x318E}, {0x3190, 0x31E3},
|
||||||
{0x31C0, 0x31E3}, {0x31F0, 0x321E}, {0x3220, 0x3247},
|
{0x31F0, 0x321E}, {0x3220, 0x3247}, {0x3250, 0x4DBF},
|
||||||
{0x3250, 0x4DBF}, {0x4E00, 0xA48C}, {0xA490, 0xA4C6},
|
{0x4E00, 0xA48C}, {0xA490, 0xA4C6}, {0xA960, 0xA97C},
|
||||||
{0xA960, 0xA97C}, {0xAC00, 0xD7A3}, {0xF900, 0xFAFF},
|
{0xAC00, 0xD7A3}, {0xF900, 0xFAFF}, {0xFE10, 0xFE19},
|
||||||
{0xFE10, 0xFE19}, {0xFE30, 0xFE52}, {0xFE54, 0xFE66},
|
{0xFE30, 0xFE52}, {0xFE54, 0xFE66}, {0xFE68, 0xFE6B},
|
||||||
{0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, {0xFFE0, 0xFFE6},
|
{0xFF01, 0xFF60}, {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE4},
|
||||||
{0x16FE0, 0x16FE3}, {0x17000, 0x187F7}, {0x18800, 0x18AF2},
|
{0x16FF0, 0x16FF1}, {0x17000, 0x187F7}, {0x18800, 0x18CD5},
|
||||||
{0x1B000, 0x1B11E}, {0x1B150, 0x1B152}, {0x1B164, 0x1B167},
|
{0x18D00, 0x18D08}, {0x1B000, 0x1B11E}, {0x1B150, 0x1B152},
|
||||||
{0x1B170, 0x1B2FB}, {0x1F004, 0x1F004}, {0x1F0CF, 0x1F0CF},
|
{0x1B164, 0x1B167}, {0x1B170, 0x1B2FB}, {0x1F004, 0x1F004},
|
||||||
{0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A}, {0x1F200, 0x1F202},
|
{0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A},
|
||||||
{0x1F210, 0x1F23B}, {0x1F240, 0x1F248}, {0x1F250, 0x1F251},
|
{0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, {0x1F240, 0x1F248},
|
||||||
{0x1F260, 0x1F265}, {0x1F300, 0x1F320}, {0x1F32D, 0x1F335},
|
{0x1F250, 0x1F251}, {0x1F260, 0x1F265}, {0x1F300, 0x1F320},
|
||||||
{0x1F337, 0x1F37C}, {0x1F37E, 0x1F393}, {0x1F3A0, 0x1F3CA},
|
{0x1F32D, 0x1F335}, {0x1F337, 0x1F37C}, {0x1F37E, 0x1F393},
|
||||||
{0x1F3CF, 0x1F3D3}, {0x1F3E0, 0x1F3F0}, {0x1F3F4, 0x1F3F4},
|
{0x1F3A0, 0x1F3CA}, {0x1F3CF, 0x1F3D3}, {0x1F3E0, 0x1F3F0},
|
||||||
{0x1F3F8, 0x1F43E}, {0x1F440, 0x1F440}, {0x1F442, 0x1F4FC},
|
{0x1F3F4, 0x1F3F4}, {0x1F3F8, 0x1F43E}, {0x1F440, 0x1F440},
|
||||||
{0x1F4FF, 0x1F53D}, {0x1F54B, 0x1F54E}, {0x1F550, 0x1F567},
|
{0x1F442, 0x1F4FC}, {0x1F4FF, 0x1F53D}, {0x1F54B, 0x1F54E},
|
||||||
{0x1F57A, 0x1F57A}, {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A4},
|
{0x1F550, 0x1F567}, {0x1F57A, 0x1F57A}, {0x1F595, 0x1F596},
|
||||||
{0x1F5FB, 0x1F64F}, {0x1F680, 0x1F6C5}, {0x1F6CC, 0x1F6CC},
|
{0x1F5A4, 0x1F5A4}, {0x1F5FB, 0x1F64F}, {0x1F680, 0x1F6C5},
|
||||||
{0x1F6D0, 0x1F6D2}, {0x1F6D5, 0x1F6D5}, {0x1F6EB, 0x1F6EC},
|
{0x1F6CC, 0x1F6CC}, {0x1F6D0, 0x1F6D2}, {0x1F6D5, 0x1F6D7},
|
||||||
{0x1F6F4, 0x1F6FA}, {0x1F7E0, 0x1F7EB}, {0x1F90D, 0x1F971},
|
{0x1F6EB, 0x1F6EC}, {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB},
|
||||||
{0x1F973, 0x1F976}, {0x1F97A, 0x1F9A2}, {0x1F9A5, 0x1F9AA},
|
{0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F978},
|
||||||
{0x1F9AE, 0x1F9CA}, {0x1F9CD, 0x1F9FF}, {0x1FA70, 0x1FA73},
|
{0x1F97A, 0x1F9CB}, {0x1F9CD, 0x1F9FF}, {0x1FA70, 0x1FA74},
|
||||||
{0x1FA78, 0x1FA7A}, {0x1FA80, 0x1FA82}, {0x1FA90, 0x1FA95},
|
{0x1FA78, 0x1FA7A}, {0x1FA80, 0x1FA86}, {0x1FA90, 0x1FAA8},
|
||||||
|
{0x1FAB0, 0x1FAB6}, {0x1FAC0, 0x1FAC2}, {0x1FAD0, 0x1FAD6},
|
||||||
{0x20000, 0x2FFFD}, {0x30000, 0x3FFFD},
|
{0x20000, 0x2FFFD}, {0x30000, 0x3FFFD},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +155,7 @@ var neutral = table{
|
||||||
{0x0600, 0x061C}, {0x061E, 0x070D}, {0x070F, 0x074A},
|
{0x0600, 0x061C}, {0x061E, 0x070D}, {0x070F, 0x074A},
|
||||||
{0x074D, 0x07B1}, {0x07C0, 0x07FA}, {0x07FD, 0x082D},
|
{0x074D, 0x07B1}, {0x07C0, 0x07FA}, {0x07FD, 0x082D},
|
||||||
{0x0830, 0x083E}, {0x0840, 0x085B}, {0x085E, 0x085E},
|
{0x0830, 0x083E}, {0x0840, 0x085B}, {0x085E, 0x085E},
|
||||||
{0x0860, 0x086A}, {0x08A0, 0x08B4}, {0x08B6, 0x08BD},
|
{0x0860, 0x086A}, {0x08A0, 0x08B4}, {0x08B6, 0x08C7},
|
||||||
{0x08D3, 0x0983}, {0x0985, 0x098C}, {0x098F, 0x0990},
|
{0x08D3, 0x0983}, {0x0985, 0x098C}, {0x098F, 0x0990},
|
||||||
{0x0993, 0x09A8}, {0x09AA, 0x09B0}, {0x09B2, 0x09B2},
|
{0x0993, 0x09A8}, {0x09AA, 0x09B0}, {0x09B2, 0x09B2},
|
||||||
{0x09B6, 0x09B9}, {0x09BC, 0x09C4}, {0x09C7, 0x09C8},
|
{0x09B6, 0x09B9}, {0x09BC, 0x09C4}, {0x09C7, 0x09C8},
|
||||||
|
@ -170,7 +174,7 @@ var neutral = table{
|
||||||
{0x0B05, 0x0B0C}, {0x0B0F, 0x0B10}, {0x0B13, 0x0B28},
|
{0x0B05, 0x0B0C}, {0x0B0F, 0x0B10}, {0x0B13, 0x0B28},
|
||||||
{0x0B2A, 0x0B30}, {0x0B32, 0x0B33}, {0x0B35, 0x0B39},
|
{0x0B2A, 0x0B30}, {0x0B32, 0x0B33}, {0x0B35, 0x0B39},
|
||||||
{0x0B3C, 0x0B44}, {0x0B47, 0x0B48}, {0x0B4B, 0x0B4D},
|
{0x0B3C, 0x0B44}, {0x0B47, 0x0B48}, {0x0B4B, 0x0B4D},
|
||||||
{0x0B56, 0x0B57}, {0x0B5C, 0x0B5D}, {0x0B5F, 0x0B63},
|
{0x0B55, 0x0B57}, {0x0B5C, 0x0B5D}, {0x0B5F, 0x0B63},
|
||||||
{0x0B66, 0x0B77}, {0x0B82, 0x0B83}, {0x0B85, 0x0B8A},
|
{0x0B66, 0x0B77}, {0x0B82, 0x0B83}, {0x0B85, 0x0B8A},
|
||||||
{0x0B8E, 0x0B90}, {0x0B92, 0x0B95}, {0x0B99, 0x0B9A},
|
{0x0B8E, 0x0B90}, {0x0B92, 0x0B95}, {0x0B99, 0x0B9A},
|
||||||
{0x0B9C, 0x0B9C}, {0x0B9E, 0x0B9F}, {0x0BA3, 0x0BA4},
|
{0x0B9C, 0x0B9C}, {0x0B9E, 0x0B9F}, {0x0BA3, 0x0BA4},
|
||||||
|
@ -184,166 +188,169 @@ var neutral = table{
|
||||||
{0x0C92, 0x0CA8}, {0x0CAA, 0x0CB3}, {0x0CB5, 0x0CB9},
|
{0x0C92, 0x0CA8}, {0x0CAA, 0x0CB3}, {0x0CB5, 0x0CB9},
|
||||||
{0x0CBC, 0x0CC4}, {0x0CC6, 0x0CC8}, {0x0CCA, 0x0CCD},
|
{0x0CBC, 0x0CC4}, {0x0CC6, 0x0CC8}, {0x0CCA, 0x0CCD},
|
||||||
{0x0CD5, 0x0CD6}, {0x0CDE, 0x0CDE}, {0x0CE0, 0x0CE3},
|
{0x0CD5, 0x0CD6}, {0x0CDE, 0x0CDE}, {0x0CE0, 0x0CE3},
|
||||||
{0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF2}, {0x0D00, 0x0D03},
|
{0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF2}, {0x0D00, 0x0D0C},
|
||||||
{0x0D05, 0x0D0C}, {0x0D0E, 0x0D10}, {0x0D12, 0x0D44},
|
{0x0D0E, 0x0D10}, {0x0D12, 0x0D44}, {0x0D46, 0x0D48},
|
||||||
{0x0D46, 0x0D48}, {0x0D4A, 0x0D4F}, {0x0D54, 0x0D63},
|
{0x0D4A, 0x0D4F}, {0x0D54, 0x0D63}, {0x0D66, 0x0D7F},
|
||||||
{0x0D66, 0x0D7F}, {0x0D82, 0x0D83}, {0x0D85, 0x0D96},
|
{0x0D81, 0x0D83}, {0x0D85, 0x0D96}, {0x0D9A, 0x0DB1},
|
||||||
{0x0D9A, 0x0DB1}, {0x0DB3, 0x0DBB}, {0x0DBD, 0x0DBD},
|
{0x0DB3, 0x0DBB}, {0x0DBD, 0x0DBD}, {0x0DC0, 0x0DC6},
|
||||||
{0x0DC0, 0x0DC6}, {0x0DCA, 0x0DCA}, {0x0DCF, 0x0DD4},
|
{0x0DCA, 0x0DCA}, {0x0DCF, 0x0DD4}, {0x0DD6, 0x0DD6},
|
||||||
{0x0DD6, 0x0DD6}, {0x0DD8, 0x0DDF}, {0x0DE6, 0x0DEF},
|
{0x0DD8, 0x0DDF}, {0x0DE6, 0x0DEF}, {0x0DF2, 0x0DF4},
|
||||||
{0x0DF2, 0x0DF4}, {0x0E01, 0x0E3A}, {0x0E3F, 0x0E5B},
|
{0x0E01, 0x0E3A}, {0x0E3F, 0x0E5B}, {0x0E81, 0x0E82},
|
||||||
{0x0E81, 0x0E82}, {0x0E84, 0x0E84}, {0x0E86, 0x0E8A},
|
{0x0E84, 0x0E84}, {0x0E86, 0x0E8A}, {0x0E8C, 0x0EA3},
|
||||||
{0x0E8C, 0x0EA3}, {0x0EA5, 0x0EA5}, {0x0EA7, 0x0EBD},
|
{0x0EA5, 0x0EA5}, {0x0EA7, 0x0EBD}, {0x0EC0, 0x0EC4},
|
||||||
{0x0EC0, 0x0EC4}, {0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECD},
|
{0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECD}, {0x0ED0, 0x0ED9},
|
||||||
{0x0ED0, 0x0ED9}, {0x0EDC, 0x0EDF}, {0x0F00, 0x0F47},
|
{0x0EDC, 0x0EDF}, {0x0F00, 0x0F47}, {0x0F49, 0x0F6C},
|
||||||
{0x0F49, 0x0F6C}, {0x0F71, 0x0F97}, {0x0F99, 0x0FBC},
|
{0x0F71, 0x0F97}, {0x0F99, 0x0FBC}, {0x0FBE, 0x0FCC},
|
||||||
{0x0FBE, 0x0FCC}, {0x0FCE, 0x0FDA}, {0x1000, 0x10C5},
|
{0x0FCE, 0x0FDA}, {0x1000, 0x10C5}, {0x10C7, 0x10C7},
|
||||||
{0x10C7, 0x10C7}, {0x10CD, 0x10CD}, {0x10D0, 0x10FF},
|
{0x10CD, 0x10CD}, {0x10D0, 0x10FF}, {0x1160, 0x1248},
|
||||||
{0x1160, 0x1248}, {0x124A, 0x124D}, {0x1250, 0x1256},
|
{0x124A, 0x124D}, {0x1250, 0x1256}, {0x1258, 0x1258},
|
||||||
{0x1258, 0x1258}, {0x125A, 0x125D}, {0x1260, 0x1288},
|
{0x125A, 0x125D}, {0x1260, 0x1288}, {0x128A, 0x128D},
|
||||||
{0x128A, 0x128D}, {0x1290, 0x12B0}, {0x12B2, 0x12B5},
|
{0x1290, 0x12B0}, {0x12B2, 0x12B5}, {0x12B8, 0x12BE},
|
||||||
{0x12B8, 0x12BE}, {0x12C0, 0x12C0}, {0x12C2, 0x12C5},
|
{0x12C0, 0x12C0}, {0x12C2, 0x12C5}, {0x12C8, 0x12D6},
|
||||||
{0x12C8, 0x12D6}, {0x12D8, 0x1310}, {0x1312, 0x1315},
|
{0x12D8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135A},
|
||||||
{0x1318, 0x135A}, {0x135D, 0x137C}, {0x1380, 0x1399},
|
{0x135D, 0x137C}, {0x1380, 0x1399}, {0x13A0, 0x13F5},
|
||||||
{0x13A0, 0x13F5}, {0x13F8, 0x13FD}, {0x1400, 0x169C},
|
{0x13F8, 0x13FD}, {0x1400, 0x169C}, {0x16A0, 0x16F8},
|
||||||
{0x16A0, 0x16F8}, {0x1700, 0x170C}, {0x170E, 0x1714},
|
{0x1700, 0x170C}, {0x170E, 0x1714}, {0x1720, 0x1736},
|
||||||
{0x1720, 0x1736}, {0x1740, 0x1753}, {0x1760, 0x176C},
|
{0x1740, 0x1753}, {0x1760, 0x176C}, {0x176E, 0x1770},
|
||||||
{0x176E, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17DD},
|
{0x1772, 0x1773}, {0x1780, 0x17DD}, {0x17E0, 0x17E9},
|
||||||
{0x17E0, 0x17E9}, {0x17F0, 0x17F9}, {0x1800, 0x180E},
|
{0x17F0, 0x17F9}, {0x1800, 0x180E}, {0x1810, 0x1819},
|
||||||
{0x1810, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18AA},
|
{0x1820, 0x1878}, {0x1880, 0x18AA}, {0x18B0, 0x18F5},
|
||||||
{0x18B0, 0x18F5}, {0x1900, 0x191E}, {0x1920, 0x192B},
|
{0x1900, 0x191E}, {0x1920, 0x192B}, {0x1930, 0x193B},
|
||||||
{0x1930, 0x193B}, {0x1940, 0x1940}, {0x1944, 0x196D},
|
{0x1940, 0x1940}, {0x1944, 0x196D}, {0x1970, 0x1974},
|
||||||
{0x1970, 0x1974}, {0x1980, 0x19AB}, {0x19B0, 0x19C9},
|
{0x1980, 0x19AB}, {0x19B0, 0x19C9}, {0x19D0, 0x19DA},
|
||||||
{0x19D0, 0x19DA}, {0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E},
|
{0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E}, {0x1A60, 0x1A7C},
|
||||||
{0x1A60, 0x1A7C}, {0x1A7F, 0x1A89}, {0x1A90, 0x1A99},
|
{0x1A7F, 0x1A89}, {0x1A90, 0x1A99}, {0x1AA0, 0x1AAD},
|
||||||
{0x1AA0, 0x1AAD}, {0x1AB0, 0x1ABE}, {0x1B00, 0x1B4B},
|
{0x1AB0, 0x1AC0}, {0x1B00, 0x1B4B}, {0x1B50, 0x1B7C},
|
||||||
{0x1B50, 0x1B7C}, {0x1B80, 0x1BF3}, {0x1BFC, 0x1C37},
|
{0x1B80, 0x1BF3}, {0x1BFC, 0x1C37}, {0x1C3B, 0x1C49},
|
||||||
{0x1C3B, 0x1C49}, {0x1C4D, 0x1C88}, {0x1C90, 0x1CBA},
|
{0x1C4D, 0x1C88}, {0x1C90, 0x1CBA}, {0x1CBD, 0x1CC7},
|
||||||
{0x1CBD, 0x1CC7}, {0x1CD0, 0x1CFA}, {0x1D00, 0x1DF9},
|
{0x1CD0, 0x1CFA}, {0x1D00, 0x1DF9}, {0x1DFB, 0x1F15},
|
||||||
{0x1DFB, 0x1F15}, {0x1F18, 0x1F1D}, {0x1F20, 0x1F45},
|
{0x1F18, 0x1F1D}, {0x1F20, 0x1F45}, {0x1F48, 0x1F4D},
|
||||||
{0x1F48, 0x1F4D}, {0x1F50, 0x1F57}, {0x1F59, 0x1F59},
|
{0x1F50, 0x1F57}, {0x1F59, 0x1F59}, {0x1F5B, 0x1F5B},
|
||||||
{0x1F5B, 0x1F5B}, {0x1F5D, 0x1F5D}, {0x1F5F, 0x1F7D},
|
{0x1F5D, 0x1F5D}, {0x1F5F, 0x1F7D}, {0x1F80, 0x1FB4},
|
||||||
{0x1F80, 0x1FB4}, {0x1FB6, 0x1FC4}, {0x1FC6, 0x1FD3},
|
{0x1FB6, 0x1FC4}, {0x1FC6, 0x1FD3}, {0x1FD6, 0x1FDB},
|
||||||
{0x1FD6, 0x1FDB}, {0x1FDD, 0x1FEF}, {0x1FF2, 0x1FF4},
|
{0x1FDD, 0x1FEF}, {0x1FF2, 0x1FF4}, {0x1FF6, 0x1FFE},
|
||||||
{0x1FF6, 0x1FFE}, {0x2000, 0x200F}, {0x2011, 0x2012},
|
{0x2000, 0x200F}, {0x2011, 0x2012}, {0x2017, 0x2017},
|
||||||
{0x2017, 0x2017}, {0x201A, 0x201B}, {0x201E, 0x201F},
|
{0x201A, 0x201B}, {0x201E, 0x201F}, {0x2023, 0x2023},
|
||||||
{0x2023, 0x2023}, {0x2028, 0x202F}, {0x2031, 0x2031},
|
{0x2028, 0x202F}, {0x2031, 0x2031}, {0x2034, 0x2034},
|
||||||
{0x2034, 0x2034}, {0x2036, 0x203A}, {0x203C, 0x203D},
|
{0x2036, 0x203A}, {0x203C, 0x203D}, {0x203F, 0x2064},
|
||||||
{0x203F, 0x2064}, {0x2066, 0x2071}, {0x2075, 0x207E},
|
{0x2066, 0x2071}, {0x2075, 0x207E}, {0x2080, 0x2080},
|
||||||
{0x2080, 0x2080}, {0x2085, 0x208E}, {0x2090, 0x209C},
|
{0x2085, 0x208E}, {0x2090, 0x209C}, {0x20A0, 0x20A8},
|
||||||
{0x20A0, 0x20A8}, {0x20AA, 0x20AB}, {0x20AD, 0x20BF},
|
{0x20AA, 0x20AB}, {0x20AD, 0x20BF}, {0x20D0, 0x20F0},
|
||||||
{0x20D0, 0x20F0}, {0x2100, 0x2102}, {0x2104, 0x2104},
|
{0x2100, 0x2102}, {0x2104, 0x2104}, {0x2106, 0x2108},
|
||||||
{0x2106, 0x2108}, {0x210A, 0x2112}, {0x2114, 0x2115},
|
{0x210A, 0x2112}, {0x2114, 0x2115}, {0x2117, 0x2120},
|
||||||
{0x2117, 0x2120}, {0x2123, 0x2125}, {0x2127, 0x212A},
|
{0x2123, 0x2125}, {0x2127, 0x212A}, {0x212C, 0x2152},
|
||||||
{0x212C, 0x2152}, {0x2155, 0x215A}, {0x215F, 0x215F},
|
{0x2155, 0x215A}, {0x215F, 0x215F}, {0x216C, 0x216F},
|
||||||
{0x216C, 0x216F}, {0x217A, 0x2188}, {0x218A, 0x218B},
|
{0x217A, 0x2188}, {0x218A, 0x218B}, {0x219A, 0x21B7},
|
||||||
{0x219A, 0x21B7}, {0x21BA, 0x21D1}, {0x21D3, 0x21D3},
|
{0x21BA, 0x21D1}, {0x21D3, 0x21D3}, {0x21D5, 0x21E6},
|
||||||
{0x21D5, 0x21E6}, {0x21E8, 0x21FF}, {0x2201, 0x2201},
|
{0x21E8, 0x21FF}, {0x2201, 0x2201}, {0x2204, 0x2206},
|
||||||
{0x2204, 0x2206}, {0x2209, 0x220A}, {0x220C, 0x220E},
|
{0x2209, 0x220A}, {0x220C, 0x220E}, {0x2210, 0x2210},
|
||||||
{0x2210, 0x2210}, {0x2212, 0x2214}, {0x2216, 0x2219},
|
{0x2212, 0x2214}, {0x2216, 0x2219}, {0x221B, 0x221C},
|
||||||
{0x221B, 0x221C}, {0x2221, 0x2222}, {0x2224, 0x2224},
|
{0x2221, 0x2222}, {0x2224, 0x2224}, {0x2226, 0x2226},
|
||||||
{0x2226, 0x2226}, {0x222D, 0x222D}, {0x222F, 0x2233},
|
{0x222D, 0x222D}, {0x222F, 0x2233}, {0x2238, 0x223B},
|
||||||
{0x2238, 0x223B}, {0x223E, 0x2247}, {0x2249, 0x224B},
|
{0x223E, 0x2247}, {0x2249, 0x224B}, {0x224D, 0x2251},
|
||||||
{0x224D, 0x2251}, {0x2253, 0x225F}, {0x2262, 0x2263},
|
{0x2253, 0x225F}, {0x2262, 0x2263}, {0x2268, 0x2269},
|
||||||
{0x2268, 0x2269}, {0x226C, 0x226D}, {0x2270, 0x2281},
|
{0x226C, 0x226D}, {0x2270, 0x2281}, {0x2284, 0x2285},
|
||||||
{0x2284, 0x2285}, {0x2288, 0x2294}, {0x2296, 0x2298},
|
{0x2288, 0x2294}, {0x2296, 0x2298}, {0x229A, 0x22A4},
|
||||||
{0x229A, 0x22A4}, {0x22A6, 0x22BE}, {0x22C0, 0x2311},
|
{0x22A6, 0x22BE}, {0x22C0, 0x2311}, {0x2313, 0x2319},
|
||||||
{0x2313, 0x2319}, {0x231C, 0x2328}, {0x232B, 0x23E8},
|
{0x231C, 0x2328}, {0x232B, 0x23E8}, {0x23ED, 0x23EF},
|
||||||
{0x23ED, 0x23EF}, {0x23F1, 0x23F2}, {0x23F4, 0x2426},
|
{0x23F1, 0x23F2}, {0x23F4, 0x2426}, {0x2440, 0x244A},
|
||||||
{0x2440, 0x244A}, {0x24EA, 0x24EA}, {0x254C, 0x254F},
|
{0x24EA, 0x24EA}, {0x254C, 0x254F}, {0x2574, 0x257F},
|
||||||
{0x2574, 0x257F}, {0x2590, 0x2591}, {0x2596, 0x259F},
|
{0x2590, 0x2591}, {0x2596, 0x259F}, {0x25A2, 0x25A2},
|
||||||
{0x25A2, 0x25A2}, {0x25AA, 0x25B1}, {0x25B4, 0x25B5},
|
{0x25AA, 0x25B1}, {0x25B4, 0x25B5}, {0x25B8, 0x25BB},
|
||||||
{0x25B8, 0x25BB}, {0x25BE, 0x25BF}, {0x25C2, 0x25C5},
|
{0x25BE, 0x25BF}, {0x25C2, 0x25C5}, {0x25C9, 0x25CA},
|
||||||
{0x25C9, 0x25CA}, {0x25CC, 0x25CD}, {0x25D2, 0x25E1},
|
{0x25CC, 0x25CD}, {0x25D2, 0x25E1}, {0x25E6, 0x25EE},
|
||||||
{0x25E6, 0x25EE}, {0x25F0, 0x25FC}, {0x25FF, 0x2604},
|
{0x25F0, 0x25FC}, {0x25FF, 0x2604}, {0x2607, 0x2608},
|
||||||
{0x2607, 0x2608}, {0x260A, 0x260D}, {0x2610, 0x2613},
|
{0x260A, 0x260D}, {0x2610, 0x2613}, {0x2616, 0x261B},
|
||||||
{0x2616, 0x261B}, {0x261D, 0x261D}, {0x261F, 0x263F},
|
{0x261D, 0x261D}, {0x261F, 0x263F}, {0x2641, 0x2641},
|
||||||
{0x2641, 0x2641}, {0x2643, 0x2647}, {0x2654, 0x265F},
|
{0x2643, 0x2647}, {0x2654, 0x265F}, {0x2662, 0x2662},
|
||||||
{0x2662, 0x2662}, {0x2666, 0x2666}, {0x266B, 0x266B},
|
{0x2666, 0x2666}, {0x266B, 0x266B}, {0x266E, 0x266E},
|
||||||
{0x266E, 0x266E}, {0x2670, 0x267E}, {0x2680, 0x2692},
|
{0x2670, 0x267E}, {0x2680, 0x2692}, {0x2694, 0x269D},
|
||||||
{0x2694, 0x269D}, {0x26A0, 0x26A0}, {0x26A2, 0x26A9},
|
{0x26A0, 0x26A0}, {0x26A2, 0x26A9}, {0x26AC, 0x26BC},
|
||||||
{0x26AC, 0x26BC}, {0x26C0, 0x26C3}, {0x26E2, 0x26E2},
|
{0x26C0, 0x26C3}, {0x26E2, 0x26E2}, {0x26E4, 0x26E7},
|
||||||
{0x26E4, 0x26E7}, {0x2700, 0x2704}, {0x2706, 0x2709},
|
{0x2700, 0x2704}, {0x2706, 0x2709}, {0x270C, 0x2727},
|
||||||
{0x270C, 0x2727}, {0x2729, 0x273C}, {0x273E, 0x274B},
|
{0x2729, 0x273C}, {0x273E, 0x274B}, {0x274D, 0x274D},
|
||||||
{0x274D, 0x274D}, {0x274F, 0x2752}, {0x2756, 0x2756},
|
{0x274F, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x2775},
|
||||||
{0x2758, 0x2775}, {0x2780, 0x2794}, {0x2798, 0x27AF},
|
{0x2780, 0x2794}, {0x2798, 0x27AF}, {0x27B1, 0x27BE},
|
||||||
{0x27B1, 0x27BE}, {0x27C0, 0x27E5}, {0x27EE, 0x2984},
|
{0x27C0, 0x27E5}, {0x27EE, 0x2984}, {0x2987, 0x2B1A},
|
||||||
{0x2987, 0x2B1A}, {0x2B1D, 0x2B4F}, {0x2B51, 0x2B54},
|
{0x2B1D, 0x2B4F}, {0x2B51, 0x2B54}, {0x2B5A, 0x2B73},
|
||||||
{0x2B5A, 0x2B73}, {0x2B76, 0x2B95}, {0x2B98, 0x2C2E},
|
{0x2B76, 0x2B95}, {0x2B97, 0x2C2E}, {0x2C30, 0x2C5E},
|
||||||
{0x2C30, 0x2C5E}, {0x2C60, 0x2CF3}, {0x2CF9, 0x2D25},
|
{0x2C60, 0x2CF3}, {0x2CF9, 0x2D25}, {0x2D27, 0x2D27},
|
||||||
{0x2D27, 0x2D27}, {0x2D2D, 0x2D2D}, {0x2D30, 0x2D67},
|
{0x2D2D, 0x2D2D}, {0x2D30, 0x2D67}, {0x2D6F, 0x2D70},
|
||||||
{0x2D6F, 0x2D70}, {0x2D7F, 0x2D96}, {0x2DA0, 0x2DA6},
|
{0x2D7F, 0x2D96}, {0x2DA0, 0x2DA6}, {0x2DA8, 0x2DAE},
|
||||||
{0x2DA8, 0x2DAE}, {0x2DB0, 0x2DB6}, {0x2DB8, 0x2DBE},
|
{0x2DB0, 0x2DB6}, {0x2DB8, 0x2DBE}, {0x2DC0, 0x2DC6},
|
||||||
{0x2DC0, 0x2DC6}, {0x2DC8, 0x2DCE}, {0x2DD0, 0x2DD6},
|
{0x2DC8, 0x2DCE}, {0x2DD0, 0x2DD6}, {0x2DD8, 0x2DDE},
|
||||||
{0x2DD8, 0x2DDE}, {0x2DE0, 0x2E4F}, {0x303F, 0x303F},
|
{0x2DE0, 0x2E52}, {0x303F, 0x303F}, {0x4DC0, 0x4DFF},
|
||||||
{0x4DC0, 0x4DFF}, {0xA4D0, 0xA62B}, {0xA640, 0xA6F7},
|
{0xA4D0, 0xA62B}, {0xA640, 0xA6F7}, {0xA700, 0xA7BF},
|
||||||
{0xA700, 0xA7BF}, {0xA7C2, 0xA7C6}, {0xA7F7, 0xA82B},
|
{0xA7C2, 0xA7CA}, {0xA7F5, 0xA82C}, {0xA830, 0xA839},
|
||||||
{0xA830, 0xA839}, {0xA840, 0xA877}, {0xA880, 0xA8C5},
|
{0xA840, 0xA877}, {0xA880, 0xA8C5}, {0xA8CE, 0xA8D9},
|
||||||
{0xA8CE, 0xA8D9}, {0xA8E0, 0xA953}, {0xA95F, 0xA95F},
|
{0xA8E0, 0xA953}, {0xA95F, 0xA95F}, {0xA980, 0xA9CD},
|
||||||
{0xA980, 0xA9CD}, {0xA9CF, 0xA9D9}, {0xA9DE, 0xA9FE},
|
{0xA9CF, 0xA9D9}, {0xA9DE, 0xA9FE}, {0xAA00, 0xAA36},
|
||||||
{0xAA00, 0xAA36}, {0xAA40, 0xAA4D}, {0xAA50, 0xAA59},
|
{0xAA40, 0xAA4D}, {0xAA50, 0xAA59}, {0xAA5C, 0xAAC2},
|
||||||
{0xAA5C, 0xAAC2}, {0xAADB, 0xAAF6}, {0xAB01, 0xAB06},
|
{0xAADB, 0xAAF6}, {0xAB01, 0xAB06}, {0xAB09, 0xAB0E},
|
||||||
{0xAB09, 0xAB0E}, {0xAB11, 0xAB16}, {0xAB20, 0xAB26},
|
{0xAB11, 0xAB16}, {0xAB20, 0xAB26}, {0xAB28, 0xAB2E},
|
||||||
{0xAB28, 0xAB2E}, {0xAB30, 0xAB67}, {0xAB70, 0xABED},
|
{0xAB30, 0xAB6B}, {0xAB70, 0xABED}, {0xABF0, 0xABF9},
|
||||||
{0xABF0, 0xABF9}, {0xD7B0, 0xD7C6}, {0xD7CB, 0xD7FB},
|
{0xD7B0, 0xD7C6}, {0xD7CB, 0xD7FB}, {0xD800, 0xDFFF},
|
||||||
{0xD800, 0xDFFF}, {0xFB00, 0xFB06}, {0xFB13, 0xFB17},
|
{0xFB00, 0xFB06}, {0xFB13, 0xFB17}, {0xFB1D, 0xFB36},
|
||||||
{0xFB1D, 0xFB36}, {0xFB38, 0xFB3C}, {0xFB3E, 0xFB3E},
|
{0xFB38, 0xFB3C}, {0xFB3E, 0xFB3E}, {0xFB40, 0xFB41},
|
||||||
{0xFB40, 0xFB41}, {0xFB43, 0xFB44}, {0xFB46, 0xFBC1},
|
{0xFB43, 0xFB44}, {0xFB46, 0xFBC1}, {0xFBD3, 0xFD3F},
|
||||||
{0xFBD3, 0xFD3F}, {0xFD50, 0xFD8F}, {0xFD92, 0xFDC7},
|
{0xFD50, 0xFD8F}, {0xFD92, 0xFDC7}, {0xFDF0, 0xFDFD},
|
||||||
{0xFDF0, 0xFDFD}, {0xFE20, 0xFE2F}, {0xFE70, 0xFE74},
|
{0xFE20, 0xFE2F}, {0xFE70, 0xFE74}, {0xFE76, 0xFEFC},
|
||||||
{0xFE76, 0xFEFC}, {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFC},
|
{0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFC}, {0x10000, 0x1000B},
|
||||||
{0x10000, 0x1000B}, {0x1000D, 0x10026}, {0x10028, 0x1003A},
|
{0x1000D, 0x10026}, {0x10028, 0x1003A}, {0x1003C, 0x1003D},
|
||||||
{0x1003C, 0x1003D}, {0x1003F, 0x1004D}, {0x10050, 0x1005D},
|
{0x1003F, 0x1004D}, {0x10050, 0x1005D}, {0x10080, 0x100FA},
|
||||||
{0x10080, 0x100FA}, {0x10100, 0x10102}, {0x10107, 0x10133},
|
{0x10100, 0x10102}, {0x10107, 0x10133}, {0x10137, 0x1018E},
|
||||||
{0x10137, 0x1018E}, {0x10190, 0x1019B}, {0x101A0, 0x101A0},
|
{0x10190, 0x1019C}, {0x101A0, 0x101A0}, {0x101D0, 0x101FD},
|
||||||
{0x101D0, 0x101FD}, {0x10280, 0x1029C}, {0x102A0, 0x102D0},
|
{0x10280, 0x1029C}, {0x102A0, 0x102D0}, {0x102E0, 0x102FB},
|
||||||
{0x102E0, 0x102FB}, {0x10300, 0x10323}, {0x1032D, 0x1034A},
|
{0x10300, 0x10323}, {0x1032D, 0x1034A}, {0x10350, 0x1037A},
|
||||||
{0x10350, 0x1037A}, {0x10380, 0x1039D}, {0x1039F, 0x103C3},
|
{0x10380, 0x1039D}, {0x1039F, 0x103C3}, {0x103C8, 0x103D5},
|
||||||
{0x103C8, 0x103D5}, {0x10400, 0x1049D}, {0x104A0, 0x104A9},
|
{0x10400, 0x1049D}, {0x104A0, 0x104A9}, {0x104B0, 0x104D3},
|
||||||
{0x104B0, 0x104D3}, {0x104D8, 0x104FB}, {0x10500, 0x10527},
|
{0x104D8, 0x104FB}, {0x10500, 0x10527}, {0x10530, 0x10563},
|
||||||
{0x10530, 0x10563}, {0x1056F, 0x1056F}, {0x10600, 0x10736},
|
{0x1056F, 0x1056F}, {0x10600, 0x10736}, {0x10740, 0x10755},
|
||||||
{0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805},
|
{0x10760, 0x10767}, {0x10800, 0x10805}, {0x10808, 0x10808},
|
||||||
{0x10808, 0x10808}, {0x1080A, 0x10835}, {0x10837, 0x10838},
|
{0x1080A, 0x10835}, {0x10837, 0x10838}, {0x1083C, 0x1083C},
|
||||||
{0x1083C, 0x1083C}, {0x1083F, 0x10855}, {0x10857, 0x1089E},
|
{0x1083F, 0x10855}, {0x10857, 0x1089E}, {0x108A7, 0x108AF},
|
||||||
{0x108A7, 0x108AF}, {0x108E0, 0x108F2}, {0x108F4, 0x108F5},
|
{0x108E0, 0x108F2}, {0x108F4, 0x108F5}, {0x108FB, 0x1091B},
|
||||||
{0x108FB, 0x1091B}, {0x1091F, 0x10939}, {0x1093F, 0x1093F},
|
{0x1091F, 0x10939}, {0x1093F, 0x1093F}, {0x10980, 0x109B7},
|
||||||
{0x10980, 0x109B7}, {0x109BC, 0x109CF}, {0x109D2, 0x10A03},
|
{0x109BC, 0x109CF}, {0x109D2, 0x10A03}, {0x10A05, 0x10A06},
|
||||||
{0x10A05, 0x10A06}, {0x10A0C, 0x10A13}, {0x10A15, 0x10A17},
|
{0x10A0C, 0x10A13}, {0x10A15, 0x10A17}, {0x10A19, 0x10A35},
|
||||||
{0x10A19, 0x10A35}, {0x10A38, 0x10A3A}, {0x10A3F, 0x10A48},
|
{0x10A38, 0x10A3A}, {0x10A3F, 0x10A48}, {0x10A50, 0x10A58},
|
||||||
{0x10A50, 0x10A58}, {0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6},
|
{0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6}, {0x10AEB, 0x10AF6},
|
||||||
{0x10AEB, 0x10AF6}, {0x10B00, 0x10B35}, {0x10B39, 0x10B55},
|
{0x10B00, 0x10B35}, {0x10B39, 0x10B55}, {0x10B58, 0x10B72},
|
||||||
{0x10B58, 0x10B72}, {0x10B78, 0x10B91}, {0x10B99, 0x10B9C},
|
{0x10B78, 0x10B91}, {0x10B99, 0x10B9C}, {0x10BA9, 0x10BAF},
|
||||||
{0x10BA9, 0x10BAF}, {0x10C00, 0x10C48}, {0x10C80, 0x10CB2},
|
{0x10C00, 0x10C48}, {0x10C80, 0x10CB2}, {0x10CC0, 0x10CF2},
|
||||||
{0x10CC0, 0x10CF2}, {0x10CFA, 0x10D27}, {0x10D30, 0x10D39},
|
{0x10CFA, 0x10D27}, {0x10D30, 0x10D39}, {0x10E60, 0x10E7E},
|
||||||
{0x10E60, 0x10E7E}, {0x10F00, 0x10F27}, {0x10F30, 0x10F59},
|
{0x10E80, 0x10EA9}, {0x10EAB, 0x10EAD}, {0x10EB0, 0x10EB1},
|
||||||
|
{0x10F00, 0x10F27}, {0x10F30, 0x10F59}, {0x10FB0, 0x10FCB},
|
||||||
{0x10FE0, 0x10FF6}, {0x11000, 0x1104D}, {0x11052, 0x1106F},
|
{0x10FE0, 0x10FF6}, {0x11000, 0x1104D}, {0x11052, 0x1106F},
|
||||||
{0x1107F, 0x110C1}, {0x110CD, 0x110CD}, {0x110D0, 0x110E8},
|
{0x1107F, 0x110C1}, {0x110CD, 0x110CD}, {0x110D0, 0x110E8},
|
||||||
{0x110F0, 0x110F9}, {0x11100, 0x11134}, {0x11136, 0x11146},
|
{0x110F0, 0x110F9}, {0x11100, 0x11134}, {0x11136, 0x11147},
|
||||||
{0x11150, 0x11176}, {0x11180, 0x111CD}, {0x111D0, 0x111DF},
|
{0x11150, 0x11176}, {0x11180, 0x111DF}, {0x111E1, 0x111F4},
|
||||||
{0x111E1, 0x111F4}, {0x11200, 0x11211}, {0x11213, 0x1123E},
|
{0x11200, 0x11211}, {0x11213, 0x1123E}, {0x11280, 0x11286},
|
||||||
{0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128A, 0x1128D},
|
{0x11288, 0x11288}, {0x1128A, 0x1128D}, {0x1128F, 0x1129D},
|
||||||
{0x1128F, 0x1129D}, {0x1129F, 0x112A9}, {0x112B0, 0x112EA},
|
{0x1129F, 0x112A9}, {0x112B0, 0x112EA}, {0x112F0, 0x112F9},
|
||||||
{0x112F0, 0x112F9}, {0x11300, 0x11303}, {0x11305, 0x1130C},
|
{0x11300, 0x11303}, {0x11305, 0x1130C}, {0x1130F, 0x11310},
|
||||||
{0x1130F, 0x11310}, {0x11313, 0x11328}, {0x1132A, 0x11330},
|
{0x11313, 0x11328}, {0x1132A, 0x11330}, {0x11332, 0x11333},
|
||||||
{0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133B, 0x11344},
|
{0x11335, 0x11339}, {0x1133B, 0x11344}, {0x11347, 0x11348},
|
||||||
{0x11347, 0x11348}, {0x1134B, 0x1134D}, {0x11350, 0x11350},
|
{0x1134B, 0x1134D}, {0x11350, 0x11350}, {0x11357, 0x11357},
|
||||||
{0x11357, 0x11357}, {0x1135D, 0x11363}, {0x11366, 0x1136C},
|
{0x1135D, 0x11363}, {0x11366, 0x1136C}, {0x11370, 0x11374},
|
||||||
{0x11370, 0x11374}, {0x11400, 0x11459}, {0x1145B, 0x1145B},
|
{0x11400, 0x1145B}, {0x1145D, 0x11461}, {0x11480, 0x114C7},
|
||||||
{0x1145D, 0x1145F}, {0x11480, 0x114C7}, {0x114D0, 0x114D9},
|
{0x114D0, 0x114D9}, {0x11580, 0x115B5}, {0x115B8, 0x115DD},
|
||||||
{0x11580, 0x115B5}, {0x115B8, 0x115DD}, {0x11600, 0x11644},
|
{0x11600, 0x11644}, {0x11650, 0x11659}, {0x11660, 0x1166C},
|
||||||
{0x11650, 0x11659}, {0x11660, 0x1166C}, {0x11680, 0x116B8},
|
{0x11680, 0x116B8}, {0x116C0, 0x116C9}, {0x11700, 0x1171A},
|
||||||
{0x116C0, 0x116C9}, {0x11700, 0x1171A}, {0x1171D, 0x1172B},
|
{0x1171D, 0x1172B}, {0x11730, 0x1173F}, {0x11800, 0x1183B},
|
||||||
{0x11730, 0x1173F}, {0x11800, 0x1183B}, {0x118A0, 0x118F2},
|
{0x118A0, 0x118F2}, {0x118FF, 0x11906}, {0x11909, 0x11909},
|
||||||
{0x118FF, 0x118FF}, {0x119A0, 0x119A7}, {0x119AA, 0x119D7},
|
{0x1190C, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x11935},
|
||||||
{0x119DA, 0x119E4}, {0x11A00, 0x11A47}, {0x11A50, 0x11AA2},
|
{0x11937, 0x11938}, {0x1193B, 0x11946}, {0x11950, 0x11959},
|
||||||
{0x11AC0, 0x11AF8}, {0x11C00, 0x11C08}, {0x11C0A, 0x11C36},
|
{0x119A0, 0x119A7}, {0x119AA, 0x119D7}, {0x119DA, 0x119E4},
|
||||||
{0x11C38, 0x11C45}, {0x11C50, 0x11C6C}, {0x11C70, 0x11C8F},
|
{0x11A00, 0x11A47}, {0x11A50, 0x11AA2}, {0x11AC0, 0x11AF8},
|
||||||
{0x11C92, 0x11CA7}, {0x11CA9, 0x11CB6}, {0x11D00, 0x11D06},
|
{0x11C00, 0x11C08}, {0x11C0A, 0x11C36}, {0x11C38, 0x11C45},
|
||||||
{0x11D08, 0x11D09}, {0x11D0B, 0x11D36}, {0x11D3A, 0x11D3A},
|
{0x11C50, 0x11C6C}, {0x11C70, 0x11C8F}, {0x11C92, 0x11CA7},
|
||||||
{0x11D3C, 0x11D3D}, {0x11D3F, 0x11D47}, {0x11D50, 0x11D59},
|
{0x11CA9, 0x11CB6}, {0x11D00, 0x11D06}, {0x11D08, 0x11D09},
|
||||||
{0x11D60, 0x11D65}, {0x11D67, 0x11D68}, {0x11D6A, 0x11D8E},
|
{0x11D0B, 0x11D36}, {0x11D3A, 0x11D3A}, {0x11D3C, 0x11D3D},
|
||||||
{0x11D90, 0x11D91}, {0x11D93, 0x11D98}, {0x11DA0, 0x11DA9},
|
{0x11D3F, 0x11D47}, {0x11D50, 0x11D59}, {0x11D60, 0x11D65},
|
||||||
{0x11EE0, 0x11EF8}, {0x11FC0, 0x11FF1}, {0x11FFF, 0x12399},
|
{0x11D67, 0x11D68}, {0x11D6A, 0x11D8E}, {0x11D90, 0x11D91},
|
||||||
|
{0x11D93, 0x11D98}, {0x11DA0, 0x11DA9}, {0x11EE0, 0x11EF8},
|
||||||
|
{0x11FB0, 0x11FB0}, {0x11FC0, 0x11FF1}, {0x11FFF, 0x12399},
|
||||||
{0x12400, 0x1246E}, {0x12470, 0x12474}, {0x12480, 0x12543},
|
{0x12400, 0x1246E}, {0x12470, 0x12474}, {0x12480, 0x12543},
|
||||||
{0x13000, 0x1342E}, {0x13430, 0x13438}, {0x14400, 0x14646},
|
{0x13000, 0x1342E}, {0x13430, 0x13438}, {0x14400, 0x14646},
|
||||||
{0x16800, 0x16A38}, {0x16A40, 0x16A5E}, {0x16A60, 0x16A69},
|
{0x16800, 0x16A38}, {0x16A40, 0x16A5E}, {0x16A60, 0x16A69},
|
||||||
|
@ -382,20 +389,22 @@ var neutral = table{
|
||||||
{0x1EEA5, 0x1EEA9}, {0x1EEAB, 0x1EEBB}, {0x1EEF0, 0x1EEF1},
|
{0x1EEA5, 0x1EEA9}, {0x1EEAB, 0x1EEBB}, {0x1EEF0, 0x1EEF1},
|
||||||
{0x1F000, 0x1F003}, {0x1F005, 0x1F02B}, {0x1F030, 0x1F093},
|
{0x1F000, 0x1F003}, {0x1F005, 0x1F02B}, {0x1F030, 0x1F093},
|
||||||
{0x1F0A0, 0x1F0AE}, {0x1F0B1, 0x1F0BF}, {0x1F0C1, 0x1F0CE},
|
{0x1F0A0, 0x1F0AE}, {0x1F0B1, 0x1F0BF}, {0x1F0C1, 0x1F0CE},
|
||||||
{0x1F0D1, 0x1F0F5}, {0x1F10B, 0x1F10C}, {0x1F12E, 0x1F12F},
|
{0x1F0D1, 0x1F0F5}, {0x1F10B, 0x1F10F}, {0x1F12E, 0x1F12F},
|
||||||
{0x1F16A, 0x1F16C}, {0x1F1E6, 0x1F1FF}, {0x1F321, 0x1F32C},
|
{0x1F16A, 0x1F16F}, {0x1F1AD, 0x1F1AD}, {0x1F1E6, 0x1F1FF},
|
||||||
{0x1F336, 0x1F336}, {0x1F37D, 0x1F37D}, {0x1F394, 0x1F39F},
|
{0x1F321, 0x1F32C}, {0x1F336, 0x1F336}, {0x1F37D, 0x1F37D},
|
||||||
{0x1F3CB, 0x1F3CE}, {0x1F3D4, 0x1F3DF}, {0x1F3F1, 0x1F3F3},
|
{0x1F394, 0x1F39F}, {0x1F3CB, 0x1F3CE}, {0x1F3D4, 0x1F3DF},
|
||||||
{0x1F3F5, 0x1F3F7}, {0x1F43F, 0x1F43F}, {0x1F441, 0x1F441},
|
{0x1F3F1, 0x1F3F3}, {0x1F3F5, 0x1F3F7}, {0x1F43F, 0x1F43F},
|
||||||
{0x1F4FD, 0x1F4FE}, {0x1F53E, 0x1F54A}, {0x1F54F, 0x1F54F},
|
{0x1F441, 0x1F441}, {0x1F4FD, 0x1F4FE}, {0x1F53E, 0x1F54A},
|
||||||
{0x1F568, 0x1F579}, {0x1F57B, 0x1F594}, {0x1F597, 0x1F5A3},
|
{0x1F54F, 0x1F54F}, {0x1F568, 0x1F579}, {0x1F57B, 0x1F594},
|
||||||
{0x1F5A5, 0x1F5FA}, {0x1F650, 0x1F67F}, {0x1F6C6, 0x1F6CB},
|
{0x1F597, 0x1F5A3}, {0x1F5A5, 0x1F5FA}, {0x1F650, 0x1F67F},
|
||||||
{0x1F6CD, 0x1F6CF}, {0x1F6D3, 0x1F6D4}, {0x1F6E0, 0x1F6EA},
|
{0x1F6C6, 0x1F6CB}, {0x1F6CD, 0x1F6CF}, {0x1F6D3, 0x1F6D4},
|
||||||
{0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F773}, {0x1F780, 0x1F7D8},
|
{0x1F6E0, 0x1F6EA}, {0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F773},
|
||||||
{0x1F800, 0x1F80B}, {0x1F810, 0x1F847}, {0x1F850, 0x1F859},
|
{0x1F780, 0x1F7D8}, {0x1F800, 0x1F80B}, {0x1F810, 0x1F847},
|
||||||
{0x1F860, 0x1F887}, {0x1F890, 0x1F8AD}, {0x1F900, 0x1F90B},
|
{0x1F850, 0x1F859}, {0x1F860, 0x1F887}, {0x1F890, 0x1F8AD},
|
||||||
{0x1FA00, 0x1FA53}, {0x1FA60, 0x1FA6D}, {0xE0001, 0xE0001},
|
{0x1F8B0, 0x1F8B1}, {0x1F900, 0x1F90B}, {0x1F93B, 0x1F93B},
|
||||||
{0xE0020, 0xE007F},
|
{0x1F946, 0x1F946}, {0x1FA00, 0x1FA53}, {0x1FA60, 0x1FA6D},
|
||||||
|
{0x1FB00, 0x1FB92}, {0x1FB94, 0x1FBCA}, {0x1FBF0, 0x1FBF9},
|
||||||
|
{0xE0001, 0xE0001}, {0xE0020, 0xE007F},
|
||||||
}
|
}
|
||||||
|
|
||||||
var emoji = table{
|
var emoji = table{
|
||||||
|
@ -423,5 +432,6 @@ var emoji = table{
|
||||||
{0x1F546, 0x1F64F}, {0x1F680, 0x1F6FF}, {0x1F774, 0x1F77F},
|
{0x1F546, 0x1F64F}, {0x1F680, 0x1F6FF}, {0x1F774, 0x1F77F},
|
||||||
{0x1F7D5, 0x1F7FF}, {0x1F80C, 0x1F80F}, {0x1F848, 0x1F84F},
|
{0x1F7D5, 0x1F7FF}, {0x1F80C, 0x1F80F}, {0x1F848, 0x1F84F},
|
||||||
{0x1F85A, 0x1F85F}, {0x1F888, 0x1F88F}, {0x1F8AE, 0x1F8FF},
|
{0x1F85A, 0x1F85F}, {0x1F888, 0x1F88F}, {0x1F8AE, 0x1F8FF},
|
||||||
{0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1FFFD},
|
{0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1FAFF},
|
||||||
|
{0x1FC00, 0x1FFFD},
|
||||||
}
|
}
|
||||||
|
|
21
vendor/github.com/prometheus/client_golang/prometheus/process_collector.go
generated
vendored
21
vendor/github.com/prometheus/client_golang/prometheus/process_collector.go
generated
vendored
|
@ -15,7 +15,11 @@ package prometheus
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type processCollector struct {
|
type processCollector struct {
|
||||||
|
@ -149,3 +153,20 @@ func (c *processCollector) reportError(ch chan<- Metric, desc *Desc, err error)
|
||||||
}
|
}
|
||||||
ch <- NewInvalidMetric(desc, err)
|
ch <- NewInvalidMetric(desc, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewPidFileFn returns a function that retrieves a pid from the specified file.
|
||||||
|
// It is meant to be used for the PidFn field in ProcessCollectorOpts.
|
||||||
|
func NewPidFileFn(pidFilePath string) func() (int, error) {
|
||||||
|
return func() (int, error) {
|
||||||
|
content, err := ioutil.ReadFile(pidFilePath)
|
||||||
|
if err != nil {
|
||||||
|
return 0, fmt.Errorf("can't read pid file %q: %+v", pidFilePath, err)
|
||||||
|
}
|
||||||
|
pid, err := strconv.Atoi(strings.TrimSpace(string(content)))
|
||||||
|
if err != nil {
|
||||||
|
return 0, fmt.Errorf("can't parse pid file %q: %+v", pidFilePath, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return pid, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
2
vendor/github.com/prometheus/client_golang/prometheus/registry.go
generated
vendored
2
vendor/github.com/prometheus/client_golang/prometheus/registry.go
generated
vendored
|
@ -215,6 +215,8 @@ func (err AlreadyRegisteredError) Error() string {
|
||||||
// by a Gatherer to report multiple errors during MetricFamily gathering.
|
// by a Gatherer to report multiple errors during MetricFamily gathering.
|
||||||
type MultiError []error
|
type MultiError []error
|
||||||
|
|
||||||
|
// Error formats the contained errors as a bullet point list, preceded by the
|
||||||
|
// total number of errors. Note that this results in a multi-line string.
|
||||||
func (errs MultiError) Error() string {
|
func (errs MultiError) Error() string {
|
||||||
if len(errs) == 0 {
|
if len(errs) == 0 {
|
||||||
return ""
|
return ""
|
||||||
|
|
2
vendor/github.com/prometheus/procfs/Makefile.common
generated
vendored
2
vendor/github.com/prometheus/procfs/Makefile.common
generated
vendored
|
@ -78,7 +78,7 @@ ifneq ($(shell which gotestsum),)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PROMU_VERSION ?= 0.5.0
|
PROMU_VERSION ?= 0.6.0
|
||||||
PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
|
PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
|
||||||
|
|
||||||
GOLANGCI_LINT :=
|
GOLANGCI_LINT :=
|
||||||
|
|
16
vendor/github.com/prometheus/procfs/cpuinfo.go
generated
vendored
16
vendor/github.com/prometheus/procfs/cpuinfo.go
generated
vendored
|
@ -313,6 +313,22 @@ func parseCPUInfoS390X(info []byte) ([]CPUInfo, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
cpuinfo[i].CPUMHz = v
|
cpuinfo[i].CPUMHz = v
|
||||||
|
case "physical id":
|
||||||
|
cpuinfo[i].PhysicalID = field[1]
|
||||||
|
case "core id":
|
||||||
|
cpuinfo[i].CoreID = field[1]
|
||||||
|
case "cpu cores":
|
||||||
|
v, err := strconv.ParseUint(field[1], 0, 32)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cpuinfo[i].CPUCores = uint(v)
|
||||||
|
case "siblings":
|
||||||
|
v, err := strconv.ParseUint(field[1], 0, 32)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cpuinfo[i].Siblings = uint(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
19
vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go
generated
vendored
Normal file
19
vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
// Copyright 2020 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build linux
|
||||||
|
// +build riscv riscv64
|
||||||
|
|
||||||
|
package procfs
|
||||||
|
|
||||||
|
var parseCPUInfo = parseCPUInfoRISCV
|
49
vendor/github.com/prometheus/procfs/fixtures.ttar
generated
vendored
49
vendor/github.com/prometheus/procfs/fixtures.ttar
generated
vendored
|
@ -111,7 +111,7 @@ Max core file size 0 unlimited bytes
|
||||||
Max resident set unlimited unlimited bytes
|
Max resident set unlimited unlimited bytes
|
||||||
Max processes 62898 62898 processes
|
Max processes 62898 62898 processes
|
||||||
Max open files 2048 4096 files
|
Max open files 2048 4096 files
|
||||||
Max locked memory 65536 65536 bytes
|
Max locked memory 18446744073708503040 18446744073708503040 bytes
|
||||||
Max address space 8589934592 unlimited bytes
|
Max address space 8589934592 unlimited bytes
|
||||||
Max file locks unlimited unlimited locks
|
Max file locks unlimited unlimited locks
|
||||||
Max pending signals 62898 62898 signals
|
Max pending signals 62898 62898 signals
|
||||||
|
@ -2129,6 +2129,24 @@ Lines: 6
|
||||||
4 1FB3C 0 1282A8F 0
|
4 1FB3C 0 1282A8F 0
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: fixtures/proc/net/protocols
|
||||||
|
Lines: 14
|
||||||
|
protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em
|
||||||
|
PACKET 1344 2 -1 NI 0 no kernel n n n n n n n n n n n n n n n n n n n
|
||||||
|
PINGv6 1112 0 -1 NI 0 yes kernel y y y n n y n n y y y y n y y y y y n
|
||||||
|
RAWv6 1112 1 -1 NI 0 yes kernel y y y n y y y n y y y y n y y y y n n
|
||||||
|
UDPLITEv6 1216 0 57 NI 0 yes kernel y y y n y y y n y y y y n n n y y y n
|
||||||
|
UDPv6 1216 10 57 NI 0 yes kernel y y y n y y y n y y y y n n n y y y n
|
||||||
|
TCPv6 2144 1937 1225378 no 320 yes kernel y y y y y y y y y y y y y n y y y y y
|
||||||
|
UNIX 1024 120 -1 NI 0 yes kernel n n n n n n n n n n n n n n n n n n n
|
||||||
|
UDP-Lite 1024 0 57 NI 0 yes kernel y y y n y y y n y y y y y n n y y y n
|
||||||
|
PING 904 0 -1 NI 0 yes kernel y y y n n y n n y y y y n y y y y y n
|
||||||
|
RAW 912 0 -1 NI 0 yes kernel y y y n y y y n y y y y n y y y y n n
|
||||||
|
UDP 1024 73 57 NI 0 yes kernel y y y n y y y n y y y y y n n y y y n
|
||||||
|
TCP 1984 93064 1225378 yes 320 yes kernel y y y y y y y y y y y y y n y y y y y
|
||||||
|
NETLINK 1040 16 -1 NI 0 no kernel n n n n n n n n n n n n n n n n n n n
|
||||||
|
Mode: 444
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Directory: fixtures/proc/net/rpc
|
Directory: fixtures/proc/net/rpc
|
||||||
Mode: 755
|
Mode: 755
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -4639,6 +4657,35 @@ Mode: 644
|
||||||
Directory: fixtures/sys/devices/system
|
Directory: fixtures/sys/devices/system
|
||||||
Mode: 775
|
Mode: 775
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: fixtures/sys/devices/system/node
|
||||||
|
Mode: 775
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: fixtures/sys/devices/system/node/node1
|
||||||
|
Mode: 755
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: fixtures/sys/devices/system/node/node1/vmstat
|
||||||
|
Lines: 6
|
||||||
|
nr_free_pages 1
|
||||||
|
nr_zone_inactive_anon 2
|
||||||
|
nr_zone_active_anon 3
|
||||||
|
nr_zone_inactive_file 4
|
||||||
|
nr_zone_active_file 5
|
||||||
|
nr_zone_unevictable 6
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: fixtures/sys/devices/system/node/node2
|
||||||
|
Mode: 755
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: fixtures/sys/devices/system/node/node2/vmstat
|
||||||
|
Lines: 6
|
||||||
|
nr_free_pages 7
|
||||||
|
nr_zone_inactive_anon 8
|
||||||
|
nr_zone_active_anon 9
|
||||||
|
nr_zone_inactive_file 10
|
||||||
|
nr_zone_active_file 11
|
||||||
|
nr_zone_unevictable 12
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Directory: fixtures/sys/devices/system/clocksource
|
Directory: fixtures/sys/devices/system/clocksource
|
||||||
Mode: 775
|
Mode: 775
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
23
vendor/github.com/prometheus/procfs/mdstat.go
generated
vendored
23
vendor/github.com/prometheus/procfs/mdstat.go
generated
vendored
|
@ -22,8 +22,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`)
|
statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`)
|
||||||
recoveryLineRE = regexp.MustCompile(`\((\d+)/\d+\)`)
|
recoveryLineRE = regexp.MustCompile(`\((\d+)/\d+\)`)
|
||||||
|
componentDeviceRE = regexp.MustCompile(`(.*)\[\d+\]`)
|
||||||
)
|
)
|
||||||
|
|
||||||
// MDStat holds info parsed from /proc/mdstat.
|
// MDStat holds info parsed from /proc/mdstat.
|
||||||
|
@ -44,6 +45,8 @@ type MDStat struct {
|
||||||
BlocksTotal int64
|
BlocksTotal int64
|
||||||
// Number of blocks on the device that are in sync.
|
// Number of blocks on the device that are in sync.
|
||||||
BlocksSynced int64
|
BlocksSynced int64
|
||||||
|
// Name of md component devices
|
||||||
|
Devices []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// MDStat parses an mdstat-file (/proc/mdstat) and returns a slice of
|
// MDStat parses an mdstat-file (/proc/mdstat) and returns a slice of
|
||||||
|
@ -140,6 +143,7 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) {
|
||||||
DisksTotal: total,
|
DisksTotal: total,
|
||||||
BlocksTotal: size,
|
BlocksTotal: size,
|
||||||
BlocksSynced: syncedBlocks,
|
BlocksSynced: syncedBlocks,
|
||||||
|
Devices: evalComponentDevices(deviceFields),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,3 +199,18 @@ func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, err error) {
|
||||||
|
|
||||||
return syncedBlocks, nil
|
return syncedBlocks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func evalComponentDevices(deviceFields []string) []string {
|
||||||
|
mdComponentDevices := make([]string, 0)
|
||||||
|
if len(deviceFields) > 3 {
|
||||||
|
for _, field := range deviceFields[4:] {
|
||||||
|
match := componentDeviceRE.FindStringSubmatch(field)
|
||||||
|
if match == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
mdComponentDevices = append(mdComponentDevices, match[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mdComponentDevices
|
||||||
|
}
|
||||||
|
|
192
vendor/github.com/prometheus/procfs/meminfo.go
generated
vendored
192
vendor/github.com/prometheus/procfs/meminfo.go
generated
vendored
|
@ -28,9 +28,9 @@ import (
|
||||||
type Meminfo struct {
|
type Meminfo struct {
|
||||||
// Total usable ram (i.e. physical ram minus a few reserved
|
// Total usable ram (i.e. physical ram minus a few reserved
|
||||||
// bits and the kernel binary code)
|
// bits and the kernel binary code)
|
||||||
MemTotal uint64
|
MemTotal *uint64
|
||||||
// The sum of LowFree+HighFree
|
// The sum of LowFree+HighFree
|
||||||
MemFree uint64
|
MemFree *uint64
|
||||||
// An estimate of how much memory is available for starting
|
// An estimate of how much memory is available for starting
|
||||||
// new applications, without swapping. Calculated from
|
// new applications, without swapping. Calculated from
|
||||||
// MemFree, SReclaimable, the size of the file LRU lists, and
|
// MemFree, SReclaimable, the size of the file LRU lists, and
|
||||||
|
@ -39,59 +39,59 @@ type Meminfo struct {
|
||||||
// well, and that not all reclaimable slab will be
|
// well, and that not all reclaimable slab will be
|
||||||
// reclaimable, due to items being in use. The impact of those
|
// reclaimable, due to items being in use. The impact of those
|
||||||
// factors will vary from system to system.
|
// factors will vary from system to system.
|
||||||
MemAvailable uint64
|
MemAvailable *uint64
|
||||||
// Relatively temporary storage for raw disk blocks shouldn't
|
// Relatively temporary storage for raw disk blocks shouldn't
|
||||||
// get tremendously large (20MB or so)
|
// get tremendously large (20MB or so)
|
||||||
Buffers uint64
|
Buffers *uint64
|
||||||
Cached uint64
|
Cached *uint64
|
||||||
// Memory that once was swapped out, is swapped back in but
|
// Memory that once was swapped out, is swapped back in but
|
||||||
// still also is in the swapfile (if memory is needed it
|
// still also is in the swapfile (if memory is needed it
|
||||||
// doesn't need to be swapped out AGAIN because it is already
|
// doesn't need to be swapped out AGAIN because it is already
|
||||||
// in the swapfile. This saves I/O)
|
// in the swapfile. This saves I/O)
|
||||||
SwapCached uint64
|
SwapCached *uint64
|
||||||
// Memory that has been used more recently and usually not
|
// Memory that has been used more recently and usually not
|
||||||
// reclaimed unless absolutely necessary.
|
// reclaimed unless absolutely necessary.
|
||||||
Active uint64
|
Active *uint64
|
||||||
// Memory which has been less recently used. It is more
|
// Memory which has been less recently used. It is more
|
||||||
// eligible to be reclaimed for other purposes
|
// eligible to be reclaimed for other purposes
|
||||||
Inactive uint64
|
Inactive *uint64
|
||||||
ActiveAnon uint64
|
ActiveAnon *uint64
|
||||||
InactiveAnon uint64
|
InactiveAnon *uint64
|
||||||
ActiveFile uint64
|
ActiveFile *uint64
|
||||||
InactiveFile uint64
|
InactiveFile *uint64
|
||||||
Unevictable uint64
|
Unevictable *uint64
|
||||||
Mlocked uint64
|
Mlocked *uint64
|
||||||
// total amount of swap space available
|
// total amount of swap space available
|
||||||
SwapTotal uint64
|
SwapTotal *uint64
|
||||||
// Memory which has been evicted from RAM, and is temporarily
|
// Memory which has been evicted from RAM, and is temporarily
|
||||||
// on the disk
|
// on the disk
|
||||||
SwapFree uint64
|
SwapFree *uint64
|
||||||
// Memory which is waiting to get written back to the disk
|
// Memory which is waiting to get written back to the disk
|
||||||
Dirty uint64
|
Dirty *uint64
|
||||||
// Memory which is actively being written back to the disk
|
// Memory which is actively being written back to the disk
|
||||||
Writeback uint64
|
Writeback *uint64
|
||||||
// Non-file backed pages mapped into userspace page tables
|
// Non-file backed pages mapped into userspace page tables
|
||||||
AnonPages uint64
|
AnonPages *uint64
|
||||||
// files which have been mapped, such as libraries
|
// files which have been mapped, such as libraries
|
||||||
Mapped uint64
|
Mapped *uint64
|
||||||
Shmem uint64
|
Shmem *uint64
|
||||||
// in-kernel data structures cache
|
// in-kernel data structures cache
|
||||||
Slab uint64
|
Slab *uint64
|
||||||
// Part of Slab, that might be reclaimed, such as caches
|
// Part of Slab, that might be reclaimed, such as caches
|
||||||
SReclaimable uint64
|
SReclaimable *uint64
|
||||||
// Part of Slab, that cannot be reclaimed on memory pressure
|
// Part of Slab, that cannot be reclaimed on memory pressure
|
||||||
SUnreclaim uint64
|
SUnreclaim *uint64
|
||||||
KernelStack uint64
|
KernelStack *uint64
|
||||||
// amount of memory dedicated to the lowest level of page
|
// amount of memory dedicated to the lowest level of page
|
||||||
// tables.
|
// tables.
|
||||||
PageTables uint64
|
PageTables *uint64
|
||||||
// NFS pages sent to the server, but not yet committed to
|
// NFS pages sent to the server, but not yet committed to
|
||||||
// stable storage
|
// stable storage
|
||||||
NFSUnstable uint64
|
NFSUnstable *uint64
|
||||||
// Memory used for block device "bounce buffers"
|
// Memory used for block device "bounce buffers"
|
||||||
Bounce uint64
|
Bounce *uint64
|
||||||
// Memory used by FUSE for temporary writeback buffers
|
// Memory used by FUSE for temporary writeback buffers
|
||||||
WritebackTmp uint64
|
WritebackTmp *uint64
|
||||||
// Based on the overcommit ratio ('vm.overcommit_ratio'),
|
// Based on the overcommit ratio ('vm.overcommit_ratio'),
|
||||||
// this is the total amount of memory currently available to
|
// this is the total amount of memory currently available to
|
||||||
// be allocated on the system. This limit is only adhered to
|
// be allocated on the system. This limit is only adhered to
|
||||||
|
@ -105,7 +105,7 @@ type Meminfo struct {
|
||||||
// yield a CommitLimit of 7.3G.
|
// yield a CommitLimit of 7.3G.
|
||||||
// For more details, see the memory overcommit documentation
|
// For more details, see the memory overcommit documentation
|
||||||
// in vm/overcommit-accounting.
|
// in vm/overcommit-accounting.
|
||||||
CommitLimit uint64
|
CommitLimit *uint64
|
||||||
// The amount of memory presently allocated on the system.
|
// The amount of memory presently allocated on the system.
|
||||||
// The committed memory is a sum of all of the memory which
|
// The committed memory is a sum of all of the memory which
|
||||||
// has been allocated by processes, even if it has not been
|
// has been allocated by processes, even if it has not been
|
||||||
|
@ -119,27 +119,27 @@ type Meminfo struct {
|
||||||
// This is useful if one needs to guarantee that processes will
|
// This is useful if one needs to guarantee that processes will
|
||||||
// not fail due to lack of memory once that memory has been
|
// not fail due to lack of memory once that memory has been
|
||||||
// successfully allocated.
|
// successfully allocated.
|
||||||
CommittedAS uint64
|
CommittedAS *uint64
|
||||||
// total size of vmalloc memory area
|
// total size of vmalloc memory area
|
||||||
VmallocTotal uint64
|
VmallocTotal *uint64
|
||||||
// amount of vmalloc area which is used
|
// amount of vmalloc area which is used
|
||||||
VmallocUsed uint64
|
VmallocUsed *uint64
|
||||||
// largest contiguous block of vmalloc area which is free
|
// largest contiguous block of vmalloc area which is free
|
||||||
VmallocChunk uint64
|
VmallocChunk *uint64
|
||||||
HardwareCorrupted uint64
|
HardwareCorrupted *uint64
|
||||||
AnonHugePages uint64
|
AnonHugePages *uint64
|
||||||
ShmemHugePages uint64
|
ShmemHugePages *uint64
|
||||||
ShmemPmdMapped uint64
|
ShmemPmdMapped *uint64
|
||||||
CmaTotal uint64
|
CmaTotal *uint64
|
||||||
CmaFree uint64
|
CmaFree *uint64
|
||||||
HugePagesTotal uint64
|
HugePagesTotal *uint64
|
||||||
HugePagesFree uint64
|
HugePagesFree *uint64
|
||||||
HugePagesRsvd uint64
|
HugePagesRsvd *uint64
|
||||||
HugePagesSurp uint64
|
HugePagesSurp *uint64
|
||||||
Hugepagesize uint64
|
Hugepagesize *uint64
|
||||||
DirectMap4k uint64
|
DirectMap4k *uint64
|
||||||
DirectMap2M uint64
|
DirectMap2M *uint64
|
||||||
DirectMap1G uint64
|
DirectMap1G *uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// Meminfo returns an information about current kernel/system memory statistics.
|
// Meminfo returns an information about current kernel/system memory statistics.
|
||||||
|
@ -175,101 +175,101 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) {
|
||||||
|
|
||||||
switch fields[0] {
|
switch fields[0] {
|
||||||
case "MemTotal:":
|
case "MemTotal:":
|
||||||
m.MemTotal = v
|
m.MemTotal = &v
|
||||||
case "MemFree:":
|
case "MemFree:":
|
||||||
m.MemFree = v
|
m.MemFree = &v
|
||||||
case "MemAvailable:":
|
case "MemAvailable:":
|
||||||
m.MemAvailable = v
|
m.MemAvailable = &v
|
||||||
case "Buffers:":
|
case "Buffers:":
|
||||||
m.Buffers = v
|
m.Buffers = &v
|
||||||
case "Cached:":
|
case "Cached:":
|
||||||
m.Cached = v
|
m.Cached = &v
|
||||||
case "SwapCached:":
|
case "SwapCached:":
|
||||||
m.SwapCached = v
|
m.SwapCached = &v
|
||||||
case "Active:":
|
case "Active:":
|
||||||
m.Active = v
|
m.Active = &v
|
||||||
case "Inactive:":
|
case "Inactive:":
|
||||||
m.Inactive = v
|
m.Inactive = &v
|
||||||
case "Active(anon):":
|
case "Active(anon):":
|
||||||
m.ActiveAnon = v
|
m.ActiveAnon = &v
|
||||||
case "Inactive(anon):":
|
case "Inactive(anon):":
|
||||||
m.InactiveAnon = v
|
m.InactiveAnon = &v
|
||||||
case "Active(file):":
|
case "Active(file):":
|
||||||
m.ActiveFile = v
|
m.ActiveFile = &v
|
||||||
case "Inactive(file):":
|
case "Inactive(file):":
|
||||||
m.InactiveFile = v
|
m.InactiveFile = &v
|
||||||
case "Unevictable:":
|
case "Unevictable:":
|
||||||
m.Unevictable = v
|
m.Unevictable = &v
|
||||||
case "Mlocked:":
|
case "Mlocked:":
|
||||||
m.Mlocked = v
|
m.Mlocked = &v
|
||||||
case "SwapTotal:":
|
case "SwapTotal:":
|
||||||
m.SwapTotal = v
|
m.SwapTotal = &v
|
||||||
case "SwapFree:":
|
case "SwapFree:":
|
||||||
m.SwapFree = v
|
m.SwapFree = &v
|
||||||
case "Dirty:":
|
case "Dirty:":
|
||||||
m.Dirty = v
|
m.Dirty = &v
|
||||||
case "Writeback:":
|
case "Writeback:":
|
||||||
m.Writeback = v
|
m.Writeback = &v
|
||||||
case "AnonPages:":
|
case "AnonPages:":
|
||||||
m.AnonPages = v
|
m.AnonPages = &v
|
||||||
case "Mapped:":
|
case "Mapped:":
|
||||||
m.Mapped = v
|
m.Mapped = &v
|
||||||
case "Shmem:":
|
case "Shmem:":
|
||||||
m.Shmem = v
|
m.Shmem = &v
|
||||||
case "Slab:":
|
case "Slab:":
|
||||||
m.Slab = v
|
m.Slab = &v
|
||||||
case "SReclaimable:":
|
case "SReclaimable:":
|
||||||
m.SReclaimable = v
|
m.SReclaimable = &v
|
||||||
case "SUnreclaim:":
|
case "SUnreclaim:":
|
||||||
m.SUnreclaim = v
|
m.SUnreclaim = &v
|
||||||
case "KernelStack:":
|
case "KernelStack:":
|
||||||
m.KernelStack = v
|
m.KernelStack = &v
|
||||||
case "PageTables:":
|
case "PageTables:":
|
||||||
m.PageTables = v
|
m.PageTables = &v
|
||||||
case "NFS_Unstable:":
|
case "NFS_Unstable:":
|
||||||
m.NFSUnstable = v
|
m.NFSUnstable = &v
|
||||||
case "Bounce:":
|
case "Bounce:":
|
||||||
m.Bounce = v
|
m.Bounce = &v
|
||||||
case "WritebackTmp:":
|
case "WritebackTmp:":
|
||||||
m.WritebackTmp = v
|
m.WritebackTmp = &v
|
||||||
case "CommitLimit:":
|
case "CommitLimit:":
|
||||||
m.CommitLimit = v
|
m.CommitLimit = &v
|
||||||
case "Committed_AS:":
|
case "Committed_AS:":
|
||||||
m.CommittedAS = v
|
m.CommittedAS = &v
|
||||||
case "VmallocTotal:":
|
case "VmallocTotal:":
|
||||||
m.VmallocTotal = v
|
m.VmallocTotal = &v
|
||||||
case "VmallocUsed:":
|
case "VmallocUsed:":
|
||||||
m.VmallocUsed = v
|
m.VmallocUsed = &v
|
||||||
case "VmallocChunk:":
|
case "VmallocChunk:":
|
||||||
m.VmallocChunk = v
|
m.VmallocChunk = &v
|
||||||
case "HardwareCorrupted:":
|
case "HardwareCorrupted:":
|
||||||
m.HardwareCorrupted = v
|
m.HardwareCorrupted = &v
|
||||||
case "AnonHugePages:":
|
case "AnonHugePages:":
|
||||||
m.AnonHugePages = v
|
m.AnonHugePages = &v
|
||||||
case "ShmemHugePages:":
|
case "ShmemHugePages:":
|
||||||
m.ShmemHugePages = v
|
m.ShmemHugePages = &v
|
||||||
case "ShmemPmdMapped:":
|
case "ShmemPmdMapped:":
|
||||||
m.ShmemPmdMapped = v
|
m.ShmemPmdMapped = &v
|
||||||
case "CmaTotal:":
|
case "CmaTotal:":
|
||||||
m.CmaTotal = v
|
m.CmaTotal = &v
|
||||||
case "CmaFree:":
|
case "CmaFree:":
|
||||||
m.CmaFree = v
|
m.CmaFree = &v
|
||||||
case "HugePages_Total:":
|
case "HugePages_Total:":
|
||||||
m.HugePagesTotal = v
|
m.HugePagesTotal = &v
|
||||||
case "HugePages_Free:":
|
case "HugePages_Free:":
|
||||||
m.HugePagesFree = v
|
m.HugePagesFree = &v
|
||||||
case "HugePages_Rsvd:":
|
case "HugePages_Rsvd:":
|
||||||
m.HugePagesRsvd = v
|
m.HugePagesRsvd = &v
|
||||||
case "HugePages_Surp:":
|
case "HugePages_Surp:":
|
||||||
m.HugePagesSurp = v
|
m.HugePagesSurp = &v
|
||||||
case "Hugepagesize:":
|
case "Hugepagesize:":
|
||||||
m.Hugepagesize = v
|
m.Hugepagesize = &v
|
||||||
case "DirectMap4k:":
|
case "DirectMap4k:":
|
||||||
m.DirectMap4k = v
|
m.DirectMap4k = &v
|
||||||
case "DirectMap2M:":
|
case "DirectMap2M:":
|
||||||
m.DirectMap2M = v
|
m.DirectMap2M = &v
|
||||||
case "DirectMap1G:":
|
case "DirectMap1G:":
|
||||||
m.DirectMap1G = v
|
m.DirectMap1G = &v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
15
vendor/github.com/prometheus/procfs/mountstats.go
generated
vendored
15
vendor/github.com/prometheus/procfs/mountstats.go
generated
vendored
|
@ -338,12 +338,12 @@ func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, e
|
||||||
if len(ss) == 0 {
|
if len(ss) == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if len(ss) < 2 {
|
|
||||||
return nil, fmt.Errorf("not enough information for NFS stats: %v", ss)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ss[0] {
|
switch ss[0] {
|
||||||
case fieldOpts:
|
case fieldOpts:
|
||||||
|
if len(ss) < 2 {
|
||||||
|
return nil, fmt.Errorf("not enough information for NFS stats: %v", ss)
|
||||||
|
}
|
||||||
if stats.Opts == nil {
|
if stats.Opts == nil {
|
||||||
stats.Opts = map[string]string{}
|
stats.Opts = map[string]string{}
|
||||||
}
|
}
|
||||||
|
@ -356,6 +356,9 @@ func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case fieldAge:
|
case fieldAge:
|
||||||
|
if len(ss) < 2 {
|
||||||
|
return nil, fmt.Errorf("not enough information for NFS stats: %v", ss)
|
||||||
|
}
|
||||||
// Age integer is in seconds
|
// Age integer is in seconds
|
||||||
d, err := time.ParseDuration(ss[1] + "s")
|
d, err := time.ParseDuration(ss[1] + "s")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -364,6 +367,9 @@ func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, e
|
||||||
|
|
||||||
stats.Age = d
|
stats.Age = d
|
||||||
case fieldBytes:
|
case fieldBytes:
|
||||||
|
if len(ss) < 2 {
|
||||||
|
return nil, fmt.Errorf("not enough information for NFS stats: %v", ss)
|
||||||
|
}
|
||||||
bstats, err := parseNFSBytesStats(ss[1:])
|
bstats, err := parseNFSBytesStats(ss[1:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -371,6 +377,9 @@ func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, e
|
||||||
|
|
||||||
stats.Bytes = *bstats
|
stats.Bytes = *bstats
|
||||||
case fieldEvents:
|
case fieldEvents:
|
||||||
|
if len(ss) < 2 {
|
||||||
|
return nil, fmt.Errorf("not enough information for NFS stats: %v", ss)
|
||||||
|
}
|
||||||
estats, err := parseNFSEventsStats(ss[1:])
|
estats, err := parseNFSEventsStats(ss[1:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
180
vendor/github.com/prometheus/procfs/net_protocols.go
generated
vendored
Normal file
180
vendor/github.com/prometheus/procfs/net_protocols.go
generated
vendored
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
// Copyright 2020 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package procfs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/prometheus/procfs/internal/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NetProtocolStats stores the contents from /proc/net/protocols
|
||||||
|
type NetProtocolStats map[string]NetProtocolStatLine
|
||||||
|
|
||||||
|
// NetProtocolStatLine contains a single line parsed from /proc/net/protocols. We
|
||||||
|
// only care about the first six columns as the rest are not likely to change
|
||||||
|
// and only serve to provide a set of capabilities for each protocol.
|
||||||
|
type NetProtocolStatLine struct {
|
||||||
|
Name string // 0 The name of the protocol
|
||||||
|
Size uint64 // 1 The size, in bytes, of a given protocol structure. e.g. sizeof(struct tcp_sock) or sizeof(struct unix_sock)
|
||||||
|
Sockets int64 // 2 Number of sockets in use by this protocol
|
||||||
|
Memory int64 // 3 Number of 4KB pages allocated by all sockets of this protocol
|
||||||
|
Pressure int // 4 This is either yes, no, or NI (not implemented). For the sake of simplicity we treat NI as not experiencing memory pressure.
|
||||||
|
MaxHeader uint64 // 5 Protocol specific max header size
|
||||||
|
Slab bool // 6 Indicates whether or not memory is allocated from the SLAB
|
||||||
|
ModuleName string // 7 The name of the module that implemented this protocol or "kernel" if not from a module
|
||||||
|
Capabilities NetProtocolCapabilities
|
||||||
|
}
|
||||||
|
|
||||||
|
// NetProtocolCapabilities contains a list of capabilities for each protocol
|
||||||
|
type NetProtocolCapabilities struct {
|
||||||
|
Close bool // 8
|
||||||
|
Connect bool // 9
|
||||||
|
Disconnect bool // 10
|
||||||
|
Accept bool // 11
|
||||||
|
IoCtl bool // 12
|
||||||
|
Init bool // 13
|
||||||
|
Destroy bool // 14
|
||||||
|
Shutdown bool // 15
|
||||||
|
SetSockOpt bool // 16
|
||||||
|
GetSockOpt bool // 17
|
||||||
|
SendMsg bool // 18
|
||||||
|
RecvMsg bool // 19
|
||||||
|
SendPage bool // 20
|
||||||
|
Bind bool // 21
|
||||||
|
BacklogRcv bool // 22
|
||||||
|
Hash bool // 23
|
||||||
|
UnHash bool // 24
|
||||||
|
GetPort bool // 25
|
||||||
|
EnterMemoryPressure bool // 26
|
||||||
|
}
|
||||||
|
|
||||||
|
// NetProtocols reads stats from /proc/net/protocols and returns a map of
|
||||||
|
// PortocolStatLine entries. As of this writing no official Linux Documentation
|
||||||
|
// exists, however the source is fairly self-explanatory and the format seems
|
||||||
|
// stable since its introduction in 2.6.12-rc2
|
||||||
|
// Linux 2.6.12-rc2 - https://elixir.bootlin.com/linux/v2.6.12-rc2/source/net/core/sock.c#L1452
|
||||||
|
// Linux 5.10 - https://elixir.bootlin.com/linux/v5.10.4/source/net/core/sock.c#L3586
|
||||||
|
func (fs FS) NetProtocols() (NetProtocolStats, error) {
|
||||||
|
data, err := util.ReadFileNoStat(fs.proc.Path("net/protocols"))
|
||||||
|
if err != nil {
|
||||||
|
return NetProtocolStats{}, err
|
||||||
|
}
|
||||||
|
return parseNetProtocols(bufio.NewScanner(bytes.NewReader(data)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseNetProtocols(s *bufio.Scanner) (NetProtocolStats, error) {
|
||||||
|
nps := NetProtocolStats{}
|
||||||
|
|
||||||
|
// Skip the header line
|
||||||
|
s.Scan()
|
||||||
|
|
||||||
|
for s.Scan() {
|
||||||
|
line, err := nps.parseLine(s.Text())
|
||||||
|
if err != nil {
|
||||||
|
return NetProtocolStats{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
nps[line.Name] = *line
|
||||||
|
}
|
||||||
|
return nps, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ps NetProtocolStats) parseLine(rawLine string) (*NetProtocolStatLine, error) {
|
||||||
|
line := &NetProtocolStatLine{Capabilities: NetProtocolCapabilities{}}
|
||||||
|
var err error
|
||||||
|
const enabled = "yes"
|
||||||
|
const disabled = "no"
|
||||||
|
|
||||||
|
fields := strings.Fields(rawLine)
|
||||||
|
line.Name = fields[0]
|
||||||
|
line.Size, err = strconv.ParseUint(fields[1], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
line.Sockets, err = strconv.ParseInt(fields[2], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
line.Memory, err = strconv.ParseInt(fields[3], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if fields[4] == enabled {
|
||||||
|
line.Pressure = 1
|
||||||
|
} else if fields[4] == disabled {
|
||||||
|
line.Pressure = 0
|
||||||
|
} else {
|
||||||
|
line.Pressure = -1
|
||||||
|
}
|
||||||
|
line.MaxHeader, err = strconv.ParseUint(fields[5], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if fields[6] == enabled {
|
||||||
|
line.Slab = true
|
||||||
|
} else if fields[6] == disabled {
|
||||||
|
line.Slab = false
|
||||||
|
} else {
|
||||||
|
return nil, fmt.Errorf("unable to parse capability for protocol: %s", line.Name)
|
||||||
|
}
|
||||||
|
line.ModuleName = fields[7]
|
||||||
|
|
||||||
|
err = line.Capabilities.parseCapabilities(fields[8:])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return line, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pc *NetProtocolCapabilities) parseCapabilities(capabilities []string) error {
|
||||||
|
// The capabilities are all bools so we can loop over to map them
|
||||||
|
capabilityFields := [...]*bool{
|
||||||
|
&pc.Close,
|
||||||
|
&pc.Connect,
|
||||||
|
&pc.Disconnect,
|
||||||
|
&pc.Accept,
|
||||||
|
&pc.IoCtl,
|
||||||
|
&pc.Init,
|
||||||
|
&pc.Destroy,
|
||||||
|
&pc.Shutdown,
|
||||||
|
&pc.SetSockOpt,
|
||||||
|
&pc.GetSockOpt,
|
||||||
|
&pc.SendMsg,
|
||||||
|
&pc.RecvMsg,
|
||||||
|
&pc.SendPage,
|
||||||
|
&pc.Bind,
|
||||||
|
&pc.BacklogRcv,
|
||||||
|
&pc.Hash,
|
||||||
|
&pc.UnHash,
|
||||||
|
&pc.GetPort,
|
||||||
|
&pc.EnterMemoryPressure,
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < len(capabilities); i++ {
|
||||||
|
if capabilities[i] == "y" {
|
||||||
|
*capabilityFields[i] = true
|
||||||
|
} else if capabilities[i] == "n" {
|
||||||
|
*capabilityFields[i] = false
|
||||||
|
} else {
|
||||||
|
return fmt.Errorf("unable to parse capability block for protocol: position %d", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
82
vendor/github.com/prometheus/procfs/proc_limits.go
generated
vendored
82
vendor/github.com/prometheus/procfs/proc_limits.go
generated
vendored
|
@ -26,55 +26,55 @@ import (
|
||||||
// http://man7.org/linux/man-pages/man2/getrlimit.2.html.
|
// http://man7.org/linux/man-pages/man2/getrlimit.2.html.
|
||||||
type ProcLimits struct {
|
type ProcLimits struct {
|
||||||
// CPU time limit in seconds.
|
// CPU time limit in seconds.
|
||||||
CPUTime int64
|
CPUTime uint64
|
||||||
// Maximum size of files that the process may create.
|
// Maximum size of files that the process may create.
|
||||||
FileSize int64
|
FileSize uint64
|
||||||
// Maximum size of the process's data segment (initialized data,
|
// Maximum size of the process's data segment (initialized data,
|
||||||
// uninitialized data, and heap).
|
// uninitialized data, and heap).
|
||||||
DataSize int64
|
DataSize uint64
|
||||||
// Maximum size of the process stack in bytes.
|
// Maximum size of the process stack in bytes.
|
||||||
StackSize int64
|
StackSize uint64
|
||||||
// Maximum size of a core file.
|
// Maximum size of a core file.
|
||||||
CoreFileSize int64
|
CoreFileSize uint64
|
||||||
// Limit of the process's resident set in pages.
|
// Limit of the process's resident set in pages.
|
||||||
ResidentSet int64
|
ResidentSet uint64
|
||||||
// Maximum number of processes that can be created for the real user ID of
|
// Maximum number of processes that can be created for the real user ID of
|
||||||
// the calling process.
|
// the calling process.
|
||||||
Processes int64
|
Processes uint64
|
||||||
// Value one greater than the maximum file descriptor number that can be
|
// Value one greater than the maximum file descriptor number that can be
|
||||||
// opened by this process.
|
// opened by this process.
|
||||||
OpenFiles int64
|
OpenFiles uint64
|
||||||
// Maximum number of bytes of memory that may be locked into RAM.
|
// Maximum number of bytes of memory that may be locked into RAM.
|
||||||
LockedMemory int64
|
LockedMemory uint64
|
||||||
// Maximum size of the process's virtual memory address space in bytes.
|
// Maximum size of the process's virtual memory address space in bytes.
|
||||||
AddressSpace int64
|
AddressSpace uint64
|
||||||
// Limit on the combined number of flock(2) locks and fcntl(2) leases that
|
// Limit on the combined number of flock(2) locks and fcntl(2) leases that
|
||||||
// this process may establish.
|
// this process may establish.
|
||||||
FileLocks int64
|
FileLocks uint64
|
||||||
// Limit of signals that may be queued for the real user ID of the calling
|
// Limit of signals that may be queued for the real user ID of the calling
|
||||||
// process.
|
// process.
|
||||||
PendingSignals int64
|
PendingSignals uint64
|
||||||
// Limit on the number of bytes that can be allocated for POSIX message
|
// Limit on the number of bytes that can be allocated for POSIX message
|
||||||
// queues for the real user ID of the calling process.
|
// queues for the real user ID of the calling process.
|
||||||
MsqqueueSize int64
|
MsqqueueSize uint64
|
||||||
// Limit of the nice priority set using setpriority(2) or nice(2).
|
// Limit of the nice priority set using setpriority(2) or nice(2).
|
||||||
NicePriority int64
|
NicePriority uint64
|
||||||
// Limit of the real-time priority set using sched_setscheduler(2) or
|
// Limit of the real-time priority set using sched_setscheduler(2) or
|
||||||
// sched_setparam(2).
|
// sched_setparam(2).
|
||||||
RealtimePriority int64
|
RealtimePriority uint64
|
||||||
// Limit (in microseconds) on the amount of CPU time that a process
|
// Limit (in microseconds) on the amount of CPU time that a process
|
||||||
// scheduled under a real-time scheduling policy may consume without making
|
// scheduled under a real-time scheduling policy may consume without making
|
||||||
// a blocking system call.
|
// a blocking system call.
|
||||||
RealtimeTimeout int64
|
RealtimeTimeout uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
limitsFields = 3
|
limitsFields = 4
|
||||||
limitsUnlimited = "unlimited"
|
limitsUnlimited = "unlimited"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
limitsDelimiter = regexp.MustCompile(" +")
|
limitsMatch = regexp.MustCompile(`(Max \w+\s{0,1}?\w*\s{0,1}\w*)\s{2,}(\w+)\s+(\w+)`)
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewLimits returns the current soft limits of the process.
|
// NewLimits returns the current soft limits of the process.
|
||||||
|
@ -96,46 +96,50 @@ func (p Proc) Limits() (ProcLimits, error) {
|
||||||
l = ProcLimits{}
|
l = ProcLimits{}
|
||||||
s = bufio.NewScanner(f)
|
s = bufio.NewScanner(f)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
s.Scan() // Skip limits header
|
||||||
|
|
||||||
for s.Scan() {
|
for s.Scan() {
|
||||||
fields := limitsDelimiter.Split(s.Text(), limitsFields)
|
//fields := limitsMatch.Split(s.Text(), limitsFields)
|
||||||
|
fields := limitsMatch.FindStringSubmatch(s.Text())
|
||||||
if len(fields) != limitsFields {
|
if len(fields) != limitsFields {
|
||||||
return ProcLimits{}, fmt.Errorf(
|
return ProcLimits{}, fmt.Errorf(
|
||||||
"couldn't parse %s line %s", f.Name(), s.Text())
|
"couldn't parse %s line %s", f.Name(), s.Text())
|
||||||
}
|
}
|
||||||
|
|
||||||
switch fields[0] {
|
switch fields[1] {
|
||||||
case "Max cpu time":
|
case "Max cpu time":
|
||||||
l.CPUTime, err = parseInt(fields[1])
|
l.CPUTime, err = parseUint(fields[2])
|
||||||
case "Max file size":
|
case "Max file size":
|
||||||
l.FileSize, err = parseInt(fields[1])
|
l.FileSize, err = parseUint(fields[2])
|
||||||
case "Max data size":
|
case "Max data size":
|
||||||
l.DataSize, err = parseInt(fields[1])
|
l.DataSize, err = parseUint(fields[2])
|
||||||
case "Max stack size":
|
case "Max stack size":
|
||||||
l.StackSize, err = parseInt(fields[1])
|
l.StackSize, err = parseUint(fields[2])
|
||||||
case "Max core file size":
|
case "Max core file size":
|
||||||
l.CoreFileSize, err = parseInt(fields[1])
|
l.CoreFileSize, err = parseUint(fields[2])
|
||||||
case "Max resident set":
|
case "Max resident set":
|
||||||
l.ResidentSet, err = parseInt(fields[1])
|
l.ResidentSet, err = parseUint(fields[2])
|
||||||
case "Max processes":
|
case "Max processes":
|
||||||
l.Processes, err = parseInt(fields[1])
|
l.Processes, err = parseUint(fields[2])
|
||||||
case "Max open files":
|
case "Max open files":
|
||||||
l.OpenFiles, err = parseInt(fields[1])
|
l.OpenFiles, err = parseUint(fields[2])
|
||||||
case "Max locked memory":
|
case "Max locked memory":
|
||||||
l.LockedMemory, err = parseInt(fields[1])
|
l.LockedMemory, err = parseUint(fields[2])
|
||||||
case "Max address space":
|
case "Max address space":
|
||||||
l.AddressSpace, err = parseInt(fields[1])
|
l.AddressSpace, err = parseUint(fields[2])
|
||||||
case "Max file locks":
|
case "Max file locks":
|
||||||
l.FileLocks, err = parseInt(fields[1])
|
l.FileLocks, err = parseUint(fields[2])
|
||||||
case "Max pending signals":
|
case "Max pending signals":
|
||||||
l.PendingSignals, err = parseInt(fields[1])
|
l.PendingSignals, err = parseUint(fields[2])
|
||||||
case "Max msgqueue size":
|
case "Max msgqueue size":
|
||||||
l.MsqqueueSize, err = parseInt(fields[1])
|
l.MsqqueueSize, err = parseUint(fields[2])
|
||||||
case "Max nice priority":
|
case "Max nice priority":
|
||||||
l.NicePriority, err = parseInt(fields[1])
|
l.NicePriority, err = parseUint(fields[2])
|
||||||
case "Max realtime priority":
|
case "Max realtime priority":
|
||||||
l.RealtimePriority, err = parseInt(fields[1])
|
l.RealtimePriority, err = parseUint(fields[2])
|
||||||
case "Max realtime timeout":
|
case "Max realtime timeout":
|
||||||
l.RealtimeTimeout, err = parseInt(fields[1])
|
l.RealtimeTimeout, err = parseUint(fields[2])
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ProcLimits{}, err
|
return ProcLimits{}, err
|
||||||
|
@ -145,11 +149,11 @@ func (p Proc) Limits() (ProcLimits, error) {
|
||||||
return l, s.Err()
|
return l, s.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseInt(s string) (int64, error) {
|
func parseUint(s string) (uint64, error) {
|
||||||
if s == limitsUnlimited {
|
if s == limitsUnlimited {
|
||||||
return -1, nil
|
return 18446744073709551615, nil
|
||||||
}
|
}
|
||||||
i, err := strconv.ParseInt(s, 10, 64)
|
i, err := strconv.ParseUint(s, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("couldn't parse value %s: %s", s, err)
|
return 0, fmt.Errorf("couldn't parse value %s: %s", s, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2015 Dmitri Shuralyov
|
Copyright (c) 2019 Oliver Kuederle
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
62
vendor/github.com/rivo/uniseg/README.md
generated
vendored
Normal file
62
vendor/github.com/rivo/uniseg/README.md
generated
vendored
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# Unicode Text Segmentation for Go
|
||||||
|
|
||||||
|
[![Godoc Reference](https://img.shields.io/badge/godoc-reference-blue.svg)](https://godoc.org/github.com/rivo/uniseg)
|
||||||
|
[![Go Report](https://img.shields.io/badge/go%20report-A%2B-brightgreen.svg)](https://goreportcard.com/report/github.com/rivo/uniseg)
|
||||||
|
|
||||||
|
This Go package implements Unicode Text Segmentation according to [Unicode Standard Annex #29](http://unicode.org/reports/tr29/) (Unicode version 12.0.0).
|
||||||
|
|
||||||
|
At this point, only the determination of grapheme cluster boundaries is implemented.
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
In Go, [strings are read-only slices of bytes](https://blog.golang.org/strings). They can be turned into Unicode code points using the `for` loop or by casting: `[]rune(str)`. However, multiple code points may be combined into one user-perceived character or what the Unicode specification calls "grapheme cluster". Here are some examples:
|
||||||
|
|
||||||
|
|String|Bytes (UTF-8)|Code points (runes)|Grapheme clusters|
|
||||||
|
|-|-|-|-|
|
||||||
|
|Käse|6 bytes: `4b 61 cc 88 73 65`|5 code points: `4b 61 308 73 65`|4 clusters: `[4b],[61 308],[73],[65]`|
|
||||||
|
|🏳️🌈|14 bytes: `f0 9f 8f b3 ef b8 8f e2 80 8d f0 9f 8c 88`|4 code points: `1f3f3 fe0f 200d 1f308`|1 cluster: `[1f3f3 fe0f 200d 1f308]`|
|
||||||
|
|🇩🇪|8 bytes: `f0 9f 87 a9 f0 9f 87 aa`|2 code points: `1f1e9 1f1ea`|1 cluster: `[1f1e9 1f1ea]`|
|
||||||
|
|
||||||
|
This package provides a tool to iterate over these grapheme clusters. This may be used to determine the number of user-perceived characters, to split strings in their intended places, or to extract individual characters which form a unit.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/rivo/uniseg
|
||||||
|
```
|
||||||
|
|
||||||
|
## Basic Example
|
||||||
|
|
||||||
|
```go
|
||||||
|
package uniseg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/rivo/uniseg"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
gr := uniseg.NewGraphemes("👍🏼!")
|
||||||
|
for gr.Next() {
|
||||||
|
fmt.Printf("%x ", gr.Runes())
|
||||||
|
}
|
||||||
|
// Output: [1f44d 1f3fc] [21]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Refer to https://godoc.org/github.com/rivo/uniseg for the package's documentation.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This package does not depend on any packages outside the standard library.
|
||||||
|
|
||||||
|
## Your Feedback
|
||||||
|
|
||||||
|
Add your issue here on GitHub. Feel free to get in touch if you have any questions.
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
Version tags will be introduced once Golang modules are official. Consider this version 0.1.
|
8
vendor/github.com/rivo/uniseg/doc.go
generated
vendored
Normal file
8
vendor/github.com/rivo/uniseg/doc.go
generated
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
/*
|
||||||
|
Package uniseg implements Unicode Text Segmentation according to Unicode
|
||||||
|
Standard Annex #29 (http://unicode.org/reports/tr29/).
|
||||||
|
|
||||||
|
At this point, only the determination of grapheme cluster boundaries is
|
||||||
|
implemented.
|
||||||
|
*/
|
||||||
|
package uniseg
|
3
vendor/github.com/rivo/uniseg/go.mod
generated
vendored
Normal file
3
vendor/github.com/rivo/uniseg/go.mod
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module github.com/rivo/uniseg
|
||||||
|
|
||||||
|
go 1.12
|
268
vendor/github.com/rivo/uniseg/grapheme.go
generated
vendored
Normal file
268
vendor/github.com/rivo/uniseg/grapheme.go
generated
vendored
Normal file
|
@ -0,0 +1,268 @@
|
||||||
|
package uniseg
|
||||||
|
|
||||||
|
import "unicode/utf8"
|
||||||
|
|
||||||
|
// The states of the grapheme cluster parser.
|
||||||
|
const (
|
||||||
|
grAny = iota
|
||||||
|
grCR
|
||||||
|
grControlLF
|
||||||
|
grL
|
||||||
|
grLVV
|
||||||
|
grLVTT
|
||||||
|
grPrepend
|
||||||
|
grExtendedPictographic
|
||||||
|
grExtendedPictographicZWJ
|
||||||
|
grRIOdd
|
||||||
|
grRIEven
|
||||||
|
)
|
||||||
|
|
||||||
|
// The grapheme cluster parser's breaking instructions.
|
||||||
|
const (
|
||||||
|
grNoBoundary = iota
|
||||||
|
grBoundary
|
||||||
|
)
|
||||||
|
|
||||||
|
// The grapheme cluster parser's state transitions. Maps (state, property) to
|
||||||
|
// (new state, breaking instruction, rule number). The breaking instruction
|
||||||
|
// always refers to the boundary between the last and next code point.
|
||||||
|
//
|
||||||
|
// This map is queried as follows:
|
||||||
|
//
|
||||||
|
// 1. Find specific state + specific property. Stop if found.
|
||||||
|
// 2. Find specific state + any property.
|
||||||
|
// 3. Find any state + specific property.
|
||||||
|
// 4. If only (2) or (3) (but not both) was found, stop.
|
||||||
|
// 5. If both (2) and (3) were found, use state and breaking instruction from
|
||||||
|
// the transition with the lower rule number, prefer (3) if rule numbers
|
||||||
|
// are equal. Stop.
|
||||||
|
// 6. Assume grAny and grBoundary.
|
||||||
|
var grTransitions = map[[2]int][3]int{
|
||||||
|
// GB5
|
||||||
|
{grAny, prCR}: {grCR, grBoundary, 50},
|
||||||
|
{grAny, prLF}: {grControlLF, grBoundary, 50},
|
||||||
|
{grAny, prControl}: {grControlLF, grBoundary, 50},
|
||||||
|
|
||||||
|
// GB4
|
||||||
|
{grCR, prAny}: {grAny, grBoundary, 40},
|
||||||
|
{grControlLF, prAny}: {grAny, grBoundary, 40},
|
||||||
|
|
||||||
|
// GB3.
|
||||||
|
{grCR, prLF}: {grAny, grNoBoundary, 30},
|
||||||
|
|
||||||
|
// GB6.
|
||||||
|
{grAny, prL}: {grL, grBoundary, 9990},
|
||||||
|
{grL, prL}: {grL, grNoBoundary, 60},
|
||||||
|
{grL, prV}: {grLVV, grNoBoundary, 60},
|
||||||
|
{grL, prLV}: {grLVV, grNoBoundary, 60},
|
||||||
|
{grL, prLVT}: {grLVTT, grNoBoundary, 60},
|
||||||
|
|
||||||
|
// GB7.
|
||||||
|
{grAny, prLV}: {grLVV, grBoundary, 9990},
|
||||||
|
{grAny, prV}: {grLVV, grBoundary, 9990},
|
||||||
|
{grLVV, prV}: {grLVV, grNoBoundary, 70},
|
||||||
|
{grLVV, prT}: {grLVTT, grNoBoundary, 70},
|
||||||
|
|
||||||
|
// GB8.
|
||||||
|
{grAny, prLVT}: {grLVTT, grBoundary, 9990},
|
||||||
|
{grAny, prT}: {grLVTT, grBoundary, 9990},
|
||||||
|
{grLVTT, prT}: {grLVTT, grNoBoundary, 80},
|
||||||
|
|
||||||
|
// GB9.
|
||||||
|
{grAny, prExtend}: {grAny, grNoBoundary, 90},
|
||||||
|
{grAny, prZWJ}: {grAny, grNoBoundary, 90},
|
||||||
|
|
||||||
|
// GB9a.
|
||||||
|
{grAny, prSpacingMark}: {grAny, grNoBoundary, 91},
|
||||||
|
|
||||||
|
// GB9b.
|
||||||
|
{grAny, prPreprend}: {grPrepend, grBoundary, 9990},
|
||||||
|
{grPrepend, prAny}: {grAny, grNoBoundary, 92},
|
||||||
|
|
||||||
|
// GB11.
|
||||||
|
{grAny, prExtendedPictographic}: {grExtendedPictographic, grBoundary, 9990},
|
||||||
|
{grExtendedPictographic, prExtend}: {grExtendedPictographic, grNoBoundary, 110},
|
||||||
|
{grExtendedPictographic, prZWJ}: {grExtendedPictographicZWJ, grNoBoundary, 110},
|
||||||
|
{grExtendedPictographicZWJ, prExtendedPictographic}: {grExtendedPictographic, grNoBoundary, 110},
|
||||||
|
|
||||||
|
// GB12 / GB13.
|
||||||
|
{grAny, prRegionalIndicator}: {grRIOdd, grBoundary, 9990},
|
||||||
|
{grRIOdd, prRegionalIndicator}: {grRIEven, grNoBoundary, 120},
|
||||||
|
{grRIEven, prRegionalIndicator}: {grRIOdd, grBoundary, 120},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Graphemes implements an iterator over Unicode extended grapheme clusters,
|
||||||
|
// specified in the Unicode Standard Annex #29. Grapheme clusters correspond to
|
||||||
|
// "user-perceived characters". These characters often consist of multiple
|
||||||
|
// code points (e.g. the "woman kissing woman" emoji consists of 8 code points:
|
||||||
|
// woman + ZWJ + heavy black heart (2 code points) + ZWJ + kiss mark + ZWJ +
|
||||||
|
// woman) and the rules described in Annex #29 must be applied to group those
|
||||||
|
// code points into clusters perceived by the user as one character.
|
||||||
|
type Graphemes struct {
|
||||||
|
// The code points over which this class iterates.
|
||||||
|
codePoints []rune
|
||||||
|
|
||||||
|
// The (byte-based) indices of the code points into the original string plus
|
||||||
|
// len(original string). Thus, len(indices) = len(codePoints) + 1.
|
||||||
|
indices []int
|
||||||
|
|
||||||
|
// The current grapheme cluster to be returned. These are indices into
|
||||||
|
// codePoints/indices. If start == end, we either haven't started iterating
|
||||||
|
// yet (0) or the iteration has already completed (1).
|
||||||
|
start, end int
|
||||||
|
|
||||||
|
// The index of the next code point to be parsed.
|
||||||
|
pos int
|
||||||
|
|
||||||
|
// The current state of the code point parser.
|
||||||
|
state int
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGraphemes returns a new grapheme cluster iterator.
|
||||||
|
func NewGraphemes(s string) *Graphemes {
|
||||||
|
l := utf8.RuneCountInString(s)
|
||||||
|
codePoints := make([]rune, l)
|
||||||
|
indices := make([]int, l+1)
|
||||||
|
i := 0
|
||||||
|
for pos, r := range s {
|
||||||
|
codePoints[i] = r
|
||||||
|
indices[i] = pos
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
indices[l] = len(s)
|
||||||
|
g := &Graphemes{
|
||||||
|
codePoints: codePoints,
|
||||||
|
indices: indices,
|
||||||
|
}
|
||||||
|
g.Next() // Parse ahead.
|
||||||
|
return g
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next advances the iterator by one grapheme cluster and returns false if no
|
||||||
|
// clusters are left. This function must be called before the first cluster is
|
||||||
|
// accessed.
|
||||||
|
func (g *Graphemes) Next() bool {
|
||||||
|
g.start = g.end
|
||||||
|
|
||||||
|
// The state transition gives us a boundary instruction BEFORE the next code
|
||||||
|
// point so we always need to stay ahead by one code point.
|
||||||
|
|
||||||
|
// Parse the next code point.
|
||||||
|
for g.pos <= len(g.codePoints) {
|
||||||
|
// GB2.
|
||||||
|
if g.pos == len(g.codePoints) {
|
||||||
|
g.end = g.pos
|
||||||
|
g.pos++
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine the property of the next character.
|
||||||
|
nextProperty := property(g.codePoints[g.pos])
|
||||||
|
g.pos++
|
||||||
|
|
||||||
|
// Find the applicable transition.
|
||||||
|
var boundary bool
|
||||||
|
transition, ok := grTransitions[[2]int{g.state, nextProperty}]
|
||||||
|
if ok {
|
||||||
|
// We have a specific transition. We'll use it.
|
||||||
|
g.state = transition[0]
|
||||||
|
boundary = transition[1] == grBoundary
|
||||||
|
} else {
|
||||||
|
// No specific transition found. Try the less specific ones.
|
||||||
|
transAnyProp, okAnyProp := grTransitions[[2]int{g.state, prAny}]
|
||||||
|
transAnyState, okAnyState := grTransitions[[2]int{grAny, nextProperty}]
|
||||||
|
if okAnyProp && okAnyState {
|
||||||
|
// Both apply. We'll use a mix (see comments for grTransitions).
|
||||||
|
g.state = transAnyState[0]
|
||||||
|
boundary = transAnyState[1] == grBoundary
|
||||||
|
if transAnyProp[2] < transAnyState[2] {
|
||||||
|
g.state = transAnyProp[0]
|
||||||
|
boundary = transAnyProp[1] == grBoundary
|
||||||
|
}
|
||||||
|
} else if okAnyProp {
|
||||||
|
// We only have a specific state.
|
||||||
|
g.state = transAnyProp[0]
|
||||||
|
boundary = transAnyProp[1] == grBoundary
|
||||||
|
// This branch will probably never be reached because okAnyState will
|
||||||
|
// always be true given the current transition map. But we keep it here
|
||||||
|
// for future modifications to the transition map where this may not be
|
||||||
|
// true anymore.
|
||||||
|
} else if okAnyState {
|
||||||
|
// We only have a specific property.
|
||||||
|
g.state = transAnyState[0]
|
||||||
|
boundary = transAnyState[1] == grBoundary
|
||||||
|
} else {
|
||||||
|
// No known transition. GB999: Any x Any.
|
||||||
|
g.state = grAny
|
||||||
|
boundary = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we found a cluster boundary, let's stop here. The current cluster will
|
||||||
|
// be the one that just ended.
|
||||||
|
if g.pos-1 == 0 /* GB1 */ || boundary {
|
||||||
|
g.end = g.pos - 1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return g.start != g.end
|
||||||
|
}
|
||||||
|
|
||||||
|
// Runes returns a slice of runes (code points) which corresponds to the current
|
||||||
|
// grapheme cluster. If the iterator is already past the end or Next() has not
|
||||||
|
// yet been called, nil is returned.
|
||||||
|
func (g *Graphemes) Runes() []rune {
|
||||||
|
if g.start == g.end {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return g.codePoints[g.start:g.end]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Str returns a substring of the original string which corresponds to the
|
||||||
|
// current grapheme cluster. If the iterator is already past the end or Next()
|
||||||
|
// has not yet been called, an empty string is returned.
|
||||||
|
func (g *Graphemes) Str() string {
|
||||||
|
if g.start == g.end {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(g.codePoints[g.start:g.end])
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bytes returns a byte slice which corresponds to the current grapheme cluster.
|
||||||
|
// If the iterator is already past the end or Next() has not yet been called,
|
||||||
|
// nil is returned.
|
||||||
|
func (g *Graphemes) Bytes() []byte {
|
||||||
|
if g.start == g.end {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return []byte(string(g.codePoints[g.start:g.end]))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Positions returns the interval of the current grapheme cluster as byte
|
||||||
|
// positions into the original string. The first returned value "from" indexes
|
||||||
|
// the first byte and the second returned value "to" indexes the first byte that
|
||||||
|
// is not included anymore, i.e. str[from:to] is the current grapheme cluster of
|
||||||
|
// the original string "str". If Next() has not yet been called, both values are
|
||||||
|
// 0. If the iterator is already past the end, both values are 1.
|
||||||
|
func (g *Graphemes) Positions() (int, int) {
|
||||||
|
return g.indices[g.start], g.indices[g.end]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset puts the iterator into its initial state such that the next call to
|
||||||
|
// Next() sets it to the first grapheme cluster again.
|
||||||
|
func (g *Graphemes) Reset() {
|
||||||
|
g.start, g.end, g.pos, g.state = 0, 0, 0, grAny
|
||||||
|
g.Next() // Parse ahead again.
|
||||||
|
}
|
||||||
|
|
||||||
|
// GraphemeClusterCount returns the number of user-perceived characters
|
||||||
|
// (grapheme clusters) for the given string. To calculate this number, it
|
||||||
|
// iterates through the string using the Graphemes iterator.
|
||||||
|
func GraphemeClusterCount(s string) (n int) {
|
||||||
|
g := NewGraphemes(s)
|
||||||
|
for g.Next() {
|
||||||
|
n++
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
1658
vendor/github.com/rivo/uniseg/properties.go
generated
vendored
Normal file
1658
vendor/github.com/rivo/uniseg/properties.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
90
vendor/github.com/russross/blackfriday/v2/README.md
generated
vendored
90
vendor/github.com/russross/blackfriday/v2/README.md
generated
vendored
|
@ -1,4 +1,6 @@
|
||||||
Blackfriday [![Build Status](https://travis-ci.org/russross/blackfriday.svg?branch=master)](https://travis-ci.org/russross/blackfriday)
|
Blackfriday
|
||||||
|
[![Build Status][BuildV2SVG]][BuildV2URL]
|
||||||
|
[![PkgGoDev][PkgGoDevV2SVG]][PkgGoDevV2URL]
|
||||||
===========
|
===========
|
||||||
|
|
||||||
Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It
|
Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It
|
||||||
|
@ -16,19 +18,21 @@ It started as a translation from C of [Sundown][3].
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Blackfriday is compatible with any modern Go release. With Go 1.7 and git
|
Blackfriday is compatible with modern Go releases in module mode.
|
||||||
installed:
|
With Go installed:
|
||||||
|
|
||||||
go get gopkg.in/russross/blackfriday.v2
|
go get github.com/russross/blackfriday/v2
|
||||||
|
|
||||||
will download, compile, and install the package into your `$GOPATH`
|
will resolve and add the package to the current development module,
|
||||||
directory hierarchy. Alternatively, you can achieve the same if you
|
then build and install it. Alternatively, you can achieve the same
|
||||||
import it into a project:
|
if you import it in a package:
|
||||||
|
|
||||||
import "gopkg.in/russross/blackfriday.v2"
|
import "github.com/russross/blackfriday/v2"
|
||||||
|
|
||||||
and `go get` without parameters.
|
and `go get` without parameters.
|
||||||
|
|
||||||
|
Legacy GOPATH mode is unsupported.
|
||||||
|
|
||||||
|
|
||||||
Versions
|
Versions
|
||||||
--------
|
--------
|
||||||
|
@ -36,13 +40,9 @@ Versions
|
||||||
Currently maintained and recommended version of Blackfriday is `v2`. It's being
|
Currently maintained and recommended version of Blackfriday is `v2`. It's being
|
||||||
developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the
|
developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the
|
||||||
documentation is available at
|
documentation is available at
|
||||||
https://godoc.org/gopkg.in/russross/blackfriday.v2.
|
https://pkg.go.dev/github.com/russross/blackfriday/v2.
|
||||||
|
|
||||||
It is `go get`-able via via [gopkg.in][6] at `gopkg.in/russross/blackfriday.v2`,
|
It is `go get`-able in module mode at `github.com/russross/blackfriday/v2`.
|
||||||
but we highly recommend using package management tool like [dep][7] or
|
|
||||||
[Glide][8] and make use of semantic versioning. With package management you
|
|
||||||
should import `github.com/russross/blackfriday` and specify that you're using
|
|
||||||
version 2.0.0.
|
|
||||||
|
|
||||||
Version 2 offers a number of improvements over v1:
|
Version 2 offers a number of improvements over v1:
|
||||||
|
|
||||||
|
@ -62,6 +62,11 @@ Potential drawbacks:
|
||||||
v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for
|
v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for
|
||||||
tracking.
|
tracking.
|
||||||
|
|
||||||
|
If you are still interested in the legacy `v1`, you can import it from
|
||||||
|
`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found
|
||||||
|
here: https://pkg.go.dev/github.com/russross/blackfriday.
|
||||||
|
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -91,7 +96,7 @@ Here's an example of simple usage of Blackfriday together with Bluemonday:
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"github.com/microcosm-cc/bluemonday"
|
"github.com/microcosm-cc/bluemonday"
|
||||||
"github.com/russross/blackfriday"
|
"github.com/russross/blackfriday/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
@ -104,6 +109,8 @@ html := bluemonday.UGCPolicy().SanitizeBytes(unsafe)
|
||||||
If you want to customize the set of options, use `blackfriday.WithExtensions`,
|
If you want to customize the set of options, use `blackfriday.WithExtensions`,
|
||||||
`blackfriday.WithRenderer` and `blackfriday.WithRefOverride`.
|
`blackfriday.WithRenderer` and `blackfriday.WithRefOverride`.
|
||||||
|
|
||||||
|
### `blackfriday-tool`
|
||||||
|
|
||||||
You can also check out `blackfriday-tool` for a more complete example
|
You can also check out `blackfriday-tool` for a more complete example
|
||||||
of how to use it. Download and install it using:
|
of how to use it. Download and install it using:
|
||||||
|
|
||||||
|
@ -114,7 +121,7 @@ markdown file using a standalone program. You can also browse the
|
||||||
source directly on github if you are just looking for some example
|
source directly on github if you are just looking for some example
|
||||||
code:
|
code:
|
||||||
|
|
||||||
* <http://github.com/russross/blackfriday-tool>
|
* <https://github.com/russross/blackfriday-tool>
|
||||||
|
|
||||||
Note that if you have not already done so, installing
|
Note that if you have not already done so, installing
|
||||||
`blackfriday-tool` will be sufficient to download and install
|
`blackfriday-tool` will be sufficient to download and install
|
||||||
|
@ -123,6 +130,22 @@ installed in `$GOPATH/bin`. This is a statically-linked binary that
|
||||||
can be copied to wherever you need it without worrying about
|
can be copied to wherever you need it without worrying about
|
||||||
dependencies and library versions.
|
dependencies and library versions.
|
||||||
|
|
||||||
|
### Sanitized anchor names
|
||||||
|
|
||||||
|
Blackfriday includes an algorithm for creating sanitized anchor names
|
||||||
|
corresponding to a given input text. This algorithm is used to create
|
||||||
|
anchors for headings when `AutoHeadingIDs` extension is enabled. The
|
||||||
|
algorithm has a specification, so that other packages can create
|
||||||
|
compatible anchor names and links to those anchors.
|
||||||
|
|
||||||
|
The specification is located at https://pkg.go.dev/github.com/russross/blackfriday/v2#hdr-Sanitized_Anchor_Names.
|
||||||
|
|
||||||
|
[`SanitizedAnchorName`](https://pkg.go.dev/github.com/russross/blackfriday/v2#SanitizedAnchorName) exposes this functionality, and can be used to
|
||||||
|
create compatible links to the anchor names generated by blackfriday.
|
||||||
|
This algorithm is also implemented in a small standalone package at
|
||||||
|
[`github.com/shurcooL/sanitized_anchor_name`](https://pkg.go.dev/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients
|
||||||
|
that want a small package and don't need full functionality of blackfriday.
|
||||||
|
|
||||||
|
|
||||||
Features
|
Features
|
||||||
--------
|
--------
|
||||||
|
@ -199,6 +222,15 @@ implements the following extensions:
|
||||||
You can use 3 or more backticks to mark the beginning of the
|
You can use 3 or more backticks to mark the beginning of the
|
||||||
block, and the same number to mark the end of the block.
|
block, and the same number to mark the end of the block.
|
||||||
|
|
||||||
|
To preserve classes of fenced code blocks while using the bluemonday
|
||||||
|
HTML sanitizer, use the following policy:
|
||||||
|
|
||||||
|
```go
|
||||||
|
p := bluemonday.UGCPolicy()
|
||||||
|
p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code")
|
||||||
|
html := p.SanitizeBytes(unsafe)
|
||||||
|
```
|
||||||
|
|
||||||
* **Definition lists**. A simple definition list is made of a single-line
|
* **Definition lists**. A simple definition list is made of a single-line
|
||||||
term followed by a colon and the definition for that term.
|
term followed by a colon and the definition for that term.
|
||||||
|
|
||||||
|
@ -250,7 +282,7 @@ Other renderers
|
||||||
Blackfriday is structured to allow alternative rendering engines. Here
|
Blackfriday is structured to allow alternative rendering engines. Here
|
||||||
are a few of note:
|
are a few of note:
|
||||||
|
|
||||||
* [github_flavored_markdown](https://godoc.org/github.com/shurcooL/github_flavored_markdown):
|
* [github_flavored_markdown](https://pkg.go.dev/github.com/shurcooL/github_flavored_markdown):
|
||||||
provides a GitHub Flavored Markdown renderer with fenced code block
|
provides a GitHub Flavored Markdown renderer with fenced code block
|
||||||
highlighting, clickable heading anchor links.
|
highlighting, clickable heading anchor links.
|
||||||
|
|
||||||
|
@ -261,20 +293,28 @@ are a few of note:
|
||||||
* [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt,
|
* [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt,
|
||||||
but for markdown.
|
but for markdown.
|
||||||
|
|
||||||
* [LaTeX output](https://github.com/Ambrevar/Blackfriday-LaTeX):
|
* [LaTeX output](https://gitlab.com/ambrevar/blackfriday-latex):
|
||||||
renders output as LaTeX.
|
renders output as LaTeX.
|
||||||
|
|
||||||
|
* [bfchroma](https://github.com/Depado/bfchroma/): provides convenience
|
||||||
|
integration with the [Chroma](https://github.com/alecthomas/chroma) code
|
||||||
|
highlighting library. bfchroma is only compatible with v2 of Blackfriday and
|
||||||
|
provides a drop-in renderer ready to use with Blackfriday, as well as
|
||||||
|
options and means for further customization.
|
||||||
|
|
||||||
* [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer.
|
* [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer.
|
||||||
|
|
||||||
|
* [Blackfriday-Slack](https://github.com/karriereat/blackfriday-slack): converts markdown to slack message style
|
||||||
|
|
||||||
Todo
|
|
||||||
|
TODO
|
||||||
----
|
----
|
||||||
|
|
||||||
* More unit testing
|
* More unit testing
|
||||||
* Improve unicode support. It does not understand all unicode
|
* Improve Unicode support. It does not understand all Unicode
|
||||||
rules (about what constitutes a letter, a punctuation symbol,
|
rules (about what constitutes a letter, a punctuation symbol,
|
||||||
etc.), so it may fail to detect word boundaries correctly in
|
etc.), so it may fail to detect word boundaries correctly in
|
||||||
some instances. It is safe on all utf-8 input.
|
some instances. It is safe on all UTF-8 input.
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
|
@ -286,6 +326,10 @@ License
|
||||||
[1]: https://daringfireball.net/projects/markdown/ "Markdown"
|
[1]: https://daringfireball.net/projects/markdown/ "Markdown"
|
||||||
[2]: https://golang.org/ "Go Language"
|
[2]: https://golang.org/ "Go Language"
|
||||||
[3]: https://github.com/vmg/sundown "Sundown"
|
[3]: https://github.com/vmg/sundown "Sundown"
|
||||||
[4]: https://godoc.org/gopkg.in/russross/blackfriday.v2#Parse "Parse func"
|
[4]: https://pkg.go.dev/github.com/russross/blackfriday/v2#Parse "Parse func"
|
||||||
[5]: https://github.com/microcosm-cc/bluemonday "Bluemonday"
|
[5]: https://github.com/microcosm-cc/bluemonday "Bluemonday"
|
||||||
[6]: https://labix.org/gopkg.in "gopkg.in"
|
|
||||||
|
[BuildV2SVG]: https://travis-ci.org/russross/blackfriday.svg?branch=v2
|
||||||
|
[BuildV2URL]: https://travis-ci.org/russross/blackfriday
|
||||||
|
[PkgGoDevV2SVG]: https://pkg.go.dev/badge/github.com/russross/blackfriday/v2
|
||||||
|
[PkgGoDevV2URL]: https://pkg.go.dev/github.com/russross/blackfriday/v2
|
||||||
|
|
30
vendor/github.com/russross/blackfriday/v2/block.go
generated
vendored
30
vendor/github.com/russross/blackfriday/v2/block.go
generated
vendored
|
@ -18,8 +18,7 @@ import (
|
||||||
"html"
|
"html"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
"unicode"
|
||||||
"github.com/shurcooL/sanitized_anchor_name"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -259,7 +258,7 @@ func (p *Markdown) prefixHeading(data []byte) int {
|
||||||
}
|
}
|
||||||
if end > i {
|
if end > i {
|
||||||
if id == "" && p.extensions&AutoHeadingIDs != 0 {
|
if id == "" && p.extensions&AutoHeadingIDs != 0 {
|
||||||
id = sanitized_anchor_name.Create(string(data[i:end]))
|
id = SanitizedAnchorName(string(data[i:end]))
|
||||||
}
|
}
|
||||||
block := p.addBlock(Heading, data[i:end])
|
block := p.addBlock(Heading, data[i:end])
|
||||||
block.HeadingID = id
|
block.HeadingID = id
|
||||||
|
@ -673,6 +672,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int {
|
||||||
if beg == 0 || beg >= len(data) {
|
if beg == 0 || beg >= len(data) {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
fenceLength := beg - 1
|
||||||
|
|
||||||
var work bytes.Buffer
|
var work bytes.Buffer
|
||||||
work.Write([]byte(info))
|
work.Write([]byte(info))
|
||||||
|
@ -706,6 +706,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int {
|
||||||
if doRender {
|
if doRender {
|
||||||
block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer
|
block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer
|
||||||
block.IsFenced = true
|
block.IsFenced = true
|
||||||
|
block.FenceLength = fenceLength
|
||||||
finalizeCodeBlock(block)
|
finalizeCodeBlock(block)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1503,7 +1504,7 @@ func (p *Markdown) paragraph(data []byte) int {
|
||||||
|
|
||||||
id := ""
|
id := ""
|
||||||
if p.extensions&AutoHeadingIDs != 0 {
|
if p.extensions&AutoHeadingIDs != 0 {
|
||||||
id = sanitized_anchor_name.Create(string(data[prev:eol]))
|
id = SanitizedAnchorName(string(data[prev:eol]))
|
||||||
}
|
}
|
||||||
|
|
||||||
block := p.addBlock(Heading, data[prev:eol])
|
block := p.addBlock(Heading, data[prev:eol])
|
||||||
|
@ -1588,3 +1589,24 @@ func skipUntilChar(text []byte, start int, char byte) int {
|
||||||
}
|
}
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SanitizedAnchorName returns a sanitized anchor name for the given text.
|
||||||
|
//
|
||||||
|
// It implements the algorithm specified in the package comment.
|
||||||
|
func SanitizedAnchorName(text string) string {
|
||||||
|
var anchorName []rune
|
||||||
|
futureDash := false
|
||||||
|
for _, r := range text {
|
||||||
|
switch {
|
||||||
|
case unicode.IsLetter(r) || unicode.IsNumber(r):
|
||||||
|
if futureDash && len(anchorName) > 0 {
|
||||||
|
anchorName = append(anchorName, '-')
|
||||||
|
}
|
||||||
|
futureDash = false
|
||||||
|
anchorName = append(anchorName, unicode.ToLower(r))
|
||||||
|
default:
|
||||||
|
futureDash = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return string(anchorName)
|
||||||
|
}
|
||||||
|
|
28
vendor/github.com/russross/blackfriday/v2/doc.go
generated
vendored
28
vendor/github.com/russross/blackfriday/v2/doc.go
generated
vendored
|
@ -15,4 +15,32 @@
|
||||||
//
|
//
|
||||||
// If you're interested in calling Blackfriday from command line, see
|
// If you're interested in calling Blackfriday from command line, see
|
||||||
// https://github.com/russross/blackfriday-tool.
|
// https://github.com/russross/blackfriday-tool.
|
||||||
|
//
|
||||||
|
// Sanitized Anchor Names
|
||||||
|
//
|
||||||
|
// Blackfriday includes an algorithm for creating sanitized anchor names
|
||||||
|
// corresponding to a given input text. This algorithm is used to create
|
||||||
|
// anchors for headings when AutoHeadingIDs extension is enabled. The
|
||||||
|
// algorithm is specified below, so that other packages can create
|
||||||
|
// compatible anchor names and links to those anchors.
|
||||||
|
//
|
||||||
|
// The algorithm iterates over the input text, interpreted as UTF-8,
|
||||||
|
// one Unicode code point (rune) at a time. All runes that are letters (category L)
|
||||||
|
// or numbers (category N) are considered valid characters. They are mapped to
|
||||||
|
// lower case, and included in the output. All other runes are considered
|
||||||
|
// invalid characters. Invalid characters that precede the first valid character,
|
||||||
|
// as well as invalid character that follow the last valid character
|
||||||
|
// are dropped completely. All other sequences of invalid characters
|
||||||
|
// between two valid characters are replaced with a single dash character '-'.
|
||||||
|
//
|
||||||
|
// SanitizedAnchorName exposes this functionality, and can be used to
|
||||||
|
// create compatible links to the anchor names generated by blackfriday.
|
||||||
|
// This algorithm is also implemented in a small standalone package at
|
||||||
|
// github.com/shurcooL/sanitized_anchor_name. It can be useful for clients
|
||||||
|
// that want a small package and don't need full functionality of blackfriday.
|
||||||
package blackfriday
|
package blackfriday
|
||||||
|
|
||||||
|
// NOTE: Keep Sanitized Anchor Name algorithm in sync with package
|
||||||
|
// github.com/shurcooL/sanitized_anchor_name.
|
||||||
|
// Otherwise, users of sanitized_anchor_name will get anchor names
|
||||||
|
// that are incompatible with those generated by blackfriday.
|
||||||
|
|
2236
vendor/github.com/russross/blackfriday/v2/entities.go
generated
vendored
Normal file
2236
vendor/github.com/russross/blackfriday/v2/entities.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
42
vendor/github.com/russross/blackfriday/v2/esc.go
generated
vendored
42
vendor/github.com/russross/blackfriday/v2/esc.go
generated
vendored
|
@ -13,13 +13,27 @@ var htmlEscaper = [256][]byte{
|
||||||
}
|
}
|
||||||
|
|
||||||
func escapeHTML(w io.Writer, s []byte) {
|
func escapeHTML(w io.Writer, s []byte) {
|
||||||
|
escapeEntities(w, s, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
func escapeAllHTML(w io.Writer, s []byte) {
|
||||||
|
escapeEntities(w, s, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func escapeEntities(w io.Writer, s []byte, escapeValidEntities bool) {
|
||||||
var start, end int
|
var start, end int
|
||||||
for end < len(s) {
|
for end < len(s) {
|
||||||
escSeq := htmlEscaper[s[end]]
|
escSeq := htmlEscaper[s[end]]
|
||||||
if escSeq != nil {
|
if escSeq != nil {
|
||||||
w.Write(s[start:end])
|
isEntity, entityEnd := nodeIsEntity(s, end)
|
||||||
w.Write(escSeq)
|
if isEntity && !escapeValidEntities {
|
||||||
start = end + 1
|
w.Write(s[start : entityEnd+1])
|
||||||
|
start = entityEnd + 1
|
||||||
|
} else {
|
||||||
|
w.Write(s[start:end])
|
||||||
|
w.Write(escSeq)
|
||||||
|
start = end + 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
end++
|
end++
|
||||||
}
|
}
|
||||||
|
@ -28,6 +42,28 @@ func escapeHTML(w io.Writer, s []byte) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func nodeIsEntity(s []byte, end int) (isEntity bool, endEntityPos int) {
|
||||||
|
isEntity = false
|
||||||
|
endEntityPos = end + 1
|
||||||
|
|
||||||
|
if s[end] == '&' {
|
||||||
|
for endEntityPos < len(s) {
|
||||||
|
if s[endEntityPos] == ';' {
|
||||||
|
if entities[string(s[end:endEntityPos+1])] {
|
||||||
|
isEntity = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !isalnum(s[endEntityPos]) && s[endEntityPos] != '&' && s[endEntityPos] != '#' {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
endEntityPos++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isEntity, endEntityPos
|
||||||
|
}
|
||||||
|
|
||||||
func escLink(w io.Writer, text []byte) {
|
func escLink(w io.Writer, text []byte) {
|
||||||
unesc := html.UnescapeString(string(text))
|
unesc := html.UnescapeString(string(text))
|
||||||
escapeHTML(w, []byte(unesc))
|
escapeHTML(w, []byte(unesc))
|
||||||
|
|
9
vendor/github.com/russross/blackfriday/v2/html.go
generated
vendored
9
vendor/github.com/russross/blackfriday/v2/html.go
generated
vendored
|
@ -132,7 +132,10 @@ func NewHTMLRenderer(params HTMLRendererParameters) *HTMLRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
if params.FootnoteReturnLinkContents == "" {
|
if params.FootnoteReturnLinkContents == "" {
|
||||||
params.FootnoteReturnLinkContents = `<sup>[return]</sup>`
|
// U+FE0E is VARIATION SELECTOR-15.
|
||||||
|
// It suppresses automatic emoji presentation of the preceding
|
||||||
|
// U+21A9 LEFTWARDS ARROW WITH HOOK on iOS and iPadOS.
|
||||||
|
params.FootnoteReturnLinkContents = "<span aria-label='Return'>↩\ufe0e</span>"
|
||||||
}
|
}
|
||||||
|
|
||||||
return &HTMLRenderer{
|
return &HTMLRenderer{
|
||||||
|
@ -616,7 +619,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt
|
||||||
}
|
}
|
||||||
case Code:
|
case Code:
|
||||||
r.out(w, codeTag)
|
r.out(w, codeTag)
|
||||||
escapeHTML(w, node.Literal)
|
escapeAllHTML(w, node.Literal)
|
||||||
r.out(w, codeCloseTag)
|
r.out(w, codeCloseTag)
|
||||||
case Document:
|
case Document:
|
||||||
break
|
break
|
||||||
|
@ -762,7 +765,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt
|
||||||
r.cr(w)
|
r.cr(w)
|
||||||
r.out(w, preTag)
|
r.out(w, preTag)
|
||||||
r.tag(w, codeTag[:len(codeTag)-1], attrs)
|
r.tag(w, codeTag[:len(codeTag)-1], attrs)
|
||||||
escapeHTML(w, node.Literal)
|
escapeAllHTML(w, node.Literal)
|
||||||
r.out(w, codeCloseTag)
|
r.out(w, codeCloseTag)
|
||||||
r.out(w, preCloseTag)
|
r.out(w, preCloseTag)
|
||||||
if node.Parent.Type != Item {
|
if node.Parent.Type != Item {
|
||||||
|
|
2
vendor/github.com/russross/blackfriday/v2/inline.go
generated
vendored
2
vendor/github.com/russross/blackfriday/v2/inline.go
generated
vendored
|
@ -278,7 +278,7 @@ func link(p *Markdown, data []byte, offset int) (int, *Node) {
|
||||||
case data[i] == '\n':
|
case data[i] == '\n':
|
||||||
textHasNl = true
|
textHasNl = true
|
||||||
|
|
||||||
case data[i-1] == '\\':
|
case isBackslashEscaped(data, i):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
case data[i] == '[':
|
case data[i] == '[':
|
||||||
|
|
12
vendor/github.com/russross/blackfriday/v2/node.go
generated
vendored
12
vendor/github.com/russross/blackfriday/v2/node.go
generated
vendored
|
@ -199,7 +199,8 @@ func (n *Node) InsertBefore(sibling *Node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) isContainer() bool {
|
// IsContainer returns true if 'n' can contain children.
|
||||||
|
func (n *Node) IsContainer() bool {
|
||||||
switch n.Type {
|
switch n.Type {
|
||||||
case Document:
|
case Document:
|
||||||
fallthrough
|
fallthrough
|
||||||
|
@ -238,6 +239,11 @@ func (n *Node) isContainer() bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsLeaf returns true if 'n' is a leaf node.
|
||||||
|
func (n *Node) IsLeaf() bool {
|
||||||
|
return !n.IsContainer()
|
||||||
|
}
|
||||||
|
|
||||||
func (n *Node) canContain(t NodeType) bool {
|
func (n *Node) canContain(t NodeType) bool {
|
||||||
if n.Type == List {
|
if n.Type == List {
|
||||||
return t == Item
|
return t == Item
|
||||||
|
@ -309,11 +315,11 @@ func newNodeWalker(root *Node) *nodeWalker {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (nw *nodeWalker) next() {
|
func (nw *nodeWalker) next() {
|
||||||
if (!nw.current.isContainer() || !nw.entering) && nw.current == nw.root {
|
if (!nw.current.IsContainer() || !nw.entering) && nw.current == nw.root {
|
||||||
nw.current = nil
|
nw.current = nil
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if nw.entering && nw.current.isContainer() {
|
if nw.entering && nw.current.IsContainer() {
|
||||||
if nw.current.FirstChild != nil {
|
if nw.current.FirstChild != nil {
|
||||||
nw.current = nw.current.FirstChild
|
nw.current = nw.current.FirstChild
|
||||||
nw.entering = true
|
nw.entering = true
|
||||||
|
|
16
vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml
generated
vendored
16
vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml
generated
vendored
|
@ -1,16 +0,0 @@
|
||||||
sudo: false
|
|
||||||
language: go
|
|
||||||
go:
|
|
||||||
- 1.x
|
|
||||||
- master
|
|
||||||
matrix:
|
|
||||||
allow_failures:
|
|
||||||
- go: master
|
|
||||||
fast_finish: true
|
|
||||||
install:
|
|
||||||
- # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step).
|
|
||||||
script:
|
|
||||||
- go get -t -v ./...
|
|
||||||
- diff -u <(echo -n) <(gofmt -d -s .)
|
|
||||||
- go tool vet .
|
|
||||||
- go test -v -race ./...
|
|
36
vendor/github.com/shurcooL/sanitized_anchor_name/README.md
generated
vendored
36
vendor/github.com/shurcooL/sanitized_anchor_name/README.md
generated
vendored
|
@ -1,36 +0,0 @@
|
||||||
sanitized_anchor_name
|
|
||||||
=====================
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/shurcooL/sanitized_anchor_name.svg?branch=master)](https://travis-ci.org/shurcooL/sanitized_anchor_name) [![GoDoc](https://godoc.org/github.com/shurcooL/sanitized_anchor_name?status.svg)](https://godoc.org/github.com/shurcooL/sanitized_anchor_name)
|
|
||||||
|
|
||||||
Package sanitized_anchor_name provides a func to create sanitized anchor names.
|
|
||||||
|
|
||||||
Its logic can be reused by multiple packages to create interoperable anchor names
|
|
||||||
and links to those anchors.
|
|
||||||
|
|
||||||
At this time, it does not try to ensure that generated anchor names
|
|
||||||
are unique, that responsibility falls on the caller.
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
```bash
|
|
||||||
go get -u github.com/shurcooL/sanitized_anchor_name
|
|
||||||
```
|
|
||||||
|
|
||||||
Example
|
|
||||||
-------
|
|
||||||
|
|
||||||
```Go
|
|
||||||
anchorName := sanitized_anchor_name.Create("This is a header")
|
|
||||||
|
|
||||||
fmt.Println(anchorName)
|
|
||||||
|
|
||||||
// Output:
|
|
||||||
// this-is-a-header
|
|
||||||
```
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
- [MIT License](LICENSE)
|
|
1
vendor/github.com/shurcooL/sanitized_anchor_name/go.mod
generated
vendored
1
vendor/github.com/shurcooL/sanitized_anchor_name/go.mod
generated
vendored
|
@ -1 +0,0 @@
|
||||||
module github.com/shurcooL/sanitized_anchor_name
|
|
29
vendor/github.com/shurcooL/sanitized_anchor_name/main.go
generated
vendored
29
vendor/github.com/shurcooL/sanitized_anchor_name/main.go
generated
vendored
|
@ -1,29 +0,0 @@
|
||||||
// Package sanitized_anchor_name provides a func to create sanitized anchor names.
|
|
||||||
//
|
|
||||||
// Its logic can be reused by multiple packages to create interoperable anchor names
|
|
||||||
// and links to those anchors.
|
|
||||||
//
|
|
||||||
// At this time, it does not try to ensure that generated anchor names
|
|
||||||
// are unique, that responsibility falls on the caller.
|
|
||||||
package sanitized_anchor_name // import "github.com/shurcooL/sanitized_anchor_name"
|
|
||||||
|
|
||||||
import "unicode"
|
|
||||||
|
|
||||||
// Create returns a sanitized anchor name for the given text.
|
|
||||||
func Create(text string) string {
|
|
||||||
var anchorName []rune
|
|
||||||
var futureDash = false
|
|
||||||
for _, r := range text {
|
|
||||||
switch {
|
|
||||||
case unicode.IsLetter(r) || unicode.IsNumber(r):
|
|
||||||
if futureDash && len(anchorName) > 0 {
|
|
||||||
anchorName = append(anchorName, '-')
|
|
||||||
}
|
|
||||||
futureDash = false
|
|
||||||
anchorName = append(anchorName, unicode.ToLower(r))
|
|
||||||
default:
|
|
||||||
futureDash = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return string(anchorName)
|
|
||||||
}
|
|
17
vendor/go.opencensus.io/.travis.yml
generated
vendored
17
vendor/go.opencensus.io/.travis.yml
generated
vendored
|
@ -1,17 +0,0 @@
|
||||||
language: go
|
|
||||||
|
|
||||||
go_import_path: go.opencensus.io
|
|
||||||
|
|
||||||
go:
|
|
||||||
- 1.11.x
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
GO111MODULE=on
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- make install-tools
|
|
||||||
|
|
||||||
script:
|
|
||||||
- make travis-ci
|
|
||||||
- go run internal/check/version.go # TODO move this to makefile
|
|
15
vendor/go.opencensus.io/go.mod
generated
vendored
15
vendor/go.opencensus.io/go.mod
generated
vendored
|
@ -1,15 +1,12 @@
|
||||||
module go.opencensus.io
|
module go.opencensus.io
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e
|
||||||
github.com/golang/protobuf v1.3.1
|
github.com/golang/protobuf v1.4.3
|
||||||
github.com/google/go-cmp v0.3.0
|
github.com/google/go-cmp v0.5.3
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.6.1
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b
|
||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd // indirect
|
google.golang.org/grpc v1.33.2
|
||||||
golang.org/x/text v0.3.3 // indirect
|
|
||||||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb // indirect
|
|
||||||
google.golang.org/grpc v1.20.1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
82
vendor/go.opencensus.io/go.sum
generated
vendored
82
vendor/go.opencensus.io/go.sum
generated
vendored
|
@ -1,25 +1,47 @@
|
||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
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/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I=
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
|
||||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||||
|
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||||
|
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||||
|
github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
|
||||||
|
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo=
|
||||||
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
|
@ -30,24 +52,25 @@ golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73r
|
||||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
|
||||||
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd h1:r7DufRZuZbWB7j439YfAzP8RPDa9unLkpwQKUYbIMPI=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
|
||||||
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
@ -55,20 +78,39 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd h1:/e+gpKk9r3dJobndpTytxS2gOy6m5uvpg+ISQoEcusQ=
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd h1:/e+gpKk9r3dJobndpTytxS2gOy6m5uvpg+ISQoEcusQ=
|
||||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
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/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb h1:i1Ppqkc3WQXikh8bXiwHqAN5Rv3/qDCcRk0/Otx73BY=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
|
||||||
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
||||||
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
|
||||||
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
|
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||||
|
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||||
|
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
|
||||||
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||||
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
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/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.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
|
10
vendor/go.opencensus.io/trace/basetypes.go
generated
vendored
10
vendor/go.opencensus.io/trace/basetypes.go
generated
vendored
|
@ -49,6 +49,16 @@ type Attribute struct {
|
||||||
value interface{}
|
value interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Key returns the attribute's key
|
||||||
|
func (a *Attribute) Key() string {
|
||||||
|
return a.key
|
||||||
|
}
|
||||||
|
|
||||||
|
// Value returns the attribute's value
|
||||||
|
func (a *Attribute) Value() interface{} {
|
||||||
|
return a.value
|
||||||
|
}
|
||||||
|
|
||||||
// BoolAttribute returns a bool-valued attribute.
|
// BoolAttribute returns a bool-valued attribute.
|
||||||
func BoolAttribute(key string, value bool) Attribute {
|
func BoolAttribute(key string, value bool) Attribute {
|
||||||
return Attribute{key: key, value: value}
|
return Attribute{key: key, value: value}
|
||||||
|
|
14
vendor/go.opencensus.io/trace/spanstore.go
generated
vendored
14
vendor/go.opencensus.io/trace/spanstore.go
generated
vendored
|
@ -48,8 +48,10 @@ func (i internalOnly) ReportActiveSpans(name string) []*SpanData {
|
||||||
var out []*SpanData
|
var out []*SpanData
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
defer s.mu.Unlock()
|
defer s.mu.Unlock()
|
||||||
for span := range s.active {
|
for activeSpan := range s.active {
|
||||||
out = append(out, span.makeSpanData())
|
if s, ok := activeSpan.(*span); ok {
|
||||||
|
out = append(out, s.makeSpanData())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
@ -185,7 +187,7 @@ func (i internalOnly) ReportSpansByLatency(name string, minLatency, maxLatency t
|
||||||
// bucketed by latency.
|
// bucketed by latency.
|
||||||
type spanStore struct {
|
type spanStore struct {
|
||||||
mu sync.Mutex // protects everything below.
|
mu sync.Mutex // protects everything below.
|
||||||
active map[*Span]struct{}
|
active map[SpanInterface]struct{}
|
||||||
errors map[int32]*bucket
|
errors map[int32]*bucket
|
||||||
latency []bucket
|
latency []bucket
|
||||||
maxSpansPerErrorBucket int
|
maxSpansPerErrorBucket int
|
||||||
|
@ -194,7 +196,7 @@ type spanStore struct {
|
||||||
// newSpanStore creates a span store.
|
// newSpanStore creates a span store.
|
||||||
func newSpanStore(name string, latencyBucketSize int, errorBucketSize int) *spanStore {
|
func newSpanStore(name string, latencyBucketSize int, errorBucketSize int) *spanStore {
|
||||||
s := &spanStore{
|
s := &spanStore{
|
||||||
active: make(map[*Span]struct{}),
|
active: make(map[SpanInterface]struct{}),
|
||||||
latency: make([]bucket, len(defaultLatencies)+1),
|
latency: make([]bucket, len(defaultLatencies)+1),
|
||||||
maxSpansPerErrorBucket: errorBucketSize,
|
maxSpansPerErrorBucket: errorBucketSize,
|
||||||
}
|
}
|
||||||
|
@ -271,7 +273,7 @@ func (s *spanStore) resize(latencyBucketSize int, errorBucketSize int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// add adds a span to the active bucket of the spanStore.
|
// add adds a span to the active bucket of the spanStore.
|
||||||
func (s *spanStore) add(span *Span) {
|
func (s *spanStore) add(span SpanInterface) {
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
s.active[span] = struct{}{}
|
s.active[span] = struct{}{}
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
|
@ -279,7 +281,7 @@ func (s *spanStore) add(span *Span) {
|
||||||
|
|
||||||
// finished removes a span from the active set, and adds a corresponding
|
// finished removes a span from the active set, and adds a corresponding
|
||||||
// SpanData to a latency or error bucket.
|
// SpanData to a latency or error bucket.
|
||||||
func (s *spanStore) finished(span *Span, sd *SpanData) {
|
func (s *spanStore) finished(span SpanInterface, sd *SpanData) {
|
||||||
latency := sd.EndTime.Sub(sd.StartTime)
|
latency := sd.EndTime.Sub(sd.StartTime)
|
||||||
if latency < 0 {
|
if latency < 0 {
|
||||||
latency = 0
|
latency = 0
|
||||||
|
|
144
vendor/go.opencensus.io/trace/trace.go
generated
vendored
144
vendor/go.opencensus.io/trace/trace.go
generated
vendored
|
@ -28,12 +28,16 @@ import (
|
||||||
"go.opencensus.io/trace/tracestate"
|
"go.opencensus.io/trace/tracestate"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type tracer struct{}
|
||||||
|
|
||||||
|
var _ Tracer = &tracer{}
|
||||||
|
|
||||||
// Span represents a span of a trace. It has an associated SpanContext, and
|
// Span represents a span of a trace. It has an associated SpanContext, and
|
||||||
// stores data accumulated while the span is active.
|
// stores data accumulated while the span is active.
|
||||||
//
|
//
|
||||||
// Ideally users should interact with Spans by calling the functions in this
|
// Ideally users should interact with Spans by calling the functions in this
|
||||||
// package that take a Context parameter.
|
// package that take a Context parameter.
|
||||||
type Span struct {
|
type span struct {
|
||||||
// data contains information recorded about the span.
|
// data contains information recorded about the span.
|
||||||
//
|
//
|
||||||
// It will be non-nil if we are exporting the span or recording events for it.
|
// It will be non-nil if we are exporting the span or recording events for it.
|
||||||
|
@ -66,7 +70,7 @@ type Span struct {
|
||||||
// IsRecordingEvents returns true if events are being recorded for this span.
|
// IsRecordingEvents returns true if events are being recorded for this span.
|
||||||
// Use this check to avoid computing expensive annotations when they will never
|
// Use this check to avoid computing expensive annotations when they will never
|
||||||
// be used.
|
// be used.
|
||||||
func (s *Span) IsRecordingEvents() bool {
|
func (s *span) IsRecordingEvents() bool {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -109,13 +113,13 @@ type SpanContext struct {
|
||||||
type contextKey struct{}
|
type contextKey struct{}
|
||||||
|
|
||||||
// FromContext returns the Span stored in a context, or nil if there isn't one.
|
// FromContext returns the Span stored in a context, or nil if there isn't one.
|
||||||
func FromContext(ctx context.Context) *Span {
|
func (t *tracer) FromContext(ctx context.Context) *Span {
|
||||||
s, _ := ctx.Value(contextKey{}).(*Span)
|
s, _ := ctx.Value(contextKey{}).(*Span)
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewContext returns a new context with the given Span attached.
|
// NewContext returns a new context with the given Span attached.
|
||||||
func NewContext(parent context.Context, s *Span) context.Context {
|
func (t *tracer) NewContext(parent context.Context, s *Span) context.Context {
|
||||||
return context.WithValue(parent, contextKey{}, s)
|
return context.WithValue(parent, contextKey{}, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,12 +170,14 @@ func WithSampler(sampler Sampler) StartOption {
|
||||||
//
|
//
|
||||||
// Returned context contains the newly created span. You can use it to
|
// Returned context contains the newly created span. You can use it to
|
||||||
// propagate the returned span in process.
|
// propagate the returned span in process.
|
||||||
func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) {
|
func (t *tracer) StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) {
|
||||||
var opts StartOptions
|
var opts StartOptions
|
||||||
var parent SpanContext
|
var parent SpanContext
|
||||||
if p := FromContext(ctx); p != nil {
|
if p := t.FromContext(ctx); p != nil {
|
||||||
p.addChild()
|
if ps, ok := p.internal.(*span); ok {
|
||||||
parent = p.spanContext
|
ps.addChild()
|
||||||
|
}
|
||||||
|
parent = p.SpanContext()
|
||||||
}
|
}
|
||||||
for _, op := range o {
|
for _, op := range o {
|
||||||
op(&opts)
|
op(&opts)
|
||||||
|
@ -180,7 +186,8 @@ func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Cont
|
||||||
|
|
||||||
ctx, end := startExecutionTracerTask(ctx, name)
|
ctx, end := startExecutionTracerTask(ctx, name)
|
||||||
span.executionTracerTaskEnd = end
|
span.executionTracerTaskEnd = end
|
||||||
return NewContext(ctx, span), span
|
extSpan := NewSpan(span)
|
||||||
|
return t.NewContext(ctx, extSpan), extSpan
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartSpanWithRemoteParent starts a new child span of the span from the given parent.
|
// StartSpanWithRemoteParent starts a new child span of the span from the given parent.
|
||||||
|
@ -190,7 +197,7 @@ func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Cont
|
||||||
//
|
//
|
||||||
// Returned context contains the newly created span. You can use it to
|
// Returned context contains the newly created span. You can use it to
|
||||||
// propagate the returned span in process.
|
// propagate the returned span in process.
|
||||||
func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) {
|
func (t *tracer) StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) {
|
||||||
var opts StartOptions
|
var opts StartOptions
|
||||||
for _, op := range o {
|
for _, op := range o {
|
||||||
op(&opts)
|
op(&opts)
|
||||||
|
@ -198,12 +205,13 @@ func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanCont
|
||||||
span := startSpanInternal(name, parent != SpanContext{}, parent, true, opts)
|
span := startSpanInternal(name, parent != SpanContext{}, parent, true, opts)
|
||||||
ctx, end := startExecutionTracerTask(ctx, name)
|
ctx, end := startExecutionTracerTask(ctx, name)
|
||||||
span.executionTracerTaskEnd = end
|
span.executionTracerTaskEnd = end
|
||||||
return NewContext(ctx, span), span
|
extSpan := NewSpan(span)
|
||||||
|
return t.NewContext(ctx, extSpan), extSpan
|
||||||
}
|
}
|
||||||
|
|
||||||
func startSpanInternal(name string, hasParent bool, parent SpanContext, remoteParent bool, o StartOptions) *Span {
|
func startSpanInternal(name string, hasParent bool, parent SpanContext, remoteParent bool, o StartOptions) *span {
|
||||||
span := &Span{}
|
s := &span{}
|
||||||
span.spanContext = parent
|
s.spanContext = parent
|
||||||
|
|
||||||
cfg := config.Load().(*Config)
|
cfg := config.Load().(*Config)
|
||||||
if gen, ok := cfg.IDGenerator.(*defaultIDGenerator); ok {
|
if gen, ok := cfg.IDGenerator.(*defaultIDGenerator); ok {
|
||||||
|
@ -212,9 +220,9 @@ func startSpanInternal(name string, hasParent bool, parent SpanContext, remotePa
|
||||||
}
|
}
|
||||||
|
|
||||||
if !hasParent {
|
if !hasParent {
|
||||||
span.spanContext.TraceID = cfg.IDGenerator.NewTraceID()
|
s.spanContext.TraceID = cfg.IDGenerator.NewTraceID()
|
||||||
}
|
}
|
||||||
span.spanContext.SpanID = cfg.IDGenerator.NewSpanID()
|
s.spanContext.SpanID = cfg.IDGenerator.NewSpanID()
|
||||||
sampler := cfg.DefaultSampler
|
sampler := cfg.DefaultSampler
|
||||||
|
|
||||||
if !hasParent || remoteParent || o.Sampler != nil {
|
if !hasParent || remoteParent || o.Sampler != nil {
|
||||||
|
@ -226,47 +234,47 @@ func startSpanInternal(name string, hasParent bool, parent SpanContext, remotePa
|
||||||
if o.Sampler != nil {
|
if o.Sampler != nil {
|
||||||
sampler = o.Sampler
|
sampler = o.Sampler
|
||||||
}
|
}
|
||||||
span.spanContext.setIsSampled(sampler(SamplingParameters{
|
s.spanContext.setIsSampled(sampler(SamplingParameters{
|
||||||
ParentContext: parent,
|
ParentContext: parent,
|
||||||
TraceID: span.spanContext.TraceID,
|
TraceID: s.spanContext.TraceID,
|
||||||
SpanID: span.spanContext.SpanID,
|
SpanID: s.spanContext.SpanID,
|
||||||
Name: name,
|
Name: name,
|
||||||
HasRemoteParent: remoteParent}).Sample)
|
HasRemoteParent: remoteParent}).Sample)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !internal.LocalSpanStoreEnabled && !span.spanContext.IsSampled() {
|
if !internal.LocalSpanStoreEnabled && !s.spanContext.IsSampled() {
|
||||||
return span
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
span.data = &SpanData{
|
s.data = &SpanData{
|
||||||
SpanContext: span.spanContext,
|
SpanContext: s.spanContext,
|
||||||
StartTime: time.Now(),
|
StartTime: time.Now(),
|
||||||
SpanKind: o.SpanKind,
|
SpanKind: o.SpanKind,
|
||||||
Name: name,
|
Name: name,
|
||||||
HasRemoteParent: remoteParent,
|
HasRemoteParent: remoteParent,
|
||||||
}
|
}
|
||||||
span.lruAttributes = newLruMap(cfg.MaxAttributesPerSpan)
|
s.lruAttributes = newLruMap(cfg.MaxAttributesPerSpan)
|
||||||
span.annotations = newEvictedQueue(cfg.MaxAnnotationEventsPerSpan)
|
s.annotations = newEvictedQueue(cfg.MaxAnnotationEventsPerSpan)
|
||||||
span.messageEvents = newEvictedQueue(cfg.MaxMessageEventsPerSpan)
|
s.messageEvents = newEvictedQueue(cfg.MaxMessageEventsPerSpan)
|
||||||
span.links = newEvictedQueue(cfg.MaxLinksPerSpan)
|
s.links = newEvictedQueue(cfg.MaxLinksPerSpan)
|
||||||
|
|
||||||
if hasParent {
|
if hasParent {
|
||||||
span.data.ParentSpanID = parent.SpanID
|
s.data.ParentSpanID = parent.SpanID
|
||||||
}
|
}
|
||||||
if internal.LocalSpanStoreEnabled {
|
if internal.LocalSpanStoreEnabled {
|
||||||
var ss *spanStore
|
var ss *spanStore
|
||||||
ss = spanStoreForNameCreateIfNew(name)
|
ss = spanStoreForNameCreateIfNew(name)
|
||||||
if ss != nil {
|
if ss != nil {
|
||||||
span.spanStore = ss
|
s.spanStore = ss
|
||||||
ss.add(span)
|
ss.add(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return span
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
// End ends the span.
|
// End ends the span.
|
||||||
func (s *Span) End() {
|
func (s *span) End() {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -296,7 +304,7 @@ func (s *Span) End() {
|
||||||
|
|
||||||
// makeSpanData produces a SpanData representing the current state of the Span.
|
// makeSpanData produces a SpanData representing the current state of the Span.
|
||||||
// It requires that s.data is non-nil.
|
// It requires that s.data is non-nil.
|
||||||
func (s *Span) makeSpanData() *SpanData {
|
func (s *span) makeSpanData() *SpanData {
|
||||||
var sd SpanData
|
var sd SpanData
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
sd = *s.data
|
sd = *s.data
|
||||||
|
@ -321,7 +329,7 @@ func (s *Span) makeSpanData() *SpanData {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SpanContext returns the SpanContext of the span.
|
// SpanContext returns the SpanContext of the span.
|
||||||
func (s *Span) SpanContext() SpanContext {
|
func (s *span) SpanContext() SpanContext {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return SpanContext{}
|
return SpanContext{}
|
||||||
}
|
}
|
||||||
|
@ -329,7 +337,7 @@ func (s *Span) SpanContext() SpanContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetName sets the name of the span, if it is recording events.
|
// SetName sets the name of the span, if it is recording events.
|
||||||
func (s *Span) SetName(name string) {
|
func (s *span) SetName(name string) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -339,7 +347,7 @@ func (s *Span) SetName(name string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetStatus sets the status of the span, if it is recording events.
|
// SetStatus sets the status of the span, if it is recording events.
|
||||||
func (s *Span) SetStatus(status Status) {
|
func (s *span) SetStatus(status Status) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -348,7 +356,7 @@ func (s *Span) SetStatus(status Status) {
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) interfaceArrayToLinksArray() []Link {
|
func (s *span) interfaceArrayToLinksArray() []Link {
|
||||||
linksArr := make([]Link, 0, len(s.links.queue))
|
linksArr := make([]Link, 0, len(s.links.queue))
|
||||||
for _, value := range s.links.queue {
|
for _, value := range s.links.queue {
|
||||||
linksArr = append(linksArr, value.(Link))
|
linksArr = append(linksArr, value.(Link))
|
||||||
|
@ -356,7 +364,7 @@ func (s *Span) interfaceArrayToLinksArray() []Link {
|
||||||
return linksArr
|
return linksArr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) interfaceArrayToMessageEventArray() []MessageEvent {
|
func (s *span) interfaceArrayToMessageEventArray() []MessageEvent {
|
||||||
messageEventArr := make([]MessageEvent, 0, len(s.messageEvents.queue))
|
messageEventArr := make([]MessageEvent, 0, len(s.messageEvents.queue))
|
||||||
for _, value := range s.messageEvents.queue {
|
for _, value := range s.messageEvents.queue {
|
||||||
messageEventArr = append(messageEventArr, value.(MessageEvent))
|
messageEventArr = append(messageEventArr, value.(MessageEvent))
|
||||||
|
@ -364,7 +372,7 @@ func (s *Span) interfaceArrayToMessageEventArray() []MessageEvent {
|
||||||
return messageEventArr
|
return messageEventArr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) interfaceArrayToAnnotationArray() []Annotation {
|
func (s *span) interfaceArrayToAnnotationArray() []Annotation {
|
||||||
annotationArr := make([]Annotation, 0, len(s.annotations.queue))
|
annotationArr := make([]Annotation, 0, len(s.annotations.queue))
|
||||||
for _, value := range s.annotations.queue {
|
for _, value := range s.annotations.queue {
|
||||||
annotationArr = append(annotationArr, value.(Annotation))
|
annotationArr = append(annotationArr, value.(Annotation))
|
||||||
|
@ -372,7 +380,7 @@ func (s *Span) interfaceArrayToAnnotationArray() []Annotation {
|
||||||
return annotationArr
|
return annotationArr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) lruAttributesToAttributeMap() map[string]interface{} {
|
func (s *span) lruAttributesToAttributeMap() map[string]interface{} {
|
||||||
attributes := make(map[string]interface{}, s.lruAttributes.len())
|
attributes := make(map[string]interface{}, s.lruAttributes.len())
|
||||||
for _, key := range s.lruAttributes.keys() {
|
for _, key := range s.lruAttributes.keys() {
|
||||||
value, ok := s.lruAttributes.get(key)
|
value, ok := s.lruAttributes.get(key)
|
||||||
|
@ -384,13 +392,13 @@ func (s *Span) lruAttributesToAttributeMap() map[string]interface{} {
|
||||||
return attributes
|
return attributes
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) copyToCappedAttributes(attributes []Attribute) {
|
func (s *span) copyToCappedAttributes(attributes []Attribute) {
|
||||||
for _, a := range attributes {
|
for _, a := range attributes {
|
||||||
s.lruAttributes.add(a.key, a.value)
|
s.lruAttributes.add(a.key, a.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) addChild() {
|
func (s *span) addChild() {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -402,7 +410,7 @@ func (s *Span) addChild() {
|
||||||
// AddAttributes sets attributes in the span.
|
// AddAttributes sets attributes in the span.
|
||||||
//
|
//
|
||||||
// Existing attributes whose keys appear in the attributes parameter are overwritten.
|
// Existing attributes whose keys appear in the attributes parameter are overwritten.
|
||||||
func (s *Span) AddAttributes(attributes ...Attribute) {
|
func (s *span) AddAttributes(attributes ...Attribute) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -411,49 +419,27 @@ func (s *Span) AddAttributes(attributes ...Attribute) {
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// copyAttributes copies a slice of Attributes into a map.
|
func (s *span) printStringInternal(attributes []Attribute, str string) {
|
||||||
func copyAttributes(m map[string]interface{}, attributes []Attribute) {
|
|
||||||
for _, a := range attributes {
|
|
||||||
m[a.key] = a.value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Span) lazyPrintfInternal(attributes []Attribute, format string, a ...interface{}) {
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
msg := fmt.Sprintf(format, a...)
|
var am map[string]interface{}
|
||||||
var m map[string]interface{}
|
|
||||||
s.mu.Lock()
|
|
||||||
if len(attributes) != 0 {
|
if len(attributes) != 0 {
|
||||||
m = make(map[string]interface{}, len(attributes))
|
am = make(map[string]interface{}, len(attributes))
|
||||||
copyAttributes(m, attributes)
|
for _, attr := range attributes {
|
||||||
|
am[attr.key] = attr.value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
s.annotations.add(Annotation{
|
|
||||||
Time: now,
|
|
||||||
Message: msg,
|
|
||||||
Attributes: m,
|
|
||||||
})
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Span) printStringInternal(attributes []Attribute, str string) {
|
|
||||||
now := time.Now()
|
|
||||||
var a map[string]interface{}
|
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
if len(attributes) != 0 {
|
|
||||||
a = make(map[string]interface{}, len(attributes))
|
|
||||||
copyAttributes(a, attributes)
|
|
||||||
}
|
|
||||||
s.annotations.add(Annotation{
|
s.annotations.add(Annotation{
|
||||||
Time: now,
|
Time: now,
|
||||||
Message: str,
|
Message: str,
|
||||||
Attributes: a,
|
Attributes: am,
|
||||||
})
|
})
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Annotate adds an annotation with attributes.
|
// Annotate adds an annotation with attributes.
|
||||||
// Attributes can be nil.
|
// Attributes can be nil.
|
||||||
func (s *Span) Annotate(attributes []Attribute, str string) {
|
func (s *span) Annotate(attributes []Attribute, str string) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -461,11 +447,11 @@ func (s *Span) Annotate(attributes []Attribute, str string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Annotatef adds an annotation with attributes.
|
// Annotatef adds an annotation with attributes.
|
||||||
func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}) {
|
func (s *span) Annotatef(attributes []Attribute, format string, a ...interface{}) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
s.lazyPrintfInternal(attributes, format, a...)
|
s.printStringInternal(attributes, fmt.Sprintf(format, a...))
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddMessageSendEvent adds a message send event to the span.
|
// AddMessageSendEvent adds a message send event to the span.
|
||||||
|
@ -474,7 +460,7 @@ func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}
|
||||||
// unique in this span and the same between the send event and the receive
|
// unique in this span and the same between the send event and the receive
|
||||||
// event (this allows to identify a message between the sender and receiver).
|
// event (this allows to identify a message between the sender and receiver).
|
||||||
// For example, this could be a sequence id.
|
// For example, this could be a sequence id.
|
||||||
func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
|
func (s *span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -496,7 +482,7 @@ func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedBy
|
||||||
// unique in this span and the same between the send event and the receive
|
// unique in this span and the same between the send event and the receive
|
||||||
// event (this allows to identify a message between the sender and receiver).
|
// event (this allows to identify a message between the sender and receiver).
|
||||||
// For example, this could be a sequence id.
|
// For example, this could be a sequence id.
|
||||||
func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
|
func (s *span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -513,7 +499,7 @@ func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compresse
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddLink adds a link to the span.
|
// AddLink adds a link to the span.
|
||||||
func (s *Span) AddLink(l Link) {
|
func (s *span) AddLink(l Link) {
|
||||||
if !s.IsRecordingEvents() {
|
if !s.IsRecordingEvents() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -522,7 +508,7 @@ func (s *Span) AddLink(l Link) {
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Span) String() string {
|
func (s *span) String() string {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return "<nil>"
|
return "<nil>"
|
||||||
}
|
}
|
||||||
|
|
265
vendor/go.opencensus.io/trace/trace_api.go
generated
vendored
Normal file
265
vendor/go.opencensus.io/trace/trace_api.go
generated
vendored
Normal file
|
@ -0,0 +1,265 @@
|
||||||
|
// Copyright 2020, OpenCensus Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package trace
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DefaultTracer is the tracer used when package-level exported functions are invoked.
|
||||||
|
var DefaultTracer Tracer = &tracer{}
|
||||||
|
|
||||||
|
// Tracer can start spans and access context functions.
|
||||||
|
type Tracer interface {
|
||||||
|
|
||||||
|
// StartSpan starts a new child span of the current span in the context. If
|
||||||
|
// there is no span in the context, creates a new trace and span.
|
||||||
|
//
|
||||||
|
// Returned context contains the newly created span. You can use it to
|
||||||
|
// propagate the returned span in process.
|
||||||
|
StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span)
|
||||||
|
|
||||||
|
// StartSpanWithRemoteParent starts a new child span of the span from the given parent.
|
||||||
|
//
|
||||||
|
// If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is
|
||||||
|
// preferred for cases where the parent is propagated via an incoming request.
|
||||||
|
//
|
||||||
|
// Returned context contains the newly created span. You can use it to
|
||||||
|
// propagate the returned span in process.
|
||||||
|
StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span)
|
||||||
|
|
||||||
|
// FromContext returns the Span stored in a context, or nil if there isn't one.
|
||||||
|
FromContext(ctx context.Context) *Span
|
||||||
|
|
||||||
|
// NewContext returns a new context with the given Span attached.
|
||||||
|
NewContext(parent context.Context, s *Span) context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartSpan starts a new child span of the current span in the context. If
|
||||||
|
// there is no span in the context, creates a new trace and span.
|
||||||
|
//
|
||||||
|
// Returned context contains the newly created span. You can use it to
|
||||||
|
// propagate the returned span in process.
|
||||||
|
func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) {
|
||||||
|
return DefaultTracer.StartSpan(ctx, name, o...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartSpanWithRemoteParent starts a new child span of the span from the given parent.
|
||||||
|
//
|
||||||
|
// If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is
|
||||||
|
// preferred for cases where the parent is propagated via an incoming request.
|
||||||
|
//
|
||||||
|
// Returned context contains the newly created span. You can use it to
|
||||||
|
// propagate the returned span in process.
|
||||||
|
func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) {
|
||||||
|
return DefaultTracer.StartSpanWithRemoteParent(ctx, name, parent, o...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromContext returns the Span stored in a context, or a Span that is not
|
||||||
|
// recording events if there isn't one.
|
||||||
|
func FromContext(ctx context.Context) *Span {
|
||||||
|
return DefaultTracer.FromContext(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewContext returns a new context with the given Span attached.
|
||||||
|
func NewContext(parent context.Context, s *Span) context.Context {
|
||||||
|
return DefaultTracer.NewContext(parent, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SpanInterface represents a span of a trace. It has an associated SpanContext, and
|
||||||
|
// stores data accumulated while the span is active.
|
||||||
|
//
|
||||||
|
// Ideally users should interact with Spans by calling the functions in this
|
||||||
|
// package that take a Context parameter.
|
||||||
|
type SpanInterface interface {
|
||||||
|
|
||||||
|
// IsRecordingEvents returns true if events are being recorded for this span.
|
||||||
|
// Use this check to avoid computing expensive annotations when they will never
|
||||||
|
// be used.
|
||||||
|
IsRecordingEvents() bool
|
||||||
|
|
||||||
|
// End ends the span.
|
||||||
|
End()
|
||||||
|
|
||||||
|
// SpanContext returns the SpanContext of the span.
|
||||||
|
SpanContext() SpanContext
|
||||||
|
|
||||||
|
// SetName sets the name of the span, if it is recording events.
|
||||||
|
SetName(name string)
|
||||||
|
|
||||||
|
// SetStatus sets the status of the span, if it is recording events.
|
||||||
|
SetStatus(status Status)
|
||||||
|
|
||||||
|
// AddAttributes sets attributes in the span.
|
||||||
|
//
|
||||||
|
// Existing attributes whose keys appear in the attributes parameter are overwritten.
|
||||||
|
AddAttributes(attributes ...Attribute)
|
||||||
|
|
||||||
|
// Annotate adds an annotation with attributes.
|
||||||
|
// Attributes can be nil.
|
||||||
|
Annotate(attributes []Attribute, str string)
|
||||||
|
|
||||||
|
// Annotatef adds an annotation with attributes.
|
||||||
|
Annotatef(attributes []Attribute, format string, a ...interface{})
|
||||||
|
|
||||||
|
// AddMessageSendEvent adds a message send event to the span.
|
||||||
|
//
|
||||||
|
// messageID is an identifier for the message, which is recommended to be
|
||||||
|
// unique in this span and the same between the send event and the receive
|
||||||
|
// event (this allows to identify a message between the sender and receiver).
|
||||||
|
// For example, this could be a sequence id.
|
||||||
|
AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64)
|
||||||
|
|
||||||
|
// AddMessageReceiveEvent adds a message receive event to the span.
|
||||||
|
//
|
||||||
|
// messageID is an identifier for the message, which is recommended to be
|
||||||
|
// unique in this span and the same between the send event and the receive
|
||||||
|
// event (this allows to identify a message between the sender and receiver).
|
||||||
|
// For example, this could be a sequence id.
|
||||||
|
AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64)
|
||||||
|
|
||||||
|
// AddLink adds a link to the span.
|
||||||
|
AddLink(l Link)
|
||||||
|
|
||||||
|
// String prints a string representation of a span.
|
||||||
|
String() string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewSpan is a convenience function for creating a *Span out of a *span
|
||||||
|
func NewSpan(s SpanInterface) *Span {
|
||||||
|
return &Span{internal: s}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Span is a struct wrapper around the SpanInt interface, which allows correctly handling
|
||||||
|
// nil spans, while also allowing the SpanInterface implementation to be swapped out.
|
||||||
|
type Span struct {
|
||||||
|
internal SpanInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// Internal returns the underlying implementation of the Span
|
||||||
|
func (s *Span) Internal() SpanInterface {
|
||||||
|
return s.internal
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsRecordingEvents returns true if events are being recorded for this span.
|
||||||
|
// Use this check to avoid computing expensive annotations when they will never
|
||||||
|
// be used.
|
||||||
|
func (s *Span) IsRecordingEvents() bool {
|
||||||
|
if s == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return s.internal.IsRecordingEvents()
|
||||||
|
}
|
||||||
|
|
||||||
|
// End ends the span.
|
||||||
|
func (s *Span) End() {
|
||||||
|
if s == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.End()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SpanContext returns the SpanContext of the span.
|
||||||
|
func (s *Span) SpanContext() SpanContext {
|
||||||
|
if s == nil {
|
||||||
|
return SpanContext{}
|
||||||
|
}
|
||||||
|
return s.internal.SpanContext()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetName sets the name of the span, if it is recording events.
|
||||||
|
func (s *Span) SetName(name string) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.SetName(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetStatus sets the status of the span, if it is recording events.
|
||||||
|
func (s *Span) SetStatus(status Status) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.SetStatus(status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddAttributes sets attributes in the span.
|
||||||
|
//
|
||||||
|
// Existing attributes whose keys appear in the attributes parameter are overwritten.
|
||||||
|
func (s *Span) AddAttributes(attributes ...Attribute) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.AddAttributes(attributes...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Annotate adds an annotation with attributes.
|
||||||
|
// Attributes can be nil.
|
||||||
|
func (s *Span) Annotate(attributes []Attribute, str string) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.Annotate(attributes, str)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Annotatef adds an annotation with attributes.
|
||||||
|
func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.Annotatef(attributes, format, a...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddMessageSendEvent adds a message send event to the span.
|
||||||
|
//
|
||||||
|
// messageID is an identifier for the message, which is recommended to be
|
||||||
|
// unique in this span and the same between the send event and the receive
|
||||||
|
// event (this allows to identify a message between the sender and receiver).
|
||||||
|
// For example, this could be a sequence id.
|
||||||
|
func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddMessageReceiveEvent adds a message receive event to the span.
|
||||||
|
//
|
||||||
|
// messageID is an identifier for the message, which is recommended to be
|
||||||
|
// unique in this span and the same between the send event and the receive
|
||||||
|
// event (this allows to identify a message between the sender and receiver).
|
||||||
|
// For example, this could be a sequence id.
|
||||||
|
func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddLink adds a link to the span.
|
||||||
|
func (s *Span) AddLink(l Link) {
|
||||||
|
if !s.IsRecordingEvents() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.internal.AddLink(l)
|
||||||
|
}
|
||||||
|
|
||||||
|
// String prints a string representation of a span.
|
||||||
|
func (s *Span) String() string {
|
||||||
|
if s == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
|
return s.internal.String()
|
||||||
|
}
|
33
vendor/golang.org/x/oauth2/google/google.go
generated
vendored
33
vendor/golang.org/x/oauth2/google/google.go
generated
vendored
|
@ -115,14 +115,13 @@ type credentialsFile struct {
|
||||||
RefreshToken string `json:"refresh_token"`
|
RefreshToken string `json:"refresh_token"`
|
||||||
|
|
||||||
// External Account fields
|
// External Account fields
|
||||||
Audience string `json:"audience"`
|
Audience string `json:"audience"`
|
||||||
SubjectTokenType string `json:"subject_token_type"`
|
SubjectTokenType string `json:"subject_token_type"`
|
||||||
TokenURLExternal string `json:"token_url"`
|
TokenURLExternal string `json:"token_url"`
|
||||||
TokenInfoURL string `json:"token_info_url"`
|
TokenInfoURL string `json:"token_info_url"`
|
||||||
ServiceAccountImpersonationURL string `json:"service_account_impersonation_url"`
|
ServiceAccountImpersonationURL string `json:"service_account_impersonation_url"`
|
||||||
CredentialSource externalaccount.CredentialSource `json:"credential_source"`
|
CredentialSource externalaccount.CredentialSource `json:"credential_source"`
|
||||||
QuotaProjectID string `json:"quota_project_id"`
|
QuotaProjectID string `json:"quota_project_id"`
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *credentialsFile) jwtConfig(scopes []string) *jwt.Config {
|
func (f *credentialsFile) jwtConfig(scopes []string) *jwt.Config {
|
||||||
|
@ -155,16 +154,16 @@ func (f *credentialsFile) tokenSource(ctx context.Context, scopes []string) (oau
|
||||||
return cfg.TokenSource(ctx, tok), nil
|
return cfg.TokenSource(ctx, tok), nil
|
||||||
case externalAccountKey:
|
case externalAccountKey:
|
||||||
cfg := &externalaccount.Config{
|
cfg := &externalaccount.Config{
|
||||||
Audience: f.Audience,
|
Audience: f.Audience,
|
||||||
SubjectTokenType: f.SubjectTokenType,
|
SubjectTokenType: f.SubjectTokenType,
|
||||||
TokenURL: f.TokenURLExternal,
|
TokenURL: f.TokenURLExternal,
|
||||||
TokenInfoURL: f.TokenInfoURL,
|
TokenInfoURL: f.TokenInfoURL,
|
||||||
ServiceAccountImpersonationURL: f.ServiceAccountImpersonationURL,
|
ServiceAccountImpersonationURL: f.ServiceAccountImpersonationURL,
|
||||||
ClientSecret: f.ClientSecret,
|
ClientSecret: f.ClientSecret,
|
||||||
ClientID: f.ClientID,
|
ClientID: f.ClientID,
|
||||||
CredentialSource: f.CredentialSource,
|
CredentialSource: f.CredentialSource,
|
||||||
QuotaProjectID: f.QuotaProjectID,
|
QuotaProjectID: f.QuotaProjectID,
|
||||||
Scopes: scopes,
|
Scopes: scopes,
|
||||||
}
|
}
|
||||||
return cfg.TokenSource(ctx), nil
|
return cfg.TokenSource(ctx), nil
|
||||||
case "":
|
case "":
|
||||||
|
|
464
vendor/golang.org/x/oauth2/google/internal/externalaccount/aws.go
generated
vendored
Normal file
464
vendor/golang.org/x/oauth2/google/internal/externalaccount/aws.go
generated
vendored
Normal file
|
@ -0,0 +1,464 @@
|
||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package externalaccount
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"crypto/hmac"
|
||||||
|
"crypto/sha256"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"golang.org/x/oauth2"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type awsSecurityCredentials struct {
|
||||||
|
AccessKeyID string `json:"AccessKeyID"`
|
||||||
|
SecretAccessKey string `json:"SecretAccessKey"`
|
||||||
|
SecurityToken string `json:"Token"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// awsRequestSigner is a utility class to sign http requests using a AWS V4 signature.
|
||||||
|
type awsRequestSigner struct {
|
||||||
|
RegionName string
|
||||||
|
AwsSecurityCredentials awsSecurityCredentials
|
||||||
|
}
|
||||||
|
|
||||||
|
// getenv aliases os.Getenv for testing
|
||||||
|
var getenv = os.Getenv
|
||||||
|
|
||||||
|
const (
|
||||||
|
// AWS Signature Version 4 signing algorithm identifier.
|
||||||
|
awsAlgorithm = "AWS4-HMAC-SHA256"
|
||||||
|
|
||||||
|
// The termination string for the AWS credential scope value as defined in
|
||||||
|
// https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
|
||||||
|
awsRequestType = "aws4_request"
|
||||||
|
|
||||||
|
// The AWS authorization header name for the security session token if available.
|
||||||
|
awsSecurityTokenHeader = "x-amz-security-token"
|
||||||
|
|
||||||
|
// The AWS authorization header name for the auto-generated date.
|
||||||
|
awsDateHeader = "x-amz-date"
|
||||||
|
|
||||||
|
awsTimeFormatLong = "20060102T150405Z"
|
||||||
|
awsTimeFormatShort = "20060102"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getSha256(input []byte) (string, error) {
|
||||||
|
hash := sha256.New()
|
||||||
|
if _, err := hash.Write(input); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return hex.EncodeToString(hash.Sum(nil)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getHmacSha256(key, input []byte) ([]byte, error) {
|
||||||
|
hash := hmac.New(sha256.New, key)
|
||||||
|
if _, err := hash.Write(input); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return hash.Sum(nil), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func cloneRequest(r *http.Request) *http.Request {
|
||||||
|
r2 := new(http.Request)
|
||||||
|
*r2 = *r
|
||||||
|
if r.Header != nil {
|
||||||
|
r2.Header = make(http.Header, len(r.Header))
|
||||||
|
|
||||||
|
// Find total number of values.
|
||||||
|
headerCount := 0
|
||||||
|
for _, headerValues := range r.Header {
|
||||||
|
headerCount += len(headerValues)
|
||||||
|
}
|
||||||
|
copiedHeaders := make([]string, headerCount) // shared backing array for headers' values
|
||||||
|
|
||||||
|
for headerKey, headerValues := range r.Header {
|
||||||
|
headerCount = copy(copiedHeaders, headerValues)
|
||||||
|
r2.Header[headerKey] = copiedHeaders[:headerCount:headerCount]
|
||||||
|
copiedHeaders = copiedHeaders[headerCount:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return r2
|
||||||
|
}
|
||||||
|
|
||||||
|
func canonicalPath(req *http.Request) string {
|
||||||
|
result := req.URL.EscapedPath()
|
||||||
|
if result == "" {
|
||||||
|
return "/"
|
||||||
|
}
|
||||||
|
return path.Clean(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func canonicalQuery(req *http.Request) string {
|
||||||
|
queryValues := req.URL.Query()
|
||||||
|
for queryKey := range queryValues {
|
||||||
|
sort.Strings(queryValues[queryKey])
|
||||||
|
}
|
||||||
|
return queryValues.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
func canonicalHeaders(req *http.Request) (string, string) {
|
||||||
|
// Header keys need to be sorted alphabetically.
|
||||||
|
var headers []string
|
||||||
|
lowerCaseHeaders := make(http.Header)
|
||||||
|
for k, v := range req.Header {
|
||||||
|
k := strings.ToLower(k)
|
||||||
|
if _, ok := lowerCaseHeaders[k]; ok {
|
||||||
|
// include additional values
|
||||||
|
lowerCaseHeaders[k] = append(lowerCaseHeaders[k], v...)
|
||||||
|
} else {
|
||||||
|
headers = append(headers, k)
|
||||||
|
lowerCaseHeaders[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Strings(headers)
|
||||||
|
|
||||||
|
var fullHeaders strings.Builder
|
||||||
|
for _, header := range headers {
|
||||||
|
headerValue := strings.Join(lowerCaseHeaders[header], ",")
|
||||||
|
fullHeaders.WriteString(header)
|
||||||
|
fullHeaders.WriteRune(':')
|
||||||
|
fullHeaders.WriteString(headerValue)
|
||||||
|
fullHeaders.WriteRune('\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.Join(headers, ";"), fullHeaders.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func requestDataHash(req *http.Request) (string, error) {
|
||||||
|
var requestData []byte
|
||||||
|
if req.Body != nil {
|
||||||
|
requestBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer requestBody.Close()
|
||||||
|
|
||||||
|
requestData, err = ioutil.ReadAll(io.LimitReader(requestBody, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return getSha256(requestData)
|
||||||
|
}
|
||||||
|
|
||||||
|
func requestHost(req *http.Request) string {
|
||||||
|
if req.Host != "" {
|
||||||
|
return req.Host
|
||||||
|
}
|
||||||
|
return req.URL.Host
|
||||||
|
}
|
||||||
|
|
||||||
|
func canonicalRequest(req *http.Request, canonicalHeaderColumns, canonicalHeaderData string) (string, error) {
|
||||||
|
dataHash, err := requestDataHash(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s", req.Method, canonicalPath(req), canonicalQuery(req), canonicalHeaderData, canonicalHeaderColumns, dataHash), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignRequest adds the appropriate headers to an http.Request
|
||||||
|
// or returns an error if something prevented this.
|
||||||
|
func (rs *awsRequestSigner) SignRequest(req *http.Request) error {
|
||||||
|
signedRequest := cloneRequest(req)
|
||||||
|
timestamp := now()
|
||||||
|
|
||||||
|
signedRequest.Header.Add("host", requestHost(req))
|
||||||
|
|
||||||
|
if rs.AwsSecurityCredentials.SecurityToken != "" {
|
||||||
|
signedRequest.Header.Add(awsSecurityTokenHeader, rs.AwsSecurityCredentials.SecurityToken)
|
||||||
|
}
|
||||||
|
|
||||||
|
if signedRequest.Header.Get("date") == "" {
|
||||||
|
signedRequest.Header.Add(awsDateHeader, timestamp.Format(awsTimeFormatLong))
|
||||||
|
}
|
||||||
|
|
||||||
|
authorizationCode, err := rs.generateAuthentication(signedRequest, timestamp)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
signedRequest.Header.Set("Authorization", authorizationCode)
|
||||||
|
|
||||||
|
req.Header = signedRequest.Header
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rs *awsRequestSigner) generateAuthentication(req *http.Request, timestamp time.Time) (string, error) {
|
||||||
|
canonicalHeaderColumns, canonicalHeaderData := canonicalHeaders(req)
|
||||||
|
|
||||||
|
dateStamp := timestamp.Format(awsTimeFormatShort)
|
||||||
|
serviceName := ""
|
||||||
|
if splitHost := strings.Split(requestHost(req), "."); len(splitHost) > 0 {
|
||||||
|
serviceName = splitHost[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
credentialScope := fmt.Sprintf("%s/%s/%s/%s", dateStamp, rs.RegionName, serviceName, awsRequestType)
|
||||||
|
|
||||||
|
requestString, err := canonicalRequest(req, canonicalHeaderColumns, canonicalHeaderData)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
requestHash, err := getSha256([]byte(requestString))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
stringToSign := fmt.Sprintf("%s\n%s\n%s\n%s", awsAlgorithm, timestamp.Format(awsTimeFormatLong), credentialScope, requestHash)
|
||||||
|
|
||||||
|
signingKey := []byte("AWS4" + rs.AwsSecurityCredentials.SecretAccessKey)
|
||||||
|
for _, signingInput := range []string{
|
||||||
|
dateStamp, rs.RegionName, serviceName, awsRequestType, stringToSign,
|
||||||
|
} {
|
||||||
|
signingKey, err = getHmacSha256(signingKey, []byte(signingInput))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s Credential=%s/%s, SignedHeaders=%s, Signature=%s", awsAlgorithm, rs.AwsSecurityCredentials.AccessKeyID, credentialScope, canonicalHeaderColumns, hex.EncodeToString(signingKey)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type awsCredentialSource struct {
|
||||||
|
EnvironmentID string
|
||||||
|
RegionURL string
|
||||||
|
RegionalCredVerificationURL string
|
||||||
|
CredVerificationURL string
|
||||||
|
TargetResource string
|
||||||
|
requestSigner *awsRequestSigner
|
||||||
|
region string
|
||||||
|
ctx context.Context
|
||||||
|
client *http.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
type awsRequestHeader struct {
|
||||||
|
Key string `json:"key"`
|
||||||
|
Value string `json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type awsRequest struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Headers []awsRequestHeader `json:"headers"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs awsCredentialSource) doRequest(req *http.Request) (*http.Response, error) {
|
||||||
|
if cs.client == nil {
|
||||||
|
cs.client = oauth2.NewClient(cs.ctx, nil)
|
||||||
|
}
|
||||||
|
return cs.client.Do(req.WithContext(cs.ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs awsCredentialSource) subjectToken() (string, error) {
|
||||||
|
if cs.requestSigner == nil {
|
||||||
|
awsSecurityCredentials, err := cs.getSecurityCredentials()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if cs.region, err = cs.getRegion(); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
cs.requestSigner = &awsRequestSigner{
|
||||||
|
RegionName: cs.region,
|
||||||
|
AwsSecurityCredentials: awsSecurityCredentials,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate the signed request to AWS STS GetCallerIdentity API.
|
||||||
|
// Use the required regional endpoint. Otherwise, the request will fail.
|
||||||
|
req, err := http.NewRequest("POST", strings.Replace(cs.RegionalCredVerificationURL, "{region}", cs.region, 1), nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
// The full, canonical resource name of the workload identity pool
|
||||||
|
// provider, with or without the HTTPS prefix.
|
||||||
|
// Including this header as part of the signature is recommended to
|
||||||
|
// ensure data integrity.
|
||||||
|
if cs.TargetResource != "" {
|
||||||
|
req.Header.Add("x-goog-cloud-target-resource", cs.TargetResource)
|
||||||
|
}
|
||||||
|
cs.requestSigner.SignRequest(req)
|
||||||
|
|
||||||
|
/*
|
||||||
|
The GCP STS endpoint expects the headers to be formatted as:
|
||||||
|
# [
|
||||||
|
# {key: 'x-amz-date', value: '...'},
|
||||||
|
# {key: 'Authorization', value: '...'},
|
||||||
|
# ...
|
||||||
|
# ]
|
||||||
|
# And then serialized as:
|
||||||
|
# quote(json.dumps({
|
||||||
|
# url: '...',
|
||||||
|
# method: 'POST',
|
||||||
|
# headers: [{key: 'x-amz-date', value: '...'}, ...]
|
||||||
|
# }))
|
||||||
|
*/
|
||||||
|
|
||||||
|
awsSignedReq := awsRequest{
|
||||||
|
URL: req.URL.String(),
|
||||||
|
Method: "POST",
|
||||||
|
}
|
||||||
|
for headerKey, headerList := range req.Header {
|
||||||
|
for _, headerValue := range headerList {
|
||||||
|
awsSignedReq.Headers = append(awsSignedReq.Headers, awsRequestHeader{
|
||||||
|
Key: headerKey,
|
||||||
|
Value: headerValue,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Slice(awsSignedReq.Headers, func(i, j int) bool {
|
||||||
|
headerCompare := strings.Compare(awsSignedReq.Headers[i].Key, awsSignedReq.Headers[j].Key)
|
||||||
|
if headerCompare == 0 {
|
||||||
|
return strings.Compare(awsSignedReq.Headers[i].Value, awsSignedReq.Headers[j].Value) < 0
|
||||||
|
}
|
||||||
|
return headerCompare < 0
|
||||||
|
})
|
||||||
|
|
||||||
|
result, err := json.Marshal(awsSignedReq)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return string(result), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs *awsCredentialSource) getRegion() (string, error) {
|
||||||
|
if envAwsRegion := getenv("AWS_REGION"); envAwsRegion != "" {
|
||||||
|
return envAwsRegion, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if cs.RegionURL == "" {
|
||||||
|
return "", errors.New("oauth2/google: unable to determine AWS region")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", cs.RegionURL, nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := cs.doRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return "", fmt.Errorf("oauth2/google: unable to retrieve AWS region - %s", string(respBody))
|
||||||
|
}
|
||||||
|
|
||||||
|
// This endpoint will return the region in format: us-east-2b.
|
||||||
|
// Only the us-east-2 part should be used.
|
||||||
|
respBodyEnd := 0
|
||||||
|
if len(respBody) > 1 {
|
||||||
|
respBodyEnd = len(respBody) - 1
|
||||||
|
}
|
||||||
|
return string(respBody[:respBodyEnd]), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs *awsCredentialSource) getSecurityCredentials() (result awsSecurityCredentials, err error) {
|
||||||
|
if accessKeyID := getenv("AWS_ACCESS_KEY_ID"); accessKeyID != "" {
|
||||||
|
if secretAccessKey := getenv("AWS_SECRET_ACCESS_KEY"); secretAccessKey != "" {
|
||||||
|
return awsSecurityCredentials{
|
||||||
|
AccessKeyID: accessKeyID,
|
||||||
|
SecretAccessKey: secretAccessKey,
|
||||||
|
SecurityToken: getenv("AWS_SESSION_TOKEN"),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
roleName, err := cs.getMetadataRoleName()
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
credentials, err := cs.getMetadataSecurityCredentials(roleName)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if credentials.AccessKeyID == "" {
|
||||||
|
return result, errors.New("oauth2/google: missing AccessKeyId credential")
|
||||||
|
}
|
||||||
|
|
||||||
|
if credentials.SecretAccessKey == "" {
|
||||||
|
return result, errors.New("oauth2/google: missing SecretAccessKey credential")
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentials, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs *awsCredentialSource) getMetadataSecurityCredentials(roleName string) (awsSecurityCredentials, error) {
|
||||||
|
var result awsSecurityCredentials
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", fmt.Sprintf("%s/%s", cs.CredVerificationURL, roleName), nil)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
req.Header.Add("Content-Type", "application/json")
|
||||||
|
|
||||||
|
resp, err := cs.doRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return result, fmt.Errorf("oauth2/google: unable to retrieve AWS security credentials - %s", string(respBody))
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(respBody, &result)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs *awsCredentialSource) getMetadataRoleName() (string, error) {
|
||||||
|
if cs.CredVerificationURL == "" {
|
||||||
|
return "", errors.New("oauth2/google: unable to determine the AWS metadata server security credentials endpoint")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", cs.CredVerificationURL, nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := cs.doRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return "", fmt.Errorf("oauth2/google: unable to retrieve AWS role name - %s", string(respBody))
|
||||||
|
}
|
||||||
|
|
||||||
|
return string(respBody), nil
|
||||||
|
}
|
46
vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go
generated
vendored
46
vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go
generated
vendored
|
@ -9,6 +9,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -35,7 +36,18 @@ func (c *Config) TokenSource(ctx context.Context) oauth2.TokenSource {
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
conf: c,
|
conf: c,
|
||||||
}
|
}
|
||||||
return oauth2.ReuseTokenSource(nil, ts)
|
if c.ServiceAccountImpersonationURL == "" {
|
||||||
|
return oauth2.ReuseTokenSource(nil, ts)
|
||||||
|
}
|
||||||
|
scopes := c.Scopes
|
||||||
|
ts.conf.Scopes = []string{"https://www.googleapis.com/auth/cloud-platform"}
|
||||||
|
imp := impersonateTokenSource{
|
||||||
|
ctx: ctx,
|
||||||
|
url: c.ServiceAccountImpersonationURL,
|
||||||
|
scopes: scopes,
|
||||||
|
ts: oauth2.ReuseTokenSource(nil, ts),
|
||||||
|
}
|
||||||
|
return oauth2.ReuseTokenSource(nil, imp)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Subject token file types.
|
// Subject token file types.
|
||||||
|
@ -66,11 +78,27 @@ type CredentialSource struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse determines the type of CredentialSource needed
|
// parse determines the type of CredentialSource needed
|
||||||
func (c *Config) parse() baseCredentialSource {
|
func (c *Config) parse(ctx context.Context) (baseCredentialSource, error) {
|
||||||
if c.CredentialSource.File != "" {
|
if len(c.CredentialSource.EnvironmentID) > 3 && c.CredentialSource.EnvironmentID[:3] == "aws" {
|
||||||
return fileCredentialSource{File: c.CredentialSource.File, Format: c.CredentialSource.Format}
|
if awsVersion, err := strconv.Atoi(c.CredentialSource.EnvironmentID[3:]); err == nil {
|
||||||
|
if awsVersion != 1 {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: aws version '%d' is not supported in the current build", awsVersion)
|
||||||
|
}
|
||||||
|
return awsCredentialSource{
|
||||||
|
EnvironmentID: c.CredentialSource.EnvironmentID,
|
||||||
|
RegionURL: c.CredentialSource.RegionURL,
|
||||||
|
RegionalCredVerificationURL: c.CredentialSource.RegionalCredVerificationURL,
|
||||||
|
CredVerificationURL: c.CredentialSource.URL,
|
||||||
|
TargetResource: c.Audience,
|
||||||
|
ctx: ctx,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
} else if c.CredentialSource.File != "" {
|
||||||
|
return fileCredentialSource{File: c.CredentialSource.File, Format: c.CredentialSource.Format}, nil
|
||||||
|
} else if c.CredentialSource.URL != "" {
|
||||||
|
return urlCredentialSource{URL: c.CredentialSource.URL, Format: c.CredentialSource.Format, ctx: ctx}, nil
|
||||||
}
|
}
|
||||||
return nil
|
return nil, fmt.Errorf("oauth2/google: unable to parse credential source")
|
||||||
}
|
}
|
||||||
|
|
||||||
type baseCredentialSource interface {
|
type baseCredentialSource interface {
|
||||||
|
@ -87,11 +115,12 @@ type tokenSource struct {
|
||||||
func (ts tokenSource) Token() (*oauth2.Token, error) {
|
func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
conf := ts.conf
|
conf := ts.conf
|
||||||
|
|
||||||
credSource := conf.parse()
|
credSource, err := conf.parse(ts.ctx)
|
||||||
if credSource == nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("oauth2/google: unable to parse credential source")
|
return nil, err
|
||||||
}
|
}
|
||||||
subjectToken, err := credSource.subjectToken()
|
subjectToken, err := credSource.subjectToken()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -128,6 +157,5 @@ func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
if stsResp.RefreshToken != "" {
|
if stsResp.RefreshToken != "" {
|
||||||
accessToken.RefreshToken = stsResp.RefreshToken
|
accessToken.RefreshToken = stsResp.RefreshToken
|
||||||
}
|
}
|
||||||
|
|
||||||
return accessToken, nil
|
return accessToken, nil
|
||||||
}
|
}
|
||||||
|
|
83
vendor/golang.org/x/oauth2/google/internal/externalaccount/impersonate.go
generated
vendored
Normal file
83
vendor/golang.org/x/oauth2/google/internal/externalaccount/impersonate.go
generated
vendored
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package externalaccount
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"golang.org/x/oauth2"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// generateAccesstokenReq is used for service account impersonation
|
||||||
|
type generateAccessTokenReq struct {
|
||||||
|
Delegates []string `json:"delegates,omitempty"`
|
||||||
|
Lifetime string `json:"lifetime,omitempty"`
|
||||||
|
Scope []string `json:"scope,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type impersonateTokenResponse struct {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
ExpireTime string `json:"expireTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type impersonateTokenSource struct {
|
||||||
|
ctx context.Context
|
||||||
|
ts oauth2.TokenSource
|
||||||
|
|
||||||
|
url string
|
||||||
|
scopes []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Token performs the exchange to get a temporary service account
|
||||||
|
func (its impersonateTokenSource) Token() (*oauth2.Token, error) {
|
||||||
|
reqBody := generateAccessTokenReq{
|
||||||
|
Lifetime: "3600s",
|
||||||
|
Scope: its.scopes,
|
||||||
|
}
|
||||||
|
b, err := json.Marshal(reqBody)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: unable to marshal request: %v", err)
|
||||||
|
}
|
||||||
|
client := oauth2.NewClient(its.ctx, its.ts)
|
||||||
|
req, err := http.NewRequest("POST", its.url, bytes.NewReader(b))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: unable to create impersonation request: %v", err)
|
||||||
|
}
|
||||||
|
req = req.WithContext(its.ctx)
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: unable to generate access token: %v", err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
body, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: unable to read body: %v", err)
|
||||||
|
}
|
||||||
|
if c := resp.StatusCode; c < 200 || c > 299 {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: status code %d: %s", c, body)
|
||||||
|
}
|
||||||
|
|
||||||
|
var accessTokenResp impersonateTokenResponse
|
||||||
|
if err := json.Unmarshal(body, &accessTokenResp); err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: unable to parse response: %v", err)
|
||||||
|
}
|
||||||
|
expiry, err := time.Parse(time.RFC3339, accessTokenResp.ExpireTime)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2/google: unable to parse expiry: %v", err)
|
||||||
|
}
|
||||||
|
return &oauth2.Token{
|
||||||
|
AccessToken: accessTokenResp.AccessToken,
|
||||||
|
Expiry: expiry,
|
||||||
|
TokenType: "Bearer",
|
||||||
|
}, nil
|
||||||
|
}
|
6
vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go
generated
vendored
6
vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go
generated
vendored
|
@ -8,12 +8,13 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"golang.org/x/oauth2"
|
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/oauth2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ExchangeToken performs an oauth2 token exchange with the provided endpoint.
|
// ExchangeToken performs an oauth2 token exchange with the provided endpoint.
|
||||||
|
@ -40,11 +41,12 @@ func ExchangeToken(ctx context.Context, endpoint string, request *STSTokenExchan
|
||||||
authentication.InjectAuthentication(data, headers)
|
authentication.InjectAuthentication(data, headers)
|
||||||
encodedData := data.Encode()
|
encodedData := data.Encode()
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, "POST", endpoint, strings.NewReader(encodedData))
|
req, err := http.NewRequest("POST", endpoint, strings.NewReader(encodedData))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("oauth2/google: failed to properly build http request: %v", err)
|
return nil, fmt.Errorf("oauth2/google: failed to properly build http request: %v", err)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
req = req.WithContext(ctx)
|
||||||
for key, list := range headers {
|
for key, list := range headers {
|
||||||
for _, val := range list {
|
for _, val := range list {
|
||||||
req.Header.Add(key, val)
|
req.Header.Add(key, val)
|
||||||
|
|
71
vendor/golang.org/x/oauth2/google/internal/externalaccount/urlcredsource.go
generated
vendored
Normal file
71
vendor/golang.org/x/oauth2/google/internal/externalaccount/urlcredsource.go
generated
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
// Copyright 2020 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package externalaccount
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"golang.org/x/oauth2"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type urlCredentialSource struct {
|
||||||
|
URL string
|
||||||
|
Headers map[string]string
|
||||||
|
Format format
|
||||||
|
ctx context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs urlCredentialSource) subjectToken() (string, error) {
|
||||||
|
client := oauth2.NewClient(cs.ctx, nil)
|
||||||
|
req, err := http.NewRequest("GET", cs.URL, nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("oauth2/google: HTTP request for URL-sourced credential failed: %v", err)
|
||||||
|
}
|
||||||
|
req = req.WithContext(cs.ctx)
|
||||||
|
|
||||||
|
for key, val := range cs.Headers {
|
||||||
|
req.Header.Add(key, val)
|
||||||
|
}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("oauth2/google: invalid response when retrieving subject token: %v", err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
tokenBytes, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("oauth2/google: invalid body in subject token URL query: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch cs.Format.Type {
|
||||||
|
case "json":
|
||||||
|
jsonData := make(map[string]interface{})
|
||||||
|
err = json.Unmarshal(tokenBytes, &jsonData)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("oauth2/google: failed to unmarshal subject token file: %v", err)
|
||||||
|
}
|
||||||
|
val, ok := jsonData[cs.Format.SubjectTokenFieldName]
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("oauth2/google: provided subject_token_field_name not found in credentials")
|
||||||
|
}
|
||||||
|
token, ok := val.(string)
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("oauth2/google: improperly formatted subject token")
|
||||||
|
}
|
||||||
|
return token, nil
|
||||||
|
case "text":
|
||||||
|
return string(tokenBytes), nil
|
||||||
|
case "":
|
||||||
|
return string(tokenBytes), nil
|
||||||
|
default:
|
||||||
|
return "", errors.New("oauth2/google: invalid credential_source file format type")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
102
vendor/golang.org/x/sys/execabs/execabs.go
generated
vendored
Normal file
102
vendor/golang.org/x/sys/execabs/execabs.go
generated
vendored
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
// Copyright 2020 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package execabs is a drop-in replacement for os/exec
|
||||||
|
// that requires PATH lookups to find absolute paths.
|
||||||
|
// That is, execabs.Command("cmd") runs the same PATH lookup
|
||||||
|
// as exec.Command("cmd"), but if the result is a path
|
||||||
|
// which is relative, the Run and Start methods will report
|
||||||
|
// an error instead of running the executable.
|
||||||
|
//
|
||||||
|
// See https://blog.golang.org/path-security for more information
|
||||||
|
// about when it may be necessary or appropriate to use this package.
|
||||||
|
package execabs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
"reflect"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ErrNotFound is the error resulting if a path search failed to find an executable file.
|
||||||
|
// It is an alias for exec.ErrNotFound.
|
||||||
|
var ErrNotFound = exec.ErrNotFound
|
||||||
|
|
||||||
|
// Cmd represents an external command being prepared or run.
|
||||||
|
// It is an alias for exec.Cmd.
|
||||||
|
type Cmd = exec.Cmd
|
||||||
|
|
||||||
|
// Error is returned by LookPath when it fails to classify a file as an executable.
|
||||||
|
// It is an alias for exec.Error.
|
||||||
|
type Error = exec.Error
|
||||||
|
|
||||||
|
// An ExitError reports an unsuccessful exit by a command.
|
||||||
|
// It is an alias for exec.ExitError.
|
||||||
|
type ExitError = exec.ExitError
|
||||||
|
|
||||||
|
func relError(file, path string) error {
|
||||||
|
return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LookPath searches for an executable named file in the directories
|
||||||
|
// named by the PATH environment variable. If file contains a slash,
|
||||||
|
// it is tried directly and the PATH is not consulted. The result will be
|
||||||
|
// an absolute path.
|
||||||
|
//
|
||||||
|
// LookPath differs from exec.LookPath in its handling of PATH lookups,
|
||||||
|
// which are used for file names without slashes. If exec.LookPath's
|
||||||
|
// PATH lookup would have returned an executable from the current directory,
|
||||||
|
// LookPath instead returns an error.
|
||||||
|
func LookPath(file string) (string, error) {
|
||||||
|
path, err := exec.LookPath(file)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if filepath.Base(file) == file && !filepath.IsAbs(path) {
|
||||||
|
return "", relError(file, path)
|
||||||
|
}
|
||||||
|
return path, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fixCmd(name string, cmd *exec.Cmd) {
|
||||||
|
if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) {
|
||||||
|
// exec.Command was called with a bare binary name and
|
||||||
|
// exec.LookPath returned a path which is not absolute.
|
||||||
|
// Set cmd.lookPathErr and clear cmd.Path so that it
|
||||||
|
// cannot be run.
|
||||||
|
lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer()))
|
||||||
|
if *lookPathErr == nil {
|
||||||
|
*lookPathErr = relError(name, cmd.Path)
|
||||||
|
}
|
||||||
|
cmd.Path = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommandContext is like Command but includes a context.
|
||||||
|
//
|
||||||
|
// The provided context is used to kill the process (by calling os.Process.Kill)
|
||||||
|
// if the context becomes done before the command completes on its own.
|
||||||
|
func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd {
|
||||||
|
cmd := exec.CommandContext(ctx, name, arg...)
|
||||||
|
fixCmd(name, cmd)
|
||||||
|
return cmd
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Command returns the Cmd struct to execute the named program with the given arguments.
|
||||||
|
// See exec.Command for most details.
|
||||||
|
//
|
||||||
|
// Command differs from exec.Command in its handling of PATH lookups,
|
||||||
|
// which are used when the program name contains no slashes.
|
||||||
|
// If exec.Command would have returned an exec.Cmd configured to run an
|
||||||
|
// executable from the current directory, Command instead
|
||||||
|
// returns an exec.Cmd that will return an error from Start or Run.
|
||||||
|
func Command(name string, arg ...string) *exec.Cmd {
|
||||||
|
cmd := exec.Command(name, arg...)
|
||||||
|
fixCmd(name, cmd)
|
||||||
|
return cmd
|
||||||
|
}
|
1
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
1
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
|
@ -609,6 +609,7 @@ const (
|
||||||
ETHTOOL_RXNTUPLE_ACTION_DROP = -0x1
|
ETHTOOL_RXNTUPLE_ACTION_DROP = -0x1
|
||||||
ETHTOOL_RX_FLOW_SPEC_RING = 0xffffffff
|
ETHTOOL_RX_FLOW_SPEC_RING = 0xffffffff
|
||||||
ETHTOOL_RX_FLOW_SPEC_RING_VF = 0xff00000000
|
ETHTOOL_RX_FLOW_SPEC_RING_VF = 0xff00000000
|
||||||
|
ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF = 0x20
|
||||||
ETHTOOL_SCHANNELS = 0x3d
|
ETHTOOL_SCHANNELS = 0x3d
|
||||||
ETHTOOL_SCOALESCE = 0xf
|
ETHTOOL_SCOALESCE = 0xf
|
||||||
ETHTOOL_SEEE = 0x45
|
ETHTOOL_SEEE = 0x45
|
||||||
|
|
1
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
1
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
|
@ -3271,7 +3271,6 @@ const (
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 0x2
|
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 0x2
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 0x1
|
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 0x1
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 0x2
|
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 0x2
|
||||||
ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF = 0x20
|
|
||||||
ETHTOOL_FLASH_ALL_REGIONS = 0x0
|
ETHTOOL_FLASH_ALL_REGIONS = 0x0
|
||||||
ETHTOOL_F_UNSUPPORTED__BIT = 0x0
|
ETHTOOL_F_UNSUPPORTED__BIT = 0x0
|
||||||
ETHTOOL_F_WISH__BIT = 0x1
|
ETHTOOL_F_WISH__BIT = 0x1
|
||||||
|
|
29
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
29
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
|
@ -22,6 +22,7 @@ type HWND uintptr
|
||||||
|
|
||||||
const (
|
const (
|
||||||
InvalidHandle = ^Handle(0)
|
InvalidHandle = ^Handle(0)
|
||||||
|
InvalidHWND = ^HWND(0)
|
||||||
|
|
||||||
// Flags for DefineDosDevice.
|
// Flags for DefineDosDevice.
|
||||||
DDD_EXACT_MATCH_ON_REMOVE = 0x00000004
|
DDD_EXACT_MATCH_ON_REMOVE = 0x00000004
|
||||||
|
@ -215,7 +216,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
||||||
//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
|
//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
|
||||||
//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
|
//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
|
||||||
//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32) = user32.GetWindowThreadProcessId
|
//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId
|
||||||
//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow
|
//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow
|
||||||
//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
|
//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
|
||||||
//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
|
//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
|
||||||
|
@ -264,19 +265,29 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
||||||
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
||||||
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
||||||
|
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW
|
||||||
|
//sys FindNextChangeNotification(handle Handle) (err error)
|
||||||
|
//sys FindCloseChangeNotification(handle Handle) (err error)
|
||||||
//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
|
//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
|
||||||
//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore
|
//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore
|
||||||
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
||||||
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
||||||
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
||||||
//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
|
//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
|
||||||
//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext
|
//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext
|
||||||
//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore
|
//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore
|
||||||
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
||||||
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
||||||
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
||||||
//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
|
//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
|
||||||
//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
|
//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
|
||||||
|
//sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW
|
||||||
|
//sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension
|
||||||
|
//sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject
|
||||||
|
//sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject
|
||||||
|
//sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData
|
||||||
|
//sys CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData
|
||||||
|
//sys WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx
|
||||||
//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
|
//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
|
||||||
//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
|
//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
|
||||||
//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
|
//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
|
||||||
|
|
240
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
240
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
|
@ -227,7 +227,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// filters for ReadDirectoryChangesW
|
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
||||||
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
||||||
FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
|
FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
|
||||||
FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
|
FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
|
||||||
|
@ -427,6 +427,67 @@ const (
|
||||||
CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
|
CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
|
||||||
CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002
|
CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002
|
||||||
|
|
||||||
|
/* CryptQueryObject object type */
|
||||||
|
CERT_QUERY_OBJECT_FILE = 1
|
||||||
|
CERT_QUERY_OBJECT_BLOB = 2
|
||||||
|
|
||||||
|
/* CryptQueryObject content type flags */
|
||||||
|
CERT_QUERY_CONTENT_CERT = 1
|
||||||
|
CERT_QUERY_CONTENT_CTL = 2
|
||||||
|
CERT_QUERY_CONTENT_CRL = 3
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_STORE = 4
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_CERT = 5
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_CTL = 6
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_CRL = 7
|
||||||
|
CERT_QUERY_CONTENT_PKCS7_SIGNED = 8
|
||||||
|
CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9
|
||||||
|
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10
|
||||||
|
CERT_QUERY_CONTENT_PKCS10 = 11
|
||||||
|
CERT_QUERY_CONTENT_PFX = 12
|
||||||
|
CERT_QUERY_CONTENT_CERT_PAIR = 13
|
||||||
|
CERT_QUERY_CONTENT_PFX_AND_LOAD = 14
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_ALL = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)
|
||||||
|
|
||||||
|
/* CryptQueryObject format type flags */
|
||||||
|
CERT_QUERY_FORMAT_BINARY = 1
|
||||||
|
CERT_QUERY_FORMAT_BASE64_ENCODED = 2
|
||||||
|
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3
|
||||||
|
CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY)
|
||||||
|
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
|
||||||
|
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
|
||||||
|
CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)
|
||||||
|
|
||||||
|
/* CertGetNameString name types */
|
||||||
|
CERT_NAME_EMAIL_TYPE = 1
|
||||||
|
CERT_NAME_RDN_TYPE = 2
|
||||||
|
CERT_NAME_ATTR_TYPE = 3
|
||||||
|
CERT_NAME_SIMPLE_DISPLAY_TYPE = 4
|
||||||
|
CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5
|
||||||
|
CERT_NAME_DNS_TYPE = 6
|
||||||
|
CERT_NAME_URL_TYPE = 7
|
||||||
|
CERT_NAME_UPN_TYPE = 8
|
||||||
|
|
||||||
|
/* CertGetNameString flags */
|
||||||
|
CERT_NAME_ISSUER_FLAG = 0x1
|
||||||
|
CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000
|
||||||
|
CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2
|
||||||
|
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000
|
||||||
|
|
||||||
/* AuthType values for SSLExtraCertChainPolicyPara struct */
|
/* AuthType values for SSLExtraCertChainPolicyPara struct */
|
||||||
AUTHTYPE_CLIENT = 1
|
AUTHTYPE_CLIENT = 1
|
||||||
AUTHTYPE_SERVER = 2
|
AUTHTYPE_SERVER = 2
|
||||||
|
@ -437,6 +498,22 @@ const (
|
||||||
SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
|
SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
|
||||||
SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
|
SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
|
||||||
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
|
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
|
||||||
|
|
||||||
|
/* Flags for Crypt[Un]ProtectData */
|
||||||
|
CRYPTPROTECT_UI_FORBIDDEN = 0x1
|
||||||
|
CRYPTPROTECT_LOCAL_MACHINE = 0x4
|
||||||
|
CRYPTPROTECT_CRED_SYNC = 0x8
|
||||||
|
CRYPTPROTECT_AUDIT = 0x10
|
||||||
|
CRYPTPROTECT_NO_RECOVERY = 0x20
|
||||||
|
CRYPTPROTECT_VERIFY_PROTECTION = 0x40
|
||||||
|
CRYPTPROTECT_CRED_REGENERATE = 0x80
|
||||||
|
|
||||||
|
/* Flags for CryptProtectPromptStruct */
|
||||||
|
CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1
|
||||||
|
CRYPTPROTECT_PROMPT_ON_PROTECT = 2
|
||||||
|
CRYPTPROTECT_PROMPT_RESERVED = 4
|
||||||
|
CRYPTPROTECT_PROMPT_STRONG = 8
|
||||||
|
CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -459,10 +536,58 @@ const (
|
||||||
REALTIME_PRIORITY_CLASS = 0x00000100
|
REALTIME_PRIORITY_CLASS = 0x00000100
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/* wintrust.h constants for WinVerifyTrustEx */
|
||||||
|
const (
|
||||||
|
WTD_UI_ALL = 1
|
||||||
|
WTD_UI_NONE = 2
|
||||||
|
WTD_UI_NOBAD = 3
|
||||||
|
WTD_UI_NOGOOD = 4
|
||||||
|
|
||||||
|
WTD_REVOKE_NONE = 0
|
||||||
|
WTD_REVOKE_WHOLECHAIN = 1
|
||||||
|
|
||||||
|
WTD_CHOICE_FILE = 1
|
||||||
|
WTD_CHOICE_CATALOG = 2
|
||||||
|
WTD_CHOICE_BLOB = 3
|
||||||
|
WTD_CHOICE_SIGNER = 4
|
||||||
|
WTD_CHOICE_CERT = 5
|
||||||
|
|
||||||
|
WTD_STATEACTION_IGNORE = 0x00000000
|
||||||
|
WTD_STATEACTION_VERIFY = 0x00000010
|
||||||
|
WTD_STATEACTION_CLOSE = 0x00000002
|
||||||
|
WTD_STATEACTION_AUTO_CACHE = 0x00000003
|
||||||
|
WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
|
||||||
|
|
||||||
|
WTD_USE_IE4_TRUST_FLAG = 0x1
|
||||||
|
WTD_NO_IE4_CHAIN_FLAG = 0x2
|
||||||
|
WTD_NO_POLICY_USAGE_FLAG = 0x4
|
||||||
|
WTD_REVOCATION_CHECK_NONE = 0x10
|
||||||
|
WTD_REVOCATION_CHECK_END_CERT = 0x20
|
||||||
|
WTD_REVOCATION_CHECK_CHAIN = 0x40
|
||||||
|
WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80
|
||||||
|
WTD_SAFER_FLAG = 0x100
|
||||||
|
WTD_HASH_ONLY_FLAG = 0x200
|
||||||
|
WTD_USE_DEFAULT_OSVER_CHECK = 0x400
|
||||||
|
WTD_LIFETIME_SIGNING_FLAG = 0x800
|
||||||
|
WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000
|
||||||
|
WTD_DISABLE_MD2_MD4 = 0x2000
|
||||||
|
WTD_MOTW = 0x4000
|
||||||
|
|
||||||
|
WTD_UICONTEXT_EXECUTE = 0
|
||||||
|
WTD_UICONTEXT_INSTALL = 1
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
|
OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
|
||||||
OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
|
OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
|
||||||
OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
|
OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
|
||||||
|
|
||||||
|
WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{
|
||||||
|
Data1: 0xaac56b,
|
||||||
|
Data2: 0xcd44,
|
||||||
|
Data3: 0x11d0,
|
||||||
|
Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// Pointer represents a pointer to an arbitrary Windows type.
|
// Pointer represents a pointer to an arbitrary Windows type.
|
||||||
|
@ -1051,7 +1176,57 @@ type MibIfRow struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CertInfo struct {
|
type CertInfo struct {
|
||||||
// Not implemented
|
Version uint32
|
||||||
|
SerialNumber CryptIntegerBlob
|
||||||
|
SignatureAlgorithm CryptAlgorithmIdentifier
|
||||||
|
Issuer CertNameBlob
|
||||||
|
NotBefore Filetime
|
||||||
|
NotAfter Filetime
|
||||||
|
Subject CertNameBlob
|
||||||
|
SubjectPublicKeyInfo CertPublicKeyInfo
|
||||||
|
IssuerUniqueId CryptBitBlob
|
||||||
|
SubjectUniqueId CryptBitBlob
|
||||||
|
CountExtensions uint32
|
||||||
|
Extensions *CertExtension
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertExtension struct {
|
||||||
|
ObjId *byte
|
||||||
|
Critical int32
|
||||||
|
Value CryptObjidBlob
|
||||||
|
}
|
||||||
|
|
||||||
|
type CryptAlgorithmIdentifier struct {
|
||||||
|
ObjId *byte
|
||||||
|
Parameters CryptObjidBlob
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertPublicKeyInfo struct {
|
||||||
|
Algorithm CryptAlgorithmIdentifier
|
||||||
|
PublicKey CryptBitBlob
|
||||||
|
}
|
||||||
|
|
||||||
|
type DataBlob struct {
|
||||||
|
Size uint32
|
||||||
|
Data *byte
|
||||||
|
}
|
||||||
|
type CryptIntegerBlob DataBlob
|
||||||
|
type CryptUintBlob DataBlob
|
||||||
|
type CryptObjidBlob DataBlob
|
||||||
|
type CertNameBlob DataBlob
|
||||||
|
type CertRdnValueBlob DataBlob
|
||||||
|
type CertBlob DataBlob
|
||||||
|
type CrlBlob DataBlob
|
||||||
|
type CryptDataBlob DataBlob
|
||||||
|
type CryptHashBlob DataBlob
|
||||||
|
type CryptDigestBlob DataBlob
|
||||||
|
type CryptDerBlob DataBlob
|
||||||
|
type CryptAttrBlob DataBlob
|
||||||
|
|
||||||
|
type CryptBitBlob struct {
|
||||||
|
Size uint32
|
||||||
|
Data *byte
|
||||||
|
UnusedBits uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
type CertContext struct {
|
type CertContext struct {
|
||||||
|
@ -1157,9 +1332,64 @@ type CertChainPolicyStatus struct {
|
||||||
ExtraPolicyStatus Pointer
|
ExtraPolicyStatus Pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
type CryptDataBlob struct {
|
type CertPolicyInfo struct {
|
||||||
Size uint32
|
Identifier *byte
|
||||||
Data *byte
|
CountQualifiers uint32
|
||||||
|
Qualifiers *CertPolicyQualifierInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertPoliciesInfo struct {
|
||||||
|
Count uint32
|
||||||
|
PolicyInfos *CertPolicyInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertPolicyQualifierInfo struct {
|
||||||
|
// Not implemented
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertStrongSignPara struct {
|
||||||
|
Size uint32
|
||||||
|
InfoChoice uint32
|
||||||
|
InfoOrSerializedInfoOrOID unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
type CryptProtectPromptStruct struct {
|
||||||
|
Size uint32
|
||||||
|
PromptFlags uint32
|
||||||
|
App HWND
|
||||||
|
Prompt *uint16
|
||||||
|
}
|
||||||
|
|
||||||
|
type WinTrustData struct {
|
||||||
|
Size uint32
|
||||||
|
PolicyCallbackData uintptr
|
||||||
|
SIPClientData uintptr
|
||||||
|
UIChoice uint32
|
||||||
|
RevocationChecks uint32
|
||||||
|
UnionChoice uint32
|
||||||
|
FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer
|
||||||
|
StateAction uint32
|
||||||
|
StateData Handle
|
||||||
|
URLReference *uint16
|
||||||
|
ProvFlags uint32
|
||||||
|
UIContext uint32
|
||||||
|
SignatureSettings *WinTrustSignatureSettings
|
||||||
|
}
|
||||||
|
|
||||||
|
type WinTrustFileInfo struct {
|
||||||
|
Size uint32
|
||||||
|
FilePath *uint16
|
||||||
|
File Handle
|
||||||
|
KnownSubject *GUID
|
||||||
|
}
|
||||||
|
|
||||||
|
type WinTrustSignatureSettings struct {
|
||||||
|
Size uint32
|
||||||
|
Index uint32
|
||||||
|
Flags uint32
|
||||||
|
SecondarySigs uint32
|
||||||
|
VerifiedSigIndex uint32
|
||||||
|
CryptoPolicy *CertStrongSignPara
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
108
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
108
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
|
@ -51,6 +51,7 @@ var (
|
||||||
modshell32 = NewLazySystemDLL("shell32.dll")
|
modshell32 = NewLazySystemDLL("shell32.dll")
|
||||||
moduser32 = NewLazySystemDLL("user32.dll")
|
moduser32 = NewLazySystemDLL("user32.dll")
|
||||||
moduserenv = NewLazySystemDLL("userenv.dll")
|
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||||
|
modwintrust = NewLazySystemDLL("wintrust.dll")
|
||||||
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||||
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
||||||
|
|
||||||
|
@ -145,12 +146,18 @@ var (
|
||||||
procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore")
|
procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore")
|
||||||
procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext")
|
procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext")
|
||||||
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
||||||
|
procCertFindExtension = modcrypt32.NewProc("CertFindExtension")
|
||||||
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
||||||
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
||||||
procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
||||||
|
procCertGetNameStringW = modcrypt32.NewProc("CertGetNameStringW")
|
||||||
procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
||||||
procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
||||||
procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
||||||
|
procCryptDecodeObject = modcrypt32.NewProc("CryptDecodeObject")
|
||||||
|
procCryptProtectData = modcrypt32.NewProc("CryptProtectData")
|
||||||
|
procCryptQueryObject = modcrypt32.NewProc("CryptQueryObject")
|
||||||
|
procCryptUnprotectData = modcrypt32.NewProc("CryptUnprotectData")
|
||||||
procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore")
|
procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore")
|
||||||
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
||||||
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
||||||
|
@ -183,9 +190,12 @@ var (
|
||||||
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
||||||
procExitProcess = modkernel32.NewProc("ExitProcess")
|
procExitProcess = modkernel32.NewProc("ExitProcess")
|
||||||
procFindClose = modkernel32.NewProc("FindClose")
|
procFindClose = modkernel32.NewProc("FindClose")
|
||||||
|
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
||||||
|
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
||||||
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
||||||
procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
||||||
procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
||||||
|
procFindNextChangeNotification = modkernel32.NewProc("FindNextChangeNotification")
|
||||||
procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
||||||
procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
||||||
procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
||||||
|
@ -347,6 +357,7 @@ var (
|
||||||
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
||||||
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
||||||
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
||||||
|
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
||||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||||
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
||||||
|
@ -1199,6 +1210,12 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {
|
||||||
|
r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))
|
||||||
|
ret = (*CertExtension)(unsafe.Pointer(r0))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CertFreeCertificateChain(ctx *CertChainContext) {
|
func CertFreeCertificateChain(ctx *CertChainContext) {
|
||||||
syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
|
syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
|
||||||
return
|
return
|
||||||
|
@ -1220,6 +1237,12 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))
|
||||||
|
chars = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
|
func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
|
r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
|
||||||
handle = Handle(r0)
|
handle = Handle(r0)
|
||||||
|
@ -1246,6 +1269,38 @@ func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {
|
func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))
|
r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))
|
||||||
store = Handle(r0)
|
store = Handle(r0)
|
||||||
|
@ -1525,6 +1580,36 @@ func FindClose(handle Handle) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FindCloseChangeNotification(handle Handle) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
|
||||||
|
var _p0 *uint16
|
||||||
|
_p0, err = syscall.UTF16PtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
|
||||||
|
var _p1 uint32
|
||||||
|
if watchSubtree {
|
||||||
|
_p1 = 1
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))
|
||||||
|
handle = Handle(r0)
|
||||||
|
if handle == InvalidHandle {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
|
func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
|
r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
handle = Handle(r0)
|
handle = Handle(r0)
|
||||||
|
@ -1552,6 +1637,14 @@ func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, er
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FindNextChangeNotification(handle Handle) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func findNextFile1(handle Handle, data *win32finddata1) (err error) {
|
func findNextFile1(handle Handle, data *win32finddata1) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
|
r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
|
@ -2904,9 +2997,12 @@ func GetShellWindow() (shellWindow HWND) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32) {
|
func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {
|
||||||
r0, _, _ := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)
|
r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)
|
||||||
tid = uint32(r0)
|
tid = uint32(r0)
|
||||||
|
if tid == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2947,6 +3043,14 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
||||||
|
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
||||||
|
if r0 != 0 {
|
||||||
|
ret = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func FreeAddrInfoW(addrinfo *AddrinfoW) {
|
func FreeAddrInfoW(addrinfo *AddrinfoW) {
|
||||||
syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
|
syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
2
vendor/golang.org/x/tools/cmd/goimports/goimports.go
generated
vendored
2
vendor/golang.org/x/tools/cmd/goimports/goimports.go
generated
vendored
|
@ -11,11 +11,11 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/scanner"
|
"go/scanner"
|
||||||
|
exec "golang.org/x/sys/execabs"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"runtime/pprof"
|
"runtime/pprof"
|
||||||
|
|
2
vendor/golang.org/x/tools/internal/gocommand/invoke.go
generated
vendored
2
vendor/golang.org/x/tools/internal/gocommand/invoke.go
generated
vendored
|
@ -9,9 +9,9 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
exec "golang.org/x/sys/execabs"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
42
vendor/google.golang.org/api/internal/creds.go
generated
vendored
42
vendor/google.golang.org/api/internal/creds.go
generated
vendored
|
@ -64,28 +64,40 @@ const (
|
||||||
|
|
||||||
// credentialsFromJSON returns a google.Credentials based on the input.
|
// credentialsFromJSON returns a google.Credentials based on the input.
|
||||||
//
|
//
|
||||||
// - If the JSON is a service account and no scopes provided, returns self-signed JWT auth flow
|
// - A self-signed JWT auth flow will be executed if: the data file is a service
|
||||||
// - Otherwise, returns OAuth 2.0 flow.
|
// account, no user are scopes provided, an audience is provided, a user
|
||||||
|
// specified endpoint is not provided, and credentials will not be
|
||||||
|
// impersonated.
|
||||||
|
//
|
||||||
|
// - Otherwise, executes a stanard OAuth 2.0 flow.
|
||||||
func credentialsFromJSON(ctx context.Context, data []byte, ds *DialSettings) (*google.Credentials, error) {
|
func credentialsFromJSON(ctx context.Context, data []byte, ds *DialSettings) (*google.Credentials, error) {
|
||||||
cred, err := google.CredentialsFromJSON(ctx, data, ds.GetScopes()...)
|
cred, err := google.CredentialsFromJSON(ctx, data, ds.GetScopes()...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(data) > 0 && len(ds.Scopes) == 0 && (ds.DefaultAudience != "" || len(ds.Audiences) > 0) {
|
// Standard OAuth 2.0 Flow
|
||||||
var f struct {
|
if len(data) == 0 ||
|
||||||
Type string `json:"type"`
|
len(ds.Scopes) > 0 ||
|
||||||
// The rest JSON fields are omitted because they are not used.
|
(ds.DefaultAudience == "" && len(ds.Audiences) == 0) ||
|
||||||
}
|
ds.ImpersonationConfig != nil ||
|
||||||
if err := json.Unmarshal(cred.JSON, &f); err != nil {
|
ds.Endpoint != "" {
|
||||||
|
return cred, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if JSON is a service account and if so create a self-signed JWT.
|
||||||
|
var f struct {
|
||||||
|
Type string `json:"type"`
|
||||||
|
// The rest JSON fields are omitted because they are not used.
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal(cred.JSON, &f); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if f.Type == serviceAccountKey {
|
||||||
|
ts, err := selfSignedJWTTokenSource(data, ds.DefaultAudience, ds.Audiences)
|
||||||
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if f.Type == serviceAccountKey {
|
cred.TokenSource = ts
|
||||||
ts, err := selfSignedJWTTokenSource(data, ds.DefaultAudience, ds.Audiences)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
cred.TokenSource = ts
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return cred, err
|
return cred, err
|
||||||
}
|
}
|
||||||
|
|
53
vendor/google.golang.org/api/internal/gensupport/send.go
generated
vendored
53
vendor/google.golang.org/api/internal/gensupport/send.go
generated
vendored
|
@ -12,23 +12,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Hook is the type of a function that is called once before each HTTP request
|
|
||||||
// that is sent by a generated API. It returns a function that is called after
|
|
||||||
// the request returns.
|
|
||||||
// Hooks are not called if the context is nil.
|
|
||||||
type Hook func(ctx context.Context, req *http.Request) func(resp *http.Response)
|
|
||||||
|
|
||||||
var hooks []Hook
|
|
||||||
|
|
||||||
// RegisterHook registers a Hook to be called before each HTTP request by a
|
|
||||||
// generated API. Hooks are called in the order they are registered. Each
|
|
||||||
// hook can return a function; if it is non-nil, it is called after the HTTP
|
|
||||||
// request returns. These functions are called in the reverse order.
|
|
||||||
// RegisterHook should not be called concurrently with itself or SendRequest.
|
|
||||||
func RegisterHook(h Hook) {
|
|
||||||
hooks = append(hooks, h)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SendRequest sends a single HTTP request using the given client.
|
// SendRequest sends a single HTTP request using the given client.
|
||||||
// If ctx is non-nil, it calls all hooks, then sends the request with
|
// If ctx is non-nil, it calls all hooks, then sends the request with
|
||||||
// req.WithContext, then calls any functions returned by the hooks in
|
// req.WithContext, then calls any functions returned by the hooks in
|
||||||
|
@ -42,23 +25,7 @@ func SendRequest(ctx context.Context, client *http.Client, req *http.Request) (*
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
return client.Do(req)
|
return client.Do(req)
|
||||||
}
|
}
|
||||||
// Call hooks in order of registration, store returned funcs.
|
return send(ctx, client, req)
|
||||||
post := make([]func(resp *http.Response), len(hooks))
|
|
||||||
for i, h := range hooks {
|
|
||||||
fn := h(ctx, req)
|
|
||||||
post[i] = fn
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send request.
|
|
||||||
resp, err := send(ctx, client, req)
|
|
||||||
|
|
||||||
// Call returned funcs in reverse order.
|
|
||||||
for i := len(post) - 1; i >= 0; i-- {
|
|
||||||
if fn := post[i]; fn != nil {
|
|
||||||
fn(resp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return resp, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func send(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
|
func send(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
|
||||||
|
@ -92,23 +59,7 @@ func SendRequestWithRetry(ctx context.Context, client *http.Client, req *http.Re
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
return client.Do(req)
|
return client.Do(req)
|
||||||
}
|
}
|
||||||
// Call hooks in order of registration, store returned funcs.
|
return sendAndRetry(ctx, client, req)
|
||||||
post := make([]func(resp *http.Response), len(hooks))
|
|
||||||
for i, h := range hooks {
|
|
||||||
fn := h(ctx, req)
|
|
||||||
post[i] = fn
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send request with retry.
|
|
||||||
resp, err := sendAndRetry(ctx, client, req)
|
|
||||||
|
|
||||||
// Call returned funcs in reverse order.
|
|
||||||
for i := len(post) - 1; i >= 0; i-- {
|
|
||||||
if fn := post[i]; fn != nil {
|
|
||||||
fn(resp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return resp, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendAndRetry(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
|
func sendAndRetry(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
|
||||||
|
|
106
vendor/google.golang.org/api/storage/v1/storage-gen.go
generated
vendored
106
vendor/google.golang.org/api/storage/v1/storage-gen.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2020 Google LLC.
|
// Copyright 2021 Google LLC.
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
@ -2446,7 +2446,7 @@ func (c *BucketAccessControlsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2594,7 +2594,7 @@ func (c *BucketAccessControlsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2761,7 +2761,7 @@ func (c *BucketAccessControlsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2934,7 +2934,7 @@ func (c *BucketAccessControlsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3095,7 +3095,7 @@ func (c *BucketAccessControlsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3269,7 +3269,7 @@ func (c *BucketAccessControlsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3455,7 +3455,7 @@ func (c *BucketsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3634,7 +3634,7 @@ func (c *BucketsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3840,7 +3840,7 @@ func (c *BucketsGetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4057,7 +4057,7 @@ func (c *BucketsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4314,7 +4314,7 @@ func (c *BucketsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4524,7 +4524,7 @@ func (c *BucketsLockRetentionPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsLockRetentionPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsLockRetentionPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4759,7 +4759,7 @@ func (c *BucketsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4988,7 +4988,7 @@ func (c *BucketsSetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5163,7 +5163,7 @@ func (c *BucketsTestIamPermissionsCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5403,7 +5403,7 @@ func (c *BucketsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5615,7 +5615,7 @@ func (c *ChannelsStopCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5732,7 +5732,7 @@ func (c *DefaultObjectAccessControlsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5880,7 +5880,7 @@ func (c *DefaultObjectAccessControlsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6048,7 +6048,7 @@ func (c *DefaultObjectAccessControlsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6238,7 +6238,7 @@ func (c *DefaultObjectAccessControlsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6411,7 +6411,7 @@ func (c *DefaultObjectAccessControlsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6585,7 +6585,7 @@ func (c *DefaultObjectAccessControlsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6757,7 +6757,7 @@ func (c *NotificationsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6905,7 +6905,7 @@ func (c *NotificationsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7075,7 +7075,7 @@ func (c *NotificationsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7250,7 +7250,7 @@ func (c *NotificationsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7423,7 +7423,7 @@ func (c *ObjectAccessControlsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7595,7 +7595,7 @@ func (c *ObjectAccessControlsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7786,7 +7786,7 @@ func (c *ObjectAccessControlsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7983,7 +7983,7 @@ func (c *ObjectAccessControlsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8168,7 +8168,7 @@ func (c *ObjectAccessControlsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8366,7 +8366,7 @@ func (c *ObjectAccessControlsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8603,7 +8603,7 @@ func (c *ObjectsComposeCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8946,7 +8946,7 @@ func (c *ObjectsCopyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -9274,7 +9274,7 @@ func (c *ObjectsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -9507,7 +9507,7 @@ func (c *ObjectsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -9757,7 +9757,7 @@ func (c *ObjectsGetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -10074,7 +10074,7 @@ func (c *ObjectsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -10447,7 +10447,7 @@ func (c *ObjectsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -10764,7 +10764,7 @@ func (c *ObjectsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11156,7 +11156,7 @@ func (c *ObjectsRewriteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsRewriteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsRewriteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11459,7 +11459,7 @@ func (c *ObjectsSetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11659,7 +11659,7 @@ func (c *ObjectsTestIamPermissionsCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11920,7 +11920,7 @@ func (c *ObjectsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12238,7 +12238,7 @@ func (c *ObjectsWatchAllCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12454,7 +12454,7 @@ func (c *ProjectsHmacKeysCreateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12604,7 +12604,7 @@ func (c *ProjectsHmacKeysDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12739,7 +12739,7 @@ func (c *ProjectsHmacKeysGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12939,7 +12939,7 @@ func (c *ProjectsHmacKeysListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -13134,7 +13134,7 @@ func (c *ProjectsHmacKeysUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -13311,7 +13311,7 @@ func (c *ProjectsServiceAccountGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsServiceAccountGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsServiceAccountGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20201124")
|
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210128")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
|
2
vendor/google.golang.org/api/transport/http/dial.go
generated
vendored
2
vendor/google.golang.org/api/transport/http/dial.go
generated
vendored
|
@ -88,7 +88,7 @@ func newTransport(ctx context.Context, base http.RoundTripper, settings *interna
|
||||||
}
|
}
|
||||||
|
|
||||||
ts := creds.TokenSource
|
ts := creds.TokenSource
|
||||||
if settings.TokenSource != nil {
|
if settings.ImpersonationConfig == nil && settings.TokenSource != nil {
|
||||||
ts = settings.TokenSource
|
ts = settings.TokenSource
|
||||||
}
|
}
|
||||||
trans = &oauth2.Transport{
|
trans = &oauth2.Transport{
|
||||||
|
|
30
vendor/google.golang.org/grpc/Makefile
generated
vendored
30
vendor/google.golang.org/grpc/Makefile
generated
vendored
|
@ -1,13 +1,13 @@
|
||||||
all: vet test testrace
|
all: vet test testrace
|
||||||
|
|
||||||
build: deps
|
build:
|
||||||
go build google.golang.org/grpc/...
|
go build google.golang.org/grpc/...
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
go clean -i google.golang.org/grpc/...
|
go clean -i google.golang.org/grpc/...
|
||||||
|
|
||||||
deps:
|
deps:
|
||||||
go get -d -v google.golang.org/grpc/...
|
GO111MODULE=on go get -d -v google.golang.org/grpc/...
|
||||||
|
|
||||||
proto:
|
proto:
|
||||||
@ if ! which protoc > /dev/null; then \
|
@ if ! which protoc > /dev/null; then \
|
||||||
|
@ -16,30 +16,18 @@ proto:
|
||||||
fi
|
fi
|
||||||
go generate google.golang.org/grpc/...
|
go generate google.golang.org/grpc/...
|
||||||
|
|
||||||
test: testdeps
|
test:
|
||||||
go test -cpu 1,4 -timeout 7m google.golang.org/grpc/...
|
go test -cpu 1,4 -timeout 7m google.golang.org/grpc/...
|
||||||
|
|
||||||
testsubmodule: testdeps
|
testsubmodule:
|
||||||
cd security/advancedtls && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/advancedtls/...
|
cd security/advancedtls && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/advancedtls/...
|
||||||
cd security/authorization && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/authorization/...
|
cd security/authorization && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/authorization/...
|
||||||
|
|
||||||
testappengine: testappenginedeps
|
testrace:
|
||||||
goapp test -cpu 1,4 -timeout 7m google.golang.org/grpc/...
|
|
||||||
|
|
||||||
testappenginedeps:
|
|
||||||
goapp get -d -v -t -tags 'appengine appenginevm' google.golang.org/grpc/...
|
|
||||||
|
|
||||||
testdeps:
|
|
||||||
go get -d -v -t google.golang.org/grpc/...
|
|
||||||
|
|
||||||
testrace: testdeps
|
|
||||||
go test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/...
|
go test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/...
|
||||||
|
|
||||||
updatedeps:
|
testdeps:
|
||||||
go get -d -v -u -f google.golang.org/grpc/...
|
GO111MODULE=on go get -d -v -t google.golang.org/grpc/...
|
||||||
|
|
||||||
updatetestdeps:
|
|
||||||
go get -d -v -t -u -f google.golang.org/grpc/...
|
|
||||||
|
|
||||||
vet: vetdeps
|
vet: vetdeps
|
||||||
./vet.sh
|
./vet.sh
|
||||||
|
@ -51,14 +39,10 @@ vetdeps:
|
||||||
all \
|
all \
|
||||||
build \
|
build \
|
||||||
clean \
|
clean \
|
||||||
deps \
|
|
||||||
proto \
|
proto \
|
||||||
test \
|
test \
|
||||||
testappengine \
|
testappengine \
|
||||||
testappenginedeps \
|
testappenginedeps \
|
||||||
testdeps \
|
|
||||||
testrace \
|
testrace \
|
||||||
updatedeps \
|
|
||||||
updatetestdeps \
|
|
||||||
vet \
|
vet \
|
||||||
vetdeps
|
vetdeps
|
||||||
|
|
3
vendor/google.golang.org/grpc/SECURITY.md
generated
vendored
Normal file
3
vendor/google.golang.org/grpc/SECURITY.md
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
For information on gRPC Security Policy and reporting potentional security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md).
|
32
vendor/google.golang.org/grpc/balancer/base/balancer.go
generated
vendored
32
vendor/google.golang.org/grpc/balancer/base/balancer.go
generated
vendored
|
@ -64,7 +64,7 @@ type baseBalancer struct {
|
||||||
csEvltr *balancer.ConnectivityStateEvaluator
|
csEvltr *balancer.ConnectivityStateEvaluator
|
||||||
state connectivity.State
|
state connectivity.State
|
||||||
|
|
||||||
subConns map[resolver.Address]balancer.SubConn
|
subConns map[resolver.Address]balancer.SubConn // `attributes` is stripped from the keys of this map (the addresses)
|
||||||
scStates map[balancer.SubConn]connectivity.State
|
scStates map[balancer.SubConn]connectivity.State
|
||||||
picker balancer.Picker
|
picker balancer.Picker
|
||||||
config Config
|
config Config
|
||||||
|
@ -101,17 +101,41 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error {
|
||||||
// addrsSet is the set converted from addrs, it's used for quick lookup of an address.
|
// addrsSet is the set converted from addrs, it's used for quick lookup of an address.
|
||||||
addrsSet := make(map[resolver.Address]struct{})
|
addrsSet := make(map[resolver.Address]struct{})
|
||||||
for _, a := range s.ResolverState.Addresses {
|
for _, a := range s.ResolverState.Addresses {
|
||||||
addrsSet[a] = struct{}{}
|
// Strip attributes from addresses before using them as map keys. So
|
||||||
if _, ok := b.subConns[a]; !ok {
|
// that when two addresses only differ in attributes pointers (but with
|
||||||
|
// the same attribute content), they are considered the same address.
|
||||||
|
//
|
||||||
|
// Note that this doesn't handle the case where the attribute content is
|
||||||
|
// different. So if users want to set different attributes to create
|
||||||
|
// duplicate connections to the same backend, it doesn't work. This is
|
||||||
|
// fine for now, because duplicate is done by setting Metadata today.
|
||||||
|
//
|
||||||
|
// TODO: read attributes to handle duplicate connections.
|
||||||
|
aNoAttrs := a
|
||||||
|
aNoAttrs.Attributes = nil
|
||||||
|
addrsSet[aNoAttrs] = struct{}{}
|
||||||
|
if sc, ok := b.subConns[aNoAttrs]; !ok {
|
||||||
// a is a new address (not existing in b.subConns).
|
// a is a new address (not existing in b.subConns).
|
||||||
|
//
|
||||||
|
// When creating SubConn, the original address with attributes is
|
||||||
|
// passed through. So that connection configurations in attributes
|
||||||
|
// (like creds) will be used.
|
||||||
sc, err := b.cc.NewSubConn([]resolver.Address{a}, balancer.NewSubConnOptions{HealthCheckEnabled: b.config.HealthCheck})
|
sc, err := b.cc.NewSubConn([]resolver.Address{a}, balancer.NewSubConnOptions{HealthCheckEnabled: b.config.HealthCheck})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warningf("base.baseBalancer: failed to create new SubConn: %v", err)
|
logger.Warningf("base.baseBalancer: failed to create new SubConn: %v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
b.subConns[a] = sc
|
b.subConns[aNoAttrs] = sc
|
||||||
b.scStates[sc] = connectivity.Idle
|
b.scStates[sc] = connectivity.Idle
|
||||||
sc.Connect()
|
sc.Connect()
|
||||||
|
} else {
|
||||||
|
// Always update the subconn's address in case the attributes
|
||||||
|
// changed.
|
||||||
|
//
|
||||||
|
// The SubConn does a reflect.DeepEqual of the new and old
|
||||||
|
// addresses. So this is a noop if the current address is the same
|
||||||
|
// as the old one (including attributes).
|
||||||
|
sc.UpdateAddresses([]resolver.Address{a})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for a, sc := range b.subConns {
|
for a, sc := range b.subConns {
|
||||||
|
|
6
vendor/google.golang.org/grpc/clientconn.go
generated
vendored
6
vendor/google.golang.org/grpc/clientconn.go
generated
vendored
|
@ -109,11 +109,11 @@ type defaultConfigSelector struct {
|
||||||
sc *ServiceConfig
|
sc *ServiceConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) *iresolver.RPCConfig {
|
func (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*iresolver.RPCConfig, error) {
|
||||||
return &iresolver.RPCConfig{
|
return &iresolver.RPCConfig{
|
||||||
Context: rpcInfo.Context,
|
Context: rpcInfo.Context,
|
||||||
MethodConfig: getMethodConfig(dcs.sc, rpcInfo.Method),
|
MethodConfig: getMethodConfig(dcs.sc, rpcInfo.Method),
|
||||||
}
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DialContext creates a client connection to the given target. By default, it's
|
// DialContext creates a client connection to the given target. By default, it's
|
||||||
|
@ -270,7 +270,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *
|
||||||
cc.authority = creds.Info().ServerName
|
cc.authority = creds.Info().ServerName
|
||||||
} else if cc.dopts.insecure && cc.dopts.authority != "" {
|
} else if cc.dopts.insecure && cc.dopts.authority != "" {
|
||||||
cc.authority = cc.dopts.authority
|
cc.authority = cc.dopts.authority
|
||||||
} else if strings.HasPrefix(cc.target, "unix:") {
|
} else if strings.HasPrefix(cc.target, "unix:") || strings.HasPrefix(cc.target, "unix-abstract:") {
|
||||||
cc.authority = "localhost"
|
cc.authority = "localhost"
|
||||||
} else if strings.HasPrefix(cc.parsedTarget.Endpoint, ":") {
|
} else if strings.HasPrefix(cc.parsedTarget.Endpoint, ":") {
|
||||||
cc.authority = "localhost" + cc.parsedTarget.Endpoint
|
cc.authority = "localhost" + cc.parsedTarget.Endpoint
|
||||||
|
|
4
vendor/google.golang.org/grpc/go.mod
generated
vendored
4
vendor/google.golang.org/grpc/go.mod
generated
vendored
|
@ -3,8 +3,8 @@ module google.golang.org/grpc
|
||||||
go 1.11
|
go 1.11
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403
|
||||||
github.com/envoyproxy/go-control-plane v0.9.7
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
|
||||||
github.com/golang/protobuf v1.4.2
|
github.com/golang/protobuf v1.4.2
|
||||||
github.com/google/go-cmp v0.5.0
|
github.com/google/go-cmp v0.5.0
|
||||||
|
|
14
vendor/google.golang.org/grpc/go.sum
generated
vendored
14
vendor/google.golang.org/grpc/go.sum
generated
vendored
|
@ -6,13 +6,14 @@ github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
|
github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354 h1:9kRtNpqLHbZVO/NNxhHp2ymxFxsHOe3x2efJGn//Tas=
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M=
|
||||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
|
github.com/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/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.7 h1:EARl0OvqMoxq/UMgMSCLnXzkaXbxzskluEBlMQCJPms=
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad h1:EmNYJhPYy0pOFjCx2PrgtaBXmee0iUX9hLlxE1xHOJE=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
|
@ -36,10 +37,13 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
|
||||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
|
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
|
@ -87,7 +91,9 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
|
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/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=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue