mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Update Google Cloud API client import paths
Bump version of golang.org/x/oauth2 Vendor google.golang.org/cloud/ Vendor google.golang.org/api/ Vendor cloud.google.com/go/compute/ Replace google.golang.org/cloud with cloud.google.com/go/ Fixes #30069
This commit is contained in:
parent
e2cb4755c4
commit
64efc3a744
235
Godeps/Godeps.json
generated
235
Godeps/Godeps.json
generated
@ -19,13 +19,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "cloud.google.com/go/compute/metadata",
|
"ImportPath": "cloud.google.com/go/compute/metadata",
|
||||||
"Comment": "v0.1.0-119-g8e3c0b2",
|
"Comment": "v0.1.0-115-g3b1ae45",
|
||||||
"Rev": "8e3c0b22f89d3d365c5e678011ca2268d8b36c63"
|
"Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "cloud.google.com/go/internal",
|
"ImportPath": "cloud.google.com/go/internal",
|
||||||
"Comment": "v0.1.0-119-g8e3c0b2",
|
"Comment": "v0.1.0-115-g3b1ae45",
|
||||||
"Rev": "8e3c0b22f89d3d365c5e678011ca2268d8b36c63"
|
"Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/compute",
|
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/compute",
|
||||||
@ -333,7 +333,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/codegangsta/negroni",
|
"ImportPath": "github.com/codegangsta/negroni",
|
||||||
"Comment": "v0.1-62-g8d75e11",
|
"Comment": "v0.1.0-62-g8d75e11",
|
||||||
"Rev": "8d75e11374a1928608c906fe745b538483e7aeb2"
|
"Rev": "8d75e11374a1928608c906fe745b538483e7aeb2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1104,208 +1104,208 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/api",
|
"ImportPath": "github.com/google/cadvisor/api",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/cache/memory",
|
"ImportPath": "github.com/google/cadvisor/cache/memory",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/client/v2",
|
"ImportPath": "github.com/google/cadvisor/client/v2",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/collector",
|
"ImportPath": "github.com/google/cadvisor/collector",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container",
|
"ImportPath": "github.com/google/cadvisor/container",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container/common",
|
"ImportPath": "github.com/google/cadvisor/container/common",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container/docker",
|
"ImportPath": "github.com/google/cadvisor/container/docker",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container/libcontainer",
|
"ImportPath": "github.com/google/cadvisor/container/libcontainer",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container/raw",
|
"ImportPath": "github.com/google/cadvisor/container/raw",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container/rkt",
|
"ImportPath": "github.com/google/cadvisor/container/rkt",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/container/systemd",
|
"ImportPath": "github.com/google/cadvisor/container/systemd",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/devicemapper",
|
"ImportPath": "github.com/google/cadvisor/devicemapper",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/events",
|
"ImportPath": "github.com/google/cadvisor/events",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/fs",
|
"ImportPath": "github.com/google/cadvisor/fs",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/healthz",
|
"ImportPath": "github.com/google/cadvisor/healthz",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/http",
|
"ImportPath": "github.com/google/cadvisor/http",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/http/mux",
|
"ImportPath": "github.com/google/cadvisor/http/mux",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/info/v1",
|
"ImportPath": "github.com/google/cadvisor/info/v1",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/info/v1/test",
|
"ImportPath": "github.com/google/cadvisor/info/v1/test",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/info/v2",
|
"ImportPath": "github.com/google/cadvisor/info/v2",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/machine",
|
"ImportPath": "github.com/google/cadvisor/machine",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/manager",
|
"ImportPath": "github.com/google/cadvisor/manager",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/manager/watcher",
|
"ImportPath": "github.com/google/cadvisor/manager/watcher",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/manager/watcher/raw",
|
"ImportPath": "github.com/google/cadvisor/manager/watcher/raw",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/manager/watcher/rkt",
|
"ImportPath": "github.com/google/cadvisor/manager/watcher/rkt",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/metrics",
|
"ImportPath": "github.com/google/cadvisor/metrics",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/pages",
|
"ImportPath": "github.com/google/cadvisor/pages",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/pages/static",
|
"ImportPath": "github.com/google/cadvisor/pages/static",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/storage",
|
"ImportPath": "github.com/google/cadvisor/storage",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/summary",
|
"ImportPath": "github.com/google/cadvisor/summary",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils",
|
"ImportPath": "github.com/google/cadvisor/utils",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/cloudinfo",
|
"ImportPath": "github.com/google/cadvisor/utils/cloudinfo",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/cpuload",
|
"ImportPath": "github.com/google/cadvisor/utils/cpuload",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/cpuload/netlink",
|
"ImportPath": "github.com/google/cadvisor/utils/cpuload/netlink",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/docker",
|
"ImportPath": "github.com/google/cadvisor/utils/docker",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/oomparser",
|
"ImportPath": "github.com/google/cadvisor/utils/oomparser",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/sysfs",
|
"ImportPath": "github.com/google/cadvisor/utils/sysfs",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/sysinfo",
|
"ImportPath": "github.com/google/cadvisor/utils/sysinfo",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/utils/tail",
|
"ImportPath": "github.com/google/cadvisor/utils/tail",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/validate",
|
"ImportPath": "github.com/google/cadvisor/validate",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/cadvisor/version",
|
"ImportPath": "github.com/google/cadvisor/version",
|
||||||
"Comment": "v0.24.0-alpha1-4-ge380a57",
|
"Comment": "v0.24.0-alpha1-14-gd7a44cb",
|
||||||
"Rev": "e380a578c49d93629e6706019cde9dafbc585585"
|
"Rev": "d7a44cb1a2c66e1688ccdc5d09e56069eecb659a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/certificate-transparency/go",
|
"ImportPath": "github.com/google/certificate-transparency/go",
|
||||||
@ -2282,23 +2282,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "golang.org/x/oauth2",
|
"ImportPath": "golang.org/x/oauth2",
|
||||||
"Rev": "b5adcc2dcdf009d0391547edc6ecbaff889f5bb9"
|
"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "golang.org/x/oauth2/google",
|
"ImportPath": "golang.org/x/oauth2/google",
|
||||||
"Rev": "b5adcc2dcdf009d0391547edc6ecbaff889f5bb9"
|
"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "golang.org/x/oauth2/internal",
|
"ImportPath": "golang.org/x/oauth2/internal",
|
||||||
"Rev": "b5adcc2dcdf009d0391547edc6ecbaff889f5bb9"
|
"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "golang.org/x/oauth2/jws",
|
"ImportPath": "golang.org/x/oauth2/jws",
|
||||||
"Rev": "b5adcc2dcdf009d0391547edc6ecbaff889f5bb9"
|
"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "golang.org/x/oauth2/jwt",
|
"ImportPath": "golang.org/x/oauth2/jwt",
|
||||||
"Rev": "b5adcc2dcdf009d0391547edc6ecbaff889f5bb9"
|
"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "golang.org/x/sys/unix",
|
"ImportPath": "golang.org/x/sys/unix",
|
||||||
@ -2346,39 +2346,63 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/cloudmonitoring/v2beta2",
|
"ImportPath": "google.golang.org/api/cloudmonitoring/v2beta2",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/compute/v1",
|
"ImportPath": "google.golang.org/api/compute/v1",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/container/v1",
|
"ImportPath": "google.golang.org/api/container/v1",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/dns/v1",
|
"ImportPath": "google.golang.org/api/dns/v1",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/gensupport",
|
"ImportPath": "google.golang.org/api/gensupport",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/googleapi",
|
"ImportPath": "google.golang.org/api/googleapi",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/api/googleapi/internal/uritemplates",
|
"ImportPath": "google.golang.org/api/googleapi/internal/uritemplates",
|
||||||
"Rev": "4300f6b0c8a7f09e521dd0af2cee27e28846e037"
|
"Rev": "a69f0f19d246419bb931b0ac8f4f8d3f3e6d4feb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/cloud/compute/metadata",
|
"ImportPath": "google.golang.org/appengine",
|
||||||
"Rev": "eb47ba841d53d93506cfbfbc03927daf9cc48f88"
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/cloud/internal",
|
"ImportPath": "google.golang.org/appengine/internal",
|
||||||
"Rev": "eb47ba841d53d93506cfbfbc03927daf9cc48f88"
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "google.golang.org/appengine/internal/app_identity",
|
||||||
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "google.golang.org/appengine/internal/base",
|
||||||
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "google.golang.org/appengine/internal/datastore",
|
||||||
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "google.golang.org/appengine/internal/log",
|
||||||
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "google.golang.org/appengine/internal/modules",
|
||||||
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "google.golang.org/appengine/internal/remote_api",
|
||||||
|
"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "google.golang.org/grpc",
|
"ImportPath": "google.golang.org/grpc",
|
||||||
@ -2427,22 +2451,27 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "gopkg.in/gcfg.v1",
|
"ImportPath": "gopkg.in/gcfg.v1",
|
||||||
|
"Comment": "v1.0.0",
|
||||||
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "gopkg.in/gcfg.v1/scanner",
|
"ImportPath": "gopkg.in/gcfg.v1/scanner",
|
||||||
|
"Comment": "v1.0.0",
|
||||||
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "gopkg.in/gcfg.v1/token",
|
"ImportPath": "gopkg.in/gcfg.v1/token",
|
||||||
|
"Comment": "v1.0.0",
|
||||||
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "gopkg.in/gcfg.v1/types",
|
"ImportPath": "gopkg.in/gcfg.v1/types",
|
||||||
|
"Comment": "v1.0.0",
|
||||||
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "gopkg.in/inf.v0",
|
"ImportPath": "gopkg.in/inf.v0",
|
||||||
|
"Comment": "v0.9.0",
|
||||||
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
|
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
1272
Godeps/LICENSES
generated
1272
Godeps/LICENSES
generated
File diff suppressed because it is too large
Load Diff
@ -20,12 +20,12 @@ package clouddns
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
|
"cloud.google.com/go/compute/metadata"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/google"
|
"golang.org/x/oauth2/google"
|
||||||
compute "google.golang.org/api/compute/v1"
|
compute "google.golang.org/api/compute/v1"
|
||||||
dns "google.golang.org/api/dns/v1"
|
dns "google.golang.org/api/dns/v1"
|
||||||
"google.golang.org/cloud/compute/metadata"
|
|
||||||
gcfg "gopkg.in/gcfg.v1"
|
gcfg "gopkg.in/gcfg.v1"
|
||||||
|
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||||
|
@ -41,13 +41,13 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
|
||||||
|
"cloud.google.com/go/compute/metadata"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/google"
|
"golang.org/x/oauth2/google"
|
||||||
compute "google.golang.org/api/compute/v1"
|
compute "google.golang.org/api/compute/v1"
|
||||||
container "google.golang.org/api/container/v1"
|
container "google.golang.org/api/container/v1"
|
||||||
"google.golang.org/api/googleapi"
|
"google.golang.org/api/googleapi"
|
||||||
"google.golang.org/cloud/compute/metadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -23,10 +23,10 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
|
||||||
|
gce "cloud.google.com/go/compute/metadata"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/google"
|
"golang.org/x/oauth2/google"
|
||||||
gcm "google.golang.org/api/cloudmonitoring/v2beta2"
|
gcm "google.golang.org/api/cloudmonitoring/v2beta2"
|
||||||
gce "google.golang.org/cloud/compute/metadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
20
vendor/github.com/google/cadvisor/metrics/prometheus.go
generated
vendored
20
vendor/github.com/google/cadvisor/metrics/prometheus.go
generated
vendored
@ -228,6 +228,26 @@ func NewPrometheusCollector(i infoProvider, f ContainerLabelsFunc) *PrometheusCo
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
}, {
|
||||||
|
name: "container_fs_inodes_free",
|
||||||
|
help: "Number of available Inodes",
|
||||||
|
valueType: prometheus.GaugeValue,
|
||||||
|
extraLabels: []string{"device"},
|
||||||
|
getValues: func(s *info.ContainerStats) metricValues {
|
||||||
|
return fsValues(s.Filesystem, func(fs *info.FsStats) float64 {
|
||||||
|
return float64(fs.InodesFree)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
name: "container_fs_inodes_total",
|
||||||
|
help: "Number of Inodes",
|
||||||
|
valueType: prometheus.GaugeValue,
|
||||||
|
extraLabels: []string{"device"},
|
||||||
|
getValues: func(s *info.ContainerStats) metricValues {
|
||||||
|
return fsValues(s.Filesystem, func(fs *info.FsStats) float64 {
|
||||||
|
return float64(fs.Inodes)
|
||||||
|
})
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
name: "container_fs_limit_bytes",
|
name: "container_fs_limit_bytes",
|
||||||
help: "Number of bytes that can be consumed by the container on this filesystem.",
|
help: "Number of bytes that can be consumed by the container on this filesystem.",
|
||||||
|
3
vendor/golang.org/x/oauth2/.travis.yml
generated
vendored
3
vendor/golang.org/x/oauth2/.travis.yml
generated
vendored
@ -1,8 +1,7 @@
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.3
|
- tip
|
||||||
- 1.4
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- export GOPATH="$HOME/gopath"
|
- export GOPATH="$HOME/gopath"
|
||||||
|
1
vendor/golang.org/x/oauth2/README.md
generated
vendored
1
vendor/golang.org/x/oauth2/README.md
generated
vendored
@ -1,6 +1,7 @@
|
|||||||
# OAuth2 for Go
|
# OAuth2 for Go
|
||||||
|
|
||||||
[](https://travis-ci.org/golang/oauth2)
|
[](https://travis-ci.org/golang/oauth2)
|
||||||
|
[](https://godoc.org/golang.org/x/oauth2)
|
||||||
|
|
||||||
oauth2 package contains a client implementation for OAuth 2.0 spec.
|
oauth2 package contains a client implementation for OAuth 2.0 spec.
|
||||||
|
|
||||||
|
4
vendor/golang.org/x/oauth2/client_appengine.go
generated
vendored
4
vendor/golang.org/x/oauth2/client_appengine.go
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
// +build appengine appenginevm
|
// +build appengine
|
||||||
|
|
||||||
// App Engine hooks.
|
// App Engine hooks.
|
||||||
|
|
||||||
|
5
vendor/golang.org/x/oauth2/google/appengine.go
generated
vendored
5
vendor/golang.org/x/oauth2/google/appengine.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -14,6 +14,9 @@ import (
|
|||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Set at init time by appenginevm_hook.go. If true, we are on App Engine Managed VMs.
|
||||||
|
var appengineVM bool
|
||||||
|
|
||||||
// Set at init time by appengine_hook.go. If nil, we're not on App Engine.
|
// Set at init time by appengine_hook.go. If nil, we're not on App Engine.
|
||||||
var appengineTokenFunc func(c context.Context, scopes ...string) (token string, expiry time.Time, err error)
|
var appengineTokenFunc func(c context.Context, scopes ...string) (token string, expiry time.Time, err error)
|
||||||
|
|
||||||
|
4
vendor/golang.org/x/oauth2/google/appengine_hook.go
generated
vendored
4
vendor/golang.org/x/oauth2/google/appengine_hook.go
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
// Copyright 2015 The oauth2 Authors. All rights reserved.
|
// Copyright 2015 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
// +build appengine appenginevm
|
// +build appengine
|
||||||
|
|
||||||
package google
|
package google
|
||||||
|
|
||||||
|
14
vendor/golang.org/x/oauth2/google/appenginevm_hook.go
generated
vendored
Normal file
14
vendor/golang.org/x/oauth2/google/appenginevm_hook.go
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright 2015 The oauth2 Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build appenginevm
|
||||||
|
|
||||||
|
package google
|
||||||
|
|
||||||
|
import "google.golang.org/appengine"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
appengineVM = true
|
||||||
|
appengineTokenFunc = appengine.AccessToken
|
||||||
|
}
|
9
vendor/golang.org/x/oauth2/google/default.go
generated
vendored
9
vendor/golang.org/x/oauth2/google/default.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2015 The oauth2 Authors. All rights reserved.
|
// Copyright 2015 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -14,10 +14,10 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
|
"cloud.google.com/go/compute/metadata"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/jwt"
|
"golang.org/x/oauth2/jwt"
|
||||||
"google.golang.org/cloud/compute/metadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultClient returns an HTTP Client that uses the
|
// DefaultClient returns an HTTP Client that uses the
|
||||||
@ -50,7 +50,8 @@ func DefaultClient(ctx context.Context, scope ...string) (*http.Client, error) {
|
|||||||
// On Windows, this is %APPDATA%/gcloud/application_default_credentials.json.
|
// On Windows, this is %APPDATA%/gcloud/application_default_credentials.json.
|
||||||
// On other systems, $HOME/.config/gcloud/application_default_credentials.json.
|
// On other systems, $HOME/.config/gcloud/application_default_credentials.json.
|
||||||
// 3. On Google App Engine it uses the appengine.AccessToken function.
|
// 3. On Google App Engine it uses the appengine.AccessToken function.
|
||||||
// 4. On Google Compute Engine, it fetches credentials from the metadata server.
|
// 4. On Google Compute Engine and Google App Engine Managed VMs, it fetches
|
||||||
|
// credentials from the metadata server.
|
||||||
// (In this final case any provided scopes are ignored.)
|
// (In this final case any provided scopes are ignored.)
|
||||||
//
|
//
|
||||||
// For more details, see:
|
// For more details, see:
|
||||||
@ -84,7 +85,7 @@ func DefaultTokenSource(ctx context.Context, scope ...string) (oauth2.TokenSourc
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Third, if we're on Google App Engine use those credentials.
|
// Third, if we're on Google App Engine use those credentials.
|
||||||
if appengineTokenFunc != nil {
|
if appengineTokenFunc != nil && !appengineVM {
|
||||||
return AppEngineTokenSource(ctx, scope...), nil
|
return AppEngineTokenSource(ctx, scope...), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
38
vendor/golang.org/x/oauth2/google/google.go
generated
vendored
38
vendor/golang.org/x/oauth2/google/google.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -21,9 +21,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"cloud.google.com/go/compute/metadata"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/jwt"
|
"golang.org/x/oauth2/jwt"
|
||||||
"google.golang.org/cloud/compute/metadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Endpoint is Google's OAuth 2.0 endpoint.
|
// Endpoint is Google's OAuth 2.0 endpoint.
|
||||||
@ -37,9 +37,10 @@ const JWTTokenURL = "https://accounts.google.com/o/oauth2/token"
|
|||||||
|
|
||||||
// ConfigFromJSON uses a Google Developers Console client_credentials.json
|
// ConfigFromJSON uses a Google Developers Console client_credentials.json
|
||||||
// file to construct a config.
|
// file to construct a config.
|
||||||
// client_credentials.json can be downloadable from https://console.developers.google.com,
|
// client_credentials.json can be downloaded from
|
||||||
// under "APIs & Auth" > "Credentials". Download the Web application credentials in the
|
// https://console.developers.google.com, under "Credentials". Download the Web
|
||||||
// JSON format and provide the contents of the file as jsonKey.
|
// application credentials in the JSON format and provide the contents of the
|
||||||
|
// file as jsonKey.
|
||||||
func ConfigFromJSON(jsonKey []byte, scope ...string) (*oauth2.Config, error) {
|
func ConfigFromJSON(jsonKey []byte, scope ...string) (*oauth2.Config, error) {
|
||||||
type cred struct {
|
type cred struct {
|
||||||
ClientID string `json:"client_id"`
|
ClientID string `json:"client_id"`
|
||||||
@ -81,22 +82,29 @@ func ConfigFromJSON(jsonKey []byte, scope ...string) (*oauth2.Config, error) {
|
|||||||
|
|
||||||
// JWTConfigFromJSON uses a Google Developers service account JSON key file to read
|
// JWTConfigFromJSON uses a Google Developers service account JSON key file to read
|
||||||
// the credentials that authorize and authenticate the requests.
|
// the credentials that authorize and authenticate the requests.
|
||||||
// Create a service account on "Credentials" page under "APIs & Auth" for your
|
// Create a service account on "Credentials" for your project at
|
||||||
// project at https://console.developers.google.com to download a JSON key file.
|
// https://console.developers.google.com to download a JSON key file.
|
||||||
func JWTConfigFromJSON(jsonKey []byte, scope ...string) (*jwt.Config, error) {
|
func JWTConfigFromJSON(jsonKey []byte, scope ...string) (*jwt.Config, error) {
|
||||||
var key struct {
|
var key struct {
|
||||||
Email string `json:"client_email"`
|
Email string `json:"client_email"`
|
||||||
PrivateKey string `json:"private_key"`
|
PrivateKey string `json:"private_key"`
|
||||||
|
PrivateKeyID string `json:"private_key_id"`
|
||||||
|
TokenURL string `json:"token_uri"`
|
||||||
}
|
}
|
||||||
if err := json.Unmarshal(jsonKey, &key); err != nil {
|
if err := json.Unmarshal(jsonKey, &key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &jwt.Config{
|
config := &jwt.Config{
|
||||||
Email: key.Email,
|
Email: key.Email,
|
||||||
PrivateKey: []byte(key.PrivateKey),
|
PrivateKey: []byte(key.PrivateKey),
|
||||||
Scopes: scope,
|
PrivateKeyID: key.PrivateKeyID,
|
||||||
TokenURL: JWTTokenURL,
|
Scopes: scope,
|
||||||
}, nil
|
TokenURL: key.TokenURL,
|
||||||
|
}
|
||||||
|
if config.TokenURL == "" {
|
||||||
|
config.TokenURL = JWTTokenURL
|
||||||
|
}
|
||||||
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ComputeTokenSource returns a token source that fetches access tokens
|
// ComputeTokenSource returns a token source that fetches access tokens
|
||||||
|
74
vendor/golang.org/x/oauth2/google/jwt.go
generated
vendored
Normal file
74
vendor/golang.org/x/oauth2/google/jwt.go
generated
vendored
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Copyright 2015 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 google
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rsa"
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/oauth2"
|
||||||
|
"golang.org/x/oauth2/internal"
|
||||||
|
"golang.org/x/oauth2/jws"
|
||||||
|
)
|
||||||
|
|
||||||
|
// JWTAccessTokenSourceFromJSON uses a Google Developers service account JSON
|
||||||
|
// key file to read the credentials that authorize and authenticate the
|
||||||
|
// requests, and returns a TokenSource that does not use any OAuth2 flow but
|
||||||
|
// instead creates a JWT and sends that as the access token.
|
||||||
|
// The audience is typically a URL that specifies the scope of the credentials.
|
||||||
|
//
|
||||||
|
// Note that this is not a standard OAuth flow, but rather an
|
||||||
|
// optimization supported by a few Google services.
|
||||||
|
// Unless you know otherwise, you should use JWTConfigFromJSON instead.
|
||||||
|
func JWTAccessTokenSourceFromJSON(jsonKey []byte, audience string) (oauth2.TokenSource, error) {
|
||||||
|
cfg, err := JWTConfigFromJSON(jsonKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("google: could not parse JSON key: %v", err)
|
||||||
|
}
|
||||||
|
pk, err := internal.ParseKey(cfg.PrivateKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("google: could not parse key: %v", err)
|
||||||
|
}
|
||||||
|
ts := &jwtAccessTokenSource{
|
||||||
|
email: cfg.Email,
|
||||||
|
audience: audience,
|
||||||
|
pk: pk,
|
||||||
|
pkID: cfg.PrivateKeyID,
|
||||||
|
}
|
||||||
|
tok, err := ts.Token()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return oauth2.ReuseTokenSource(tok, ts), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type jwtAccessTokenSource struct {
|
||||||
|
email, audience string
|
||||||
|
pk *rsa.PrivateKey
|
||||||
|
pkID string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ts *jwtAccessTokenSource) Token() (*oauth2.Token, error) {
|
||||||
|
iat := time.Now()
|
||||||
|
exp := iat.Add(time.Hour)
|
||||||
|
cs := &jws.ClaimSet{
|
||||||
|
Iss: ts.email,
|
||||||
|
Sub: ts.email,
|
||||||
|
Aud: ts.audience,
|
||||||
|
Iat: iat.Unix(),
|
||||||
|
Exp: exp.Unix(),
|
||||||
|
}
|
||||||
|
hdr := &jws.Header{
|
||||||
|
Algorithm: "RS256",
|
||||||
|
Typ: "JWT",
|
||||||
|
KeyID: string(ts.pkID),
|
||||||
|
}
|
||||||
|
msg, err := jws.Encode(hdr, cs, ts.pk)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("google: could not encode JWT: %v", err)
|
||||||
|
}
|
||||||
|
return &oauth2.Token{AccessToken: msg, TokenType: "Bearer", Expiry: exp}, nil
|
||||||
|
}
|
2
vendor/golang.org/x/oauth2/google/sdk.go
generated
vendored
2
vendor/golang.org/x/oauth2/google/sdk.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2015 The oauth2 Authors. All rights reserved.
|
// Copyright 2015 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
|
2
vendor/golang.org/x/oauth2/internal/oauth2.go
generated
vendored
2
vendor/golang.org/x/oauth2/internal/oauth2.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
|
50
vendor/golang.org/x/oauth2/internal/token.go
generated
vendored
50
vendor/golang.org/x/oauth2/internal/token.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -91,24 +91,36 @@ func (e *expirationTime) UnmarshalJSON(b []byte) error {
|
|||||||
|
|
||||||
var brokenAuthHeaderProviders = []string{
|
var brokenAuthHeaderProviders = []string{
|
||||||
"https://accounts.google.com/",
|
"https://accounts.google.com/",
|
||||||
"https://www.googleapis.com/",
|
|
||||||
"https://github.com/",
|
|
||||||
"https://api.instagram.com/",
|
|
||||||
"https://www.douban.com/",
|
|
||||||
"https://api.dropbox.com/",
|
"https://api.dropbox.com/",
|
||||||
"https://api.soundcloud.com/",
|
"https://api.dropboxapi.com/",
|
||||||
"https://www.linkedin.com/",
|
"https://api.instagram.com/",
|
||||||
"https://api.twitch.tv/",
|
"https://api.netatmo.net/",
|
||||||
"https://oauth.vk.com/",
|
|
||||||
"https://api.odnoklassniki.ru/",
|
"https://api.odnoklassniki.ru/",
|
||||||
"https://connect.stripe.com/",
|
|
||||||
"https://api.pushbullet.com/",
|
"https://api.pushbullet.com/",
|
||||||
|
"https://api.soundcloud.com/",
|
||||||
|
"https://api.twitch.tv/",
|
||||||
|
"https://app.box.com/",
|
||||||
|
"https://connect.stripe.com/",
|
||||||
|
"https://login.microsoftonline.com/",
|
||||||
|
"https://login.salesforce.com/",
|
||||||
"https://oauth.sandbox.trainingpeaks.com/",
|
"https://oauth.sandbox.trainingpeaks.com/",
|
||||||
"https://oauth.trainingpeaks.com/",
|
"https://oauth.trainingpeaks.com/",
|
||||||
"https://www.strava.com/oauth/",
|
"https://oauth.vk.com/",
|
||||||
"https://app.box.com/",
|
"https://openapi.baidu.com/",
|
||||||
|
"https://slack.com/",
|
||||||
"https://test-sandbox.auth.corp.google.com",
|
"https://test-sandbox.auth.corp.google.com",
|
||||||
|
"https://test.salesforce.com/",
|
||||||
"https://user.gini.net/",
|
"https://user.gini.net/",
|
||||||
|
"https://www.douban.com/",
|
||||||
|
"https://www.googleapis.com/",
|
||||||
|
"https://www.linkedin.com/",
|
||||||
|
"https://www.strava.com/oauth/",
|
||||||
|
"https://www.wunderlist.com/oauth/",
|
||||||
|
"https://api.patreon.com/",
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterBrokenAuthHeaderProvider(tokenURL string) {
|
||||||
|
brokenAuthHeaderProviders = append(brokenAuthHeaderProviders, tokenURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
// providerAuthHeaderWorks reports whether the OAuth2 server identified by the tokenURL
|
// providerAuthHeaderWorks reports whether the OAuth2 server identified by the tokenURL
|
||||||
@ -134,23 +146,23 @@ func providerAuthHeaderWorks(tokenURL string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func RetrieveToken(ctx context.Context, ClientID, ClientSecret, TokenURL string, v url.Values) (*Token, error) {
|
func RetrieveToken(ctx context.Context, clientID, clientSecret, tokenURL string, v url.Values) (*Token, error) {
|
||||||
hc, err := ContextClient(ctx)
|
hc, err := ContextClient(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
v.Set("client_id", ClientID)
|
v.Set("client_id", clientID)
|
||||||
bustedAuth := !providerAuthHeaderWorks(TokenURL)
|
bustedAuth := !providerAuthHeaderWorks(tokenURL)
|
||||||
if bustedAuth && ClientSecret != "" {
|
if bustedAuth && clientSecret != "" {
|
||||||
v.Set("client_secret", ClientSecret)
|
v.Set("client_secret", clientSecret)
|
||||||
}
|
}
|
||||||
req, err := http.NewRequest("POST", TokenURL, strings.NewReader(v.Encode()))
|
req, err := http.NewRequest("POST", tokenURL, strings.NewReader(v.Encode()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
if !bustedAuth {
|
if !bustedAuth {
|
||||||
req.SetBasicAuth(ClientID, ClientSecret)
|
req.SetBasicAuth(clientID, clientSecret)
|
||||||
}
|
}
|
||||||
r, err := hc.Do(req)
|
r, err := hc.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
10
vendor/golang.org/x/oauth2/internal/transport.go
generated
vendored
10
vendor/golang.org/x/oauth2/internal/transport.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -33,6 +33,11 @@ func RegisterContextClientFunc(fn ContextClientFunc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ContextClient(ctx context.Context) (*http.Client, error) {
|
func ContextClient(ctx context.Context) (*http.Client, error) {
|
||||||
|
if ctx != nil {
|
||||||
|
if hc, ok := ctx.Value(HTTPClient).(*http.Client); ok {
|
||||||
|
return hc, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
for _, fn := range contextClientFuncs {
|
for _, fn := range contextClientFuncs {
|
||||||
c, err := fn(ctx)
|
c, err := fn(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -42,9 +47,6 @@ func ContextClient(ctx context.Context) (*http.Client, error) {
|
|||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if hc, ok := ctx.Value(HTTPClient).(*http.Client); ok {
|
|
||||||
return hc, nil
|
|
||||||
}
|
|
||||||
return http.DefaultClient, nil
|
return http.DefaultClient, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
110
vendor/golang.org/x/oauth2/jws/jws.go
generated
vendored
110
vendor/golang.org/x/oauth2/jws/jws.go
generated
vendored
@ -1,9 +1,17 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
// Package jws provides encoding and decoding utilities for
|
// Package jws provides a partial implementation
|
||||||
// signed JWS messages.
|
// of JSON Web Signature encoding and decoding.
|
||||||
|
// It exists to support the golang.org/x/oauth2 package.
|
||||||
|
//
|
||||||
|
// See RFC 7515.
|
||||||
|
//
|
||||||
|
// Deprecated: this package is not intended for public use and might be
|
||||||
|
// removed in the future. It exists for internal use only.
|
||||||
|
// Please switch to another JWS package or copy this package into your own
|
||||||
|
// source tree.
|
||||||
package jws
|
package jws
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -27,8 +35,8 @@ type ClaimSet struct {
|
|||||||
Iss string `json:"iss"` // email address of the client_id of the application making the access token request
|
Iss string `json:"iss"` // email address of the client_id of the application making the access token request
|
||||||
Scope string `json:"scope,omitempty"` // space-delimited list of the permissions the application requests
|
Scope string `json:"scope,omitempty"` // space-delimited list of the permissions the application requests
|
||||||
Aud string `json:"aud"` // descriptor of the intended target of the assertion (Optional).
|
Aud string `json:"aud"` // descriptor of the intended target of the assertion (Optional).
|
||||||
Exp int64 `json:"exp"` // the expiration time of the assertion
|
Exp int64 `json:"exp"` // the expiration time of the assertion (seconds since Unix epoch)
|
||||||
Iat int64 `json:"iat"` // the time the assertion was issued.
|
Iat int64 `json:"iat"` // the time the assertion was issued (seconds since Unix epoch)
|
||||||
Typ string `json:"typ,omitempty"` // token type (Optional).
|
Typ string `json:"typ,omitempty"` // token type (Optional).
|
||||||
|
|
||||||
// Email for which the application is requesting delegated access (Optional).
|
// Email for which the application is requesting delegated access (Optional).
|
||||||
@ -41,23 +49,22 @@ type ClaimSet struct {
|
|||||||
// See http://tools.ietf.org/html/draft-jones-json-web-token-10#section-4.3
|
// See http://tools.ietf.org/html/draft-jones-json-web-token-10#section-4.3
|
||||||
// This array is marshalled using custom code (see (c *ClaimSet) encode()).
|
// This array is marshalled using custom code (see (c *ClaimSet) encode()).
|
||||||
PrivateClaims map[string]interface{} `json:"-"`
|
PrivateClaims map[string]interface{} `json:"-"`
|
||||||
|
|
||||||
exp time.Time
|
|
||||||
iat time.Time
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ClaimSet) encode() (string, error) {
|
func (c *ClaimSet) encode() (string, error) {
|
||||||
if c.exp.IsZero() || c.iat.IsZero() {
|
// Reverting time back for machines whose time is not perfectly in sync.
|
||||||
// Reverting time back for machines whose time is not perfectly in sync.
|
// If client machine's time is in the future according
|
||||||
// If client machine's time is in the future according
|
// to Google servers, an access token will not be issued.
|
||||||
// to Google servers, an access token will not be issued.
|
now := time.Now().Add(-10 * time.Second)
|
||||||
now := time.Now().Add(-10 * time.Second)
|
if c.Iat == 0 {
|
||||||
c.iat = now
|
c.Iat = now.Unix()
|
||||||
c.exp = now.Add(time.Hour)
|
}
|
||||||
|
if c.Exp == 0 {
|
||||||
|
c.Exp = now.Add(time.Hour).Unix()
|
||||||
|
}
|
||||||
|
if c.Exp < c.Iat {
|
||||||
|
return "", fmt.Errorf("jws: invalid Exp = %v; must be later than Iat = %v", c.Exp, c.Iat)
|
||||||
}
|
}
|
||||||
|
|
||||||
c.Exp = c.exp.Unix()
|
|
||||||
c.Iat = c.iat.Unix()
|
|
||||||
|
|
||||||
b, err := json.Marshal(c)
|
b, err := json.Marshal(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -65,7 +72,7 @@ func (c *ClaimSet) encode() (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(c.PrivateClaims) == 0 {
|
if len(c.PrivateClaims) == 0 {
|
||||||
return base64Encode(b), nil
|
return base64.RawURLEncoding.EncodeToString(b), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Marshal private claim set and then append it to b.
|
// Marshal private claim set and then append it to b.
|
||||||
@ -83,7 +90,7 @@ func (c *ClaimSet) encode() (string, error) {
|
|||||||
}
|
}
|
||||||
b[len(b)-1] = ',' // Replace closing curly brace with a comma.
|
b[len(b)-1] = ',' // Replace closing curly brace with a comma.
|
||||||
b = append(b, prv[1:]...) // Append private claims.
|
b = append(b, prv[1:]...) // Append private claims.
|
||||||
return base64Encode(b), nil
|
return base64.RawURLEncoding.EncodeToString(b), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Header represents the header for the signed JWS payloads.
|
// Header represents the header for the signed JWS payloads.
|
||||||
@ -93,6 +100,9 @@ type Header struct {
|
|||||||
|
|
||||||
// Represents the token type.
|
// Represents the token type.
|
||||||
Typ string `json:"typ"`
|
Typ string `json:"typ"`
|
||||||
|
|
||||||
|
// The optional hint of which key is being used.
|
||||||
|
KeyID string `json:"kid,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Header) encode() (string, error) {
|
func (h *Header) encode() (string, error) {
|
||||||
@ -100,7 +110,7 @@ func (h *Header) encode() (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return base64Encode(b), nil
|
return base64.RawURLEncoding.EncodeToString(b), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decode decodes a claim set from a JWS payload.
|
// Decode decodes a claim set from a JWS payload.
|
||||||
@ -111,7 +121,7 @@ func Decode(payload string) (*ClaimSet, error) {
|
|||||||
// TODO(jbd): Provide more context about the error.
|
// TODO(jbd): Provide more context about the error.
|
||||||
return nil, errors.New("jws: invalid token received")
|
return nil, errors.New("jws: invalid token received")
|
||||||
}
|
}
|
||||||
decoded, err := base64Decode(s[1])
|
decoded, err := base64.RawURLEncoding.DecodeString(s[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -120,8 +130,11 @@ func Decode(payload string) (*ClaimSet, error) {
|
|||||||
return c, err
|
return c, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Encode encodes a signed JWS with provided header and claim set.
|
// Signer returns a signature for the given data.
|
||||||
func Encode(header *Header, c *ClaimSet, signature *rsa.PrivateKey) (string, error) {
|
type Signer func(data []byte) (sig []byte, err error)
|
||||||
|
|
||||||
|
// EncodeWithSigner encodes a header and claim set with the provided signer.
|
||||||
|
func EncodeWithSigner(header *Header, c *ClaimSet, sg Signer) (string, error) {
|
||||||
head, err := header.encode()
|
head, err := header.encode()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -131,30 +144,39 @@ func Encode(header *Header, c *ClaimSet, signature *rsa.PrivateKey) (string, err
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
ss := fmt.Sprintf("%s.%s", head, cs)
|
ss := fmt.Sprintf("%s.%s", head, cs)
|
||||||
h := sha256.New()
|
sig, err := sg([]byte(ss))
|
||||||
h.Write([]byte(ss))
|
|
||||||
b, err := rsa.SignPKCS1v15(rand.Reader, signature, crypto.SHA256, h.Sum(nil))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
sig := base64Encode(b)
|
return fmt.Sprintf("%s.%s", ss, base64.RawURLEncoding.EncodeToString(sig)), nil
|
||||||
return fmt.Sprintf("%s.%s", ss, sig), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// base64Encode returns and Base64url encoded version of the input string with any
|
// Encode encodes a signed JWS with provided header and claim set.
|
||||||
// trailing "=" stripped.
|
// This invokes EncodeWithSigner using crypto/rsa.SignPKCS1v15 with the given RSA private key.
|
||||||
func base64Encode(b []byte) string {
|
func Encode(header *Header, c *ClaimSet, key *rsa.PrivateKey) (string, error) {
|
||||||
return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=")
|
sg := func(data []byte) (sig []byte, err error) {
|
||||||
}
|
h := sha256.New()
|
||||||
|
h.Write(data)
|
||||||
// base64Decode decodes the Base64url encoded string
|
return rsa.SignPKCS1v15(rand.Reader, key, crypto.SHA256, h.Sum(nil))
|
||||||
func base64Decode(s string) ([]byte, error) {
|
|
||||||
// add back missing padding
|
|
||||||
switch len(s) % 4 {
|
|
||||||
case 2:
|
|
||||||
s += "=="
|
|
||||||
case 3:
|
|
||||||
s += "="
|
|
||||||
}
|
}
|
||||||
return base64.URLEncoding.DecodeString(s)
|
return EncodeWithSigner(header, c, sg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify tests whether the provided JWT token's signature was produced by the private key
|
||||||
|
// associated with the supplied public key.
|
||||||
|
func Verify(token string, key *rsa.PublicKey) error {
|
||||||
|
parts := strings.Split(token, ".")
|
||||||
|
if len(parts) != 3 {
|
||||||
|
return errors.New("jws: invalid token received, token must have 3 parts")
|
||||||
|
}
|
||||||
|
|
||||||
|
signedContent := parts[0] + "." + parts[1]
|
||||||
|
signatureString, err := base64.RawURLEncoding.DecodeString(parts[2])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
h := sha256.New()
|
||||||
|
h.Write([]byte(signedContent))
|
||||||
|
return rsa.VerifyPKCS1v15(key, crypto.SHA256, h.Sum(nil), []byte(signatureString))
|
||||||
}
|
}
|
||||||
|
12
vendor/golang.org/x/oauth2/jwt/jwt.go
generated
vendored
12
vendor/golang.org/x/oauth2/jwt/jwt.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -46,6 +46,10 @@ type Config struct {
|
|||||||
//
|
//
|
||||||
PrivateKey []byte
|
PrivateKey []byte
|
||||||
|
|
||||||
|
// PrivateKeyID contains an optional hint indicating which key is being
|
||||||
|
// used.
|
||||||
|
PrivateKeyID string
|
||||||
|
|
||||||
// Subject is the optional user to impersonate.
|
// Subject is the optional user to impersonate.
|
||||||
Subject string
|
Subject string
|
||||||
|
|
||||||
@ -54,6 +58,9 @@ type Config struct {
|
|||||||
|
|
||||||
// TokenURL is the endpoint required to complete the 2-legged JWT flow.
|
// TokenURL is the endpoint required to complete the 2-legged JWT flow.
|
||||||
TokenURL string
|
TokenURL string
|
||||||
|
|
||||||
|
// Expires optionally specifies how long the token is valid for.
|
||||||
|
Expires time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenSource returns a JWT TokenSource using the configuration
|
// TokenSource returns a JWT TokenSource using the configuration
|
||||||
@ -95,6 +102,9 @@ func (js jwtSource) Token() (*oauth2.Token, error) {
|
|||||||
// to be compatible with legacy OAuth 2.0 providers.
|
// to be compatible with legacy OAuth 2.0 providers.
|
||||||
claimSet.Prn = subject
|
claimSet.Prn = subject
|
||||||
}
|
}
|
||||||
|
if t := js.conf.Expires; t > 0 {
|
||||||
|
claimSet.Exp = time.Now().Add(t).Unix()
|
||||||
|
}
|
||||||
payload, err := jws.Encode(defaultHeader, claimSet, pk)
|
payload, err := jws.Encode(defaultHeader, claimSet, pk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
20
vendor/golang.org/x/oauth2/oauth2.go
generated
vendored
20
vendor/golang.org/x/oauth2/oauth2.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -21,10 +21,26 @@ import (
|
|||||||
|
|
||||||
// NoContext is the default context you should supply if not using
|
// NoContext is the default context you should supply if not using
|
||||||
// your own context.Context (see https://golang.org/x/net/context).
|
// your own context.Context (see https://golang.org/x/net/context).
|
||||||
|
//
|
||||||
|
// Deprecated: Use context.Background() or context.TODO() instead.
|
||||||
var NoContext = context.TODO()
|
var NoContext = context.TODO()
|
||||||
|
|
||||||
|
// RegisterBrokenAuthHeaderProvider registers an OAuth2 server
|
||||||
|
// identified by the tokenURL prefix as an OAuth2 implementation
|
||||||
|
// which doesn't support the HTTP Basic authentication
|
||||||
|
// scheme to authenticate with the authorization server.
|
||||||
|
// Once a server is registered, credentials (client_id and client_secret)
|
||||||
|
// will be passed as query parameters rather than being present
|
||||||
|
// in the Authorization header.
|
||||||
|
// See https://code.google.com/p/goauth2/issues/detail?id=31 for background.
|
||||||
|
func RegisterBrokenAuthHeaderProvider(tokenURL string) {
|
||||||
|
internal.RegisterBrokenAuthHeaderProvider(tokenURL)
|
||||||
|
}
|
||||||
|
|
||||||
// Config describes a typical 3-legged OAuth2 flow, with both the
|
// Config describes a typical 3-legged OAuth2 flow, with both the
|
||||||
// client application information and the server's endpoint URLs.
|
// client application information and the server's endpoint URLs.
|
||||||
|
// For the client credentials 2-legged OAuth2 flow, see the clientcredentials
|
||||||
|
// package (https://golang.org/x/oauth2/clientcredentials).
|
||||||
type Config struct {
|
type Config struct {
|
||||||
// ClientID is the application's ID.
|
// ClientID is the application's ID.
|
||||||
ClientID string
|
ClientID string
|
||||||
@ -283,7 +299,7 @@ func NewClient(ctx context.Context, src TokenSource) *http.Client {
|
|||||||
if src == nil {
|
if src == nil {
|
||||||
c, err := internal.ContextClient(ctx)
|
c, err := internal.ContextClient(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &http.Client{Transport: internal.ErrorTransport{err}}
|
return &http.Client{Transport: internal.ErrorTransport{Err: err}}
|
||||||
}
|
}
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
27
vendor/golang.org/x/oauth2/token.go
generated
vendored
27
vendor/golang.org/x/oauth2/token.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
@ -7,6 +7,7 @@ package oauth2
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -92,14 +93,28 @@ func (t *Token) WithExtra(extra interface{}) *Token {
|
|||||||
// Extra fields are key-value pairs returned by the server as a
|
// Extra fields are key-value pairs returned by the server as a
|
||||||
// part of the token retrieval response.
|
// part of the token retrieval response.
|
||||||
func (t *Token) Extra(key string) interface{} {
|
func (t *Token) Extra(key string) interface{} {
|
||||||
if vals, ok := t.raw.(url.Values); ok {
|
|
||||||
// TODO(jbd): Cast numeric values to int64 or float64.
|
|
||||||
return vals.Get(key)
|
|
||||||
}
|
|
||||||
if raw, ok := t.raw.(map[string]interface{}); ok {
|
if raw, ok := t.raw.(map[string]interface{}); ok {
|
||||||
return raw[key]
|
return raw[key]
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
|
vals, ok := t.raw.(url.Values)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
v := vals.Get(key)
|
||||||
|
switch s := strings.TrimSpace(v); strings.Count(s, ".") {
|
||||||
|
case 0: // Contains no "."; try to parse as int
|
||||||
|
if i, err := strconv.ParseInt(s, 10, 64); err == nil {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
case 1: // Contains a single "."; try to parse as float
|
||||||
|
if f, err := strconv.ParseFloat(s, 64); err == nil {
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
// expired reports whether the token is expired.
|
// expired reports whether the token is expired.
|
||||||
|
2
vendor/golang.org/x/oauth2/transport.go
generated
vendored
2
vendor/golang.org/x/oauth2/transport.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2014 The oauth2 Authors. All rights reserved.
|
// Copyright 2014 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
|
||||||
|
96
vendor/google.golang.org/api/cloudmonitoring/v2beta2/cloudmonitoring-gen.go
generated
vendored
96
vendor/google.golang.org/api/cloudmonitoring/v2beta2/cloudmonitoring-gen.go
generated
vendored
@ -771,25 +771,23 @@ func (c *MetricDescriptorsCreateCall) Context(ctx context.Context) *MetricDescri
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *MetricDescriptorsCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *MetricDescriptorsCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.metricdescriptor)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.metricdescriptor)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/metricDescriptors")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/metricDescriptors")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("POST", urls, body)
|
req, _ := http.NewRequest("POST", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "cloudmonitoring.metricDescriptors.create" call.
|
// Do executes the "cloudmonitoring.metricDescriptors.create" call.
|
||||||
@ -824,7 +822,8 @@ func (c *MetricDescriptorsCreateCall) Do(opts ...googleapi.CallOption) (*MetricD
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -893,20 +892,19 @@ func (c *MetricDescriptorsDeleteCall) Context(ctx context.Context) *MetricDescri
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *MetricDescriptorsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *MetricDescriptorsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/metricDescriptors/{metric}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/metricDescriptors/{metric}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("DELETE", urls, body)
|
req, _ := http.NewRequest("DELETE", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"metric": c.metric,
|
"metric": c.metric,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "cloudmonitoring.metricDescriptors.delete" call.
|
// Do executes the "cloudmonitoring.metricDescriptors.delete" call.
|
||||||
@ -941,7 +939,8 @@ func (c *MetricDescriptorsDeleteCall) Do(opts ...googleapi.CallOption) (*DeleteM
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1057,22 +1056,21 @@ func (c *MetricDescriptorsListCall) Context(ctx context.Context) *MetricDescript
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *MetricDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *MetricDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/metricDescriptors")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/metricDescriptors")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "cloudmonitoring.metricDescriptors.list" call.
|
// Do executes the "cloudmonitoring.metricDescriptors.list" call.
|
||||||
@ -1107,7 +1105,8 @@ func (c *MetricDescriptorsListCall) Do(opts ...googleapi.CallOption) (*ListMetri
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1321,23 +1320,22 @@ func (c *TimeseriesListCall) Context(ctx context.Context) *TimeseriesListCall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *TimeseriesListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *TimeseriesListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/timeseries/{metric}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/timeseries/{metric}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"metric": c.metric,
|
"metric": c.metric,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "cloudmonitoring.timeseries.list" call.
|
// Do executes the "cloudmonitoring.timeseries.list" call.
|
||||||
@ -1372,7 +1370,8 @@ func (c *TimeseriesListCall) Do(opts ...googleapi.CallOption) (*ListTimeseriesRe
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1538,25 +1537,23 @@ func (c *TimeseriesWriteCall) Context(ctx context.Context) *TimeseriesWriteCall
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *TimeseriesWriteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *TimeseriesWriteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.writetimeseriesrequest)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.writetimeseriesrequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/timeseries:write")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/timeseries:write")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("POST", urls, body)
|
req, _ := http.NewRequest("POST", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "cloudmonitoring.timeseries.write" call.
|
// Do executes the "cloudmonitoring.timeseries.write" call.
|
||||||
@ -1591,7 +1588,8 @@ func (c *TimeseriesWriteCall) Do(opts ...googleapi.CallOption) (*WriteTimeseries
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1766,23 +1764,22 @@ func (c *TimeseriesDescriptorsListCall) Context(ctx context.Context) *Timeseries
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *TimeseriesDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *TimeseriesDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/timeseriesDescriptors/{metric}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/timeseriesDescriptors/{metric}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"metric": c.metric,
|
"metric": c.metric,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "cloudmonitoring.timeseriesDescriptors.list" call.
|
// Do executes the "cloudmonitoring.timeseriesDescriptors.list" call.
|
||||||
@ -1818,7 +1815,8 @@ func (c *TimeseriesDescriptorsListCall) Do(opts ...googleapi.CallOption) (*ListT
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
|
1630
vendor/google.golang.org/api/compute/v1/compute-api.json
generated
vendored
1630
vendor/google.golang.org/api/compute/v1/compute-api.json
generated
vendored
File diff suppressed because it is too large
Load Diff
7107
vendor/google.golang.org/api/compute/v1/compute-gen.go
generated
vendored
7107
vendor/google.golang.org/api/compute/v1/compute-gen.go
generated
vendored
File diff suppressed because it is too large
Load Diff
195
vendor/google.golang.org/api/container/v1/container-gen.go
generated
vendored
195
vendor/google.golang.org/api/container/v1/container-gen.go
generated
vendored
@ -878,23 +878,22 @@ func (c *ProjectsZonesGetServerconfigCall) Context(ctx context.Context) *Project
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesGetServerconfigCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesGetServerconfigCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/serverconfig")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/serverconfig")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.getServerconfig" call.
|
// Do executes the "container.projects.zones.getServerconfig" call.
|
||||||
@ -929,7 +928,8 @@ func (c *ProjectsZonesGetServerconfigCall) Do(opts ...googleapi.CallOption) (*Se
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1011,26 +1011,24 @@ func (c *ProjectsZonesClustersCreateCall) Context(ctx context.Context) *Projects
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.createclusterrequest)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.createclusterrequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("POST", urls, body)
|
req, _ := http.NewRequest("POST", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.create" call.
|
// Do executes the "container.projects.zones.clusters.create" call.
|
||||||
@ -1065,7 +1063,8 @@ func (c *ProjectsZonesClustersCreateCall) Do(opts ...googleapi.CallOption) (*Ope
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1147,21 +1146,20 @@ func (c *ProjectsZonesClustersDeleteCall) Context(ctx context.Context) *Projects
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("DELETE", urls, body)
|
req, _ := http.NewRequest("DELETE", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.delete" call.
|
// Do executes the "container.projects.zones.clusters.delete" call.
|
||||||
@ -1196,7 +1194,8 @@ func (c *ProjectsZonesClustersDeleteCall) Do(opts ...googleapi.CallOption) (*Ope
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1288,24 +1287,23 @@ func (c *ProjectsZonesClustersGetCall) Context(ctx context.Context) *ProjectsZon
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.get" call.
|
// Do executes the "container.projects.zones.clusters.get" call.
|
||||||
@ -1340,7 +1338,8 @@ func (c *ProjectsZonesClustersGetCall) Do(opts ...googleapi.CallOption) (*Cluste
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1431,23 +1430,22 @@ func (c *ProjectsZonesClustersListCall) Context(ctx context.Context) *ProjectsZo
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.list" call.
|
// Do executes the "container.projects.zones.clusters.list" call.
|
||||||
@ -1482,7 +1480,8 @@ func (c *ProjectsZonesClustersListCall) Do(opts ...googleapi.CallOption) (*ListC
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1558,27 +1557,25 @@ func (c *ProjectsZonesClustersUpdateCall) Context(ctx context.Context) *Projects
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.updateclusterrequest)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.updateclusterrequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("PUT", urls, body)
|
req, _ := http.NewRequest("PUT", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.update" call.
|
// Do executes the "container.projects.zones.clusters.update" call.
|
||||||
@ -1613,7 +1610,8 @@ func (c *ProjectsZonesClustersUpdateCall) Do(opts ...googleapi.CallOption) (*Ope
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1699,27 +1697,25 @@ func (c *ProjectsZonesClustersNodePoolsCreateCall) Context(ctx context.Context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.createnodepoolrequest)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.createnodepoolrequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("POST", urls, body)
|
req, _ := http.NewRequest("POST", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.nodePools.create" call.
|
// Do executes the "container.projects.zones.clusters.nodePools.create" call.
|
||||||
@ -1754,7 +1750,8 @@ func (c *ProjectsZonesClustersNodePoolsCreateCall) Do(opts ...googleapi.CallOpti
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1840,22 +1837,21 @@ func (c *ProjectsZonesClustersNodePoolsDeleteCall) Context(ctx context.Context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("DELETE", urls, body)
|
req, _ := http.NewRequest("DELETE", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
"nodePoolId": c.nodePoolId,
|
"nodePoolId": c.nodePoolId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.nodePools.delete" call.
|
// Do executes the "container.projects.zones.clusters.nodePools.delete" call.
|
||||||
@ -1890,7 +1886,8 @@ func (c *ProjectsZonesClustersNodePoolsDeleteCall) Do(opts ...googleapi.CallOpti
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1991,25 +1988,24 @@ func (c *ProjectsZonesClustersNodePoolsGetCall) Context(ctx context.Context) *Pr
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
"nodePoolId": c.nodePoolId,
|
"nodePoolId": c.nodePoolId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.nodePools.get" call.
|
// Do executes the "container.projects.zones.clusters.nodePools.get" call.
|
||||||
@ -2044,7 +2040,8 @@ func (c *ProjectsZonesClustersNodePoolsGetCall) Do(opts ...googleapi.CallOption)
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -2143,24 +2140,23 @@ func (c *ProjectsZonesClustersNodePoolsListCall) Context(ctx context.Context) *P
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"clusterId": c.clusterId,
|
"clusterId": c.clusterId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.clusters.nodePools.list" call.
|
// Do executes the "container.projects.zones.clusters.nodePools.list" call.
|
||||||
@ -2195,7 +2191,8 @@ func (c *ProjectsZonesClustersNodePoolsListCall) Do(opts ...googleapi.CallOption
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -2287,24 +2284,23 @@ func (c *ProjectsZonesOperationsGetCall) Context(ctx context.Context) *ProjectsZ
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/operations/{operationId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/operations/{operationId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
"operationId": c.operationId,
|
"operationId": c.operationId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.operations.get" call.
|
// Do executes the "container.projects.zones.operations.get" call.
|
||||||
@ -2339,7 +2335,8 @@ func (c *ProjectsZonesOperationsGetCall) Do(opts ...googleapi.CallOption) (*Oper
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -2430,23 +2427,22 @@ func (c *ProjectsZonesOperationsListCall) Context(ctx context.Context) *Projects
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsZonesOperationsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsZonesOperationsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/operations")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/zones/{zone}/operations")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"projectId": c.projectId,
|
"projectId": c.projectId,
|
||||||
"zone": c.zone,
|
"zone": c.zone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "container.projects.zones.operations.list" call.
|
// Do executes the "container.projects.zones.operations.list" call.
|
||||||
@ -2481,7 +2477,8 @@ func (c *ProjectsZonesOperationsListCall) Do(opts ...googleapi.CallOption) (*Lis
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
|
147
vendor/google.golang.org/api/dns/v1/dns-gen.go
generated
vendored
147
vendor/google.golang.org/api/dns/v1/dns-gen.go
generated
vendored
@ -509,26 +509,24 @@ func (c *ChangesCreateCall) Context(ctx context.Context) *ChangesCreateCall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.change)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.change)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("POST", urls, body)
|
req, _ := http.NewRequest("POST", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"managedZone": c.managedZone,
|
"managedZone": c.managedZone,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.changes.create" call.
|
// Do executes the "dns.changes.create" call.
|
||||||
@ -563,7 +561,8 @@ func (c *ChangesCreateCall) Do(opts ...googleapi.CallOption) (*Change, error) {
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -652,24 +651,23 @@ func (c *ChangesGetCall) Context(ctx context.Context) *ChangesGetCall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes/{changeId}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes/{changeId}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"managedZone": c.managedZone,
|
"managedZone": c.managedZone,
|
||||||
"changeId": c.changeId,
|
"changeId": c.changeId,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.changes.get" call.
|
// Do executes the "dns.changes.get" call.
|
||||||
@ -704,7 +702,8 @@ func (c *ChangesGetCall) Do(opts ...googleapi.CallOption) (*Change, error) {
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -830,23 +829,22 @@ func (c *ChangesListCall) Context(ctx context.Context) *ChangesListCall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"managedZone": c.managedZone,
|
"managedZone": c.managedZone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.changes.list" call.
|
// Do executes the "dns.changes.list" call.
|
||||||
@ -881,7 +879,8 @@ func (c *ChangesListCall) Do(opts ...googleapi.CallOption) (*ChangesListResponse
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1005,25 +1004,23 @@ func (c *ManagedZonesCreateCall) Context(ctx context.Context) *ManagedZonesCreat
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
body, err := googleapi.WithoutDataWrapper.JSONReader(c.managedzone)
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.managedzone)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctype := "application/json"
|
reqHeaders.Set("Content-Type", "application/json")
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("POST", urls, body)
|
req, _ := http.NewRequest("POST", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
})
|
})
|
||||||
req.Header.Set("Content-Type", ctype)
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.managedZones.create" call.
|
// Do executes the "dns.managedZones.create" call.
|
||||||
@ -1058,7 +1055,8 @@ func (c *ManagedZonesCreateCall) Do(opts ...googleapi.CallOption) (*ManagedZone,
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1127,20 +1125,19 @@ func (c *ManagedZonesDeleteCall) Context(ctx context.Context) *ManagedZonesDelet
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("DELETE", urls, body)
|
req, _ := http.NewRequest("DELETE", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"managedZone": c.managedZone,
|
"managedZone": c.managedZone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.managedZones.delete" call.
|
// Do executes the "dns.managedZones.delete" call.
|
||||||
@ -1232,23 +1229,22 @@ func (c *ManagedZonesGetCall) Context(ctx context.Context) *ManagedZonesGetCall
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"managedZone": c.managedZone,
|
"managedZone": c.managedZone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.managedZones.get" call.
|
// Do executes the "dns.managedZones.get" call.
|
||||||
@ -1283,7 +1279,8 @@ func (c *ManagedZonesGetCall) Do(opts ...googleapi.CallOption) (*ManagedZone, er
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1391,22 +1388,21 @@ func (c *ManagedZonesListCall) Context(ctx context.Context) *ManagedZonesListCal
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.managedZones.list" call.
|
// Do executes the "dns.managedZones.list" call.
|
||||||
@ -1441,7 +1437,8 @@ func (c *ManagedZonesListCall) Do(opts ...googleapi.CallOption) (*ManagedZonesLi
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1555,22 +1552,21 @@ func (c *ProjectsGetCall) Context(ctx context.Context) *ProjectsGetCall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.projects.get" call.
|
// Do executes the "dns.projects.get" call.
|
||||||
@ -1605,7 +1601,8 @@ func (c *ProjectsGetCall) Do(opts ...googleapi.CallOption) (*Project, error) {
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
@ -1716,23 +1713,22 @@ func (c *ResourceRecordSetsListCall) Context(ctx context.Context) *ResourceRecor
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := make(http.Header)
|
||||||
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
var body io.Reader = nil
|
var body io.Reader = nil
|
||||||
c.urlParams_.Set("alt", alt)
|
c.urlParams_.Set("alt", alt)
|
||||||
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/rrsets")
|
urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/rrsets")
|
||||||
urls += "?" + c.urlParams_.Encode()
|
urls += "?" + c.urlParams_.Encode()
|
||||||
req, _ := http.NewRequest("GET", urls, body)
|
req, _ := http.NewRequest("GET", urls, body)
|
||||||
|
req.Header = reqHeaders
|
||||||
googleapi.Expand(req.URL, map[string]string{
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
"project": c.project,
|
"project": c.project,
|
||||||
"managedZone": c.managedZone,
|
"managedZone": c.managedZone,
|
||||||
})
|
})
|
||||||
req.Header.Set("User-Agent", c.s.userAgent())
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
if c.ifNoneMatch_ != "" {
|
|
||||||
req.Header.Set("If-None-Match", c.ifNoneMatch_)
|
|
||||||
}
|
|
||||||
if c.ctx_ != nil {
|
|
||||||
return ctxhttp.Do(c.ctx_, c.s.client, req)
|
|
||||||
}
|
|
||||||
return c.s.client.Do(req)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do executes the "dns.resourceRecordSets.list" call.
|
// Do executes the "dns.resourceRecordSets.list" call.
|
||||||
@ -1767,7 +1763,8 @@ func (c *ResourceRecordSetsListCall) Do(opts ...googleapi.CallOption) (*Resource
|
|||||||
HTTPStatusCode: res.StatusCode,
|
HTTPStatusCode: res.StatusCode,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
|
target := &ret
|
||||||
|
if err := json.NewDecoder(res.Body).Decode(target); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
|
5
vendor/google.golang.org/api/gensupport/resumable.go
generated
vendored
5
vendor/google.golang.org/api/gensupport/resumable.go
generated
vendored
@ -12,7 +12,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"golang.org/x/net/context/ctxhttp"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -80,7 +79,7 @@ func (rx *ResumableUpload) doUploadRequest(ctx context.Context, data io.Reader,
|
|||||||
req.Header.Set("Content-Range", contentRange)
|
req.Header.Set("Content-Range", contentRange)
|
||||||
req.Header.Set("Content-Type", rx.MediaType)
|
req.Header.Set("Content-Type", rx.MediaType)
|
||||||
req.Header.Set("User-Agent", rx.UserAgent)
|
req.Header.Set("User-Agent", rx.UserAgent)
|
||||||
return ctxhttp.Do(ctx, rx.Client, req)
|
return SendRequest(ctx, rx.Client, req)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,6 +134,8 @@ func contextDone(ctx context.Context) bool {
|
|||||||
// It retries using the provided back off strategy until cancelled or the
|
// It retries using the provided back off strategy until cancelled or the
|
||||||
// strategy indicates to stop retrying.
|
// strategy indicates to stop retrying.
|
||||||
// It is called from the auto-generated API code and is not visible to the user.
|
// It is called from the auto-generated API code and is not visible to the user.
|
||||||
|
// Before sending an HTTP request, Upload calls any registered hook functions,
|
||||||
|
// and calls the returned functions after the request returns (see send.go).
|
||||||
// rx is private to the auto-generated API code.
|
// rx is private to the auto-generated API code.
|
||||||
// Exactly one of resp or err will be nil. If resp is non-nil, the caller must call resp.Body.Close.
|
// Exactly one of resp or err will be nil. If resp is non-nil, the caller must call resp.Body.Close.
|
||||||
func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error) {
|
func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error) {
|
||||||
|
55
vendor/google.golang.org/api/gensupport/send.go
generated
vendored
Normal file
55
vendor/google.golang.org/api/gensupport/send.go
generated
vendored
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
// Copyright 2016 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 gensupport
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"golang.org/x/net/context/ctxhttp"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
// If ctx is non-nil, it calls all hooks, then sends the request with
|
||||||
|
// ctxhttp.Do, then calls any functions returned by the hooks in reverse order.
|
||||||
|
func SendRequest(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
|
||||||
|
if ctx == nil {
|
||||||
|
return client.Do(req)
|
||||||
|
}
|
||||||
|
// Call hooks in order of registration, store returned funcs.
|
||||||
|
post := make([]func(resp *http.Response), len(hooks))
|
||||||
|
for i, h := range hooks {
|
||||||
|
fn := h(ctx, req)
|
||||||
|
post[i] = fn
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send request.
|
||||||
|
resp, err := ctxhttp.Do(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
|
||||||
|
}
|
34
vendor/google.golang.org/api/googleapi/googleapi.go
generated
vendored
34
vendor/google.golang.org/api/googleapi/googleapi.go
generated
vendored
@ -149,12 +149,12 @@ func IsNotModified(err error) bool {
|
|||||||
// CheckMediaResponse returns an error (of type *Error) if the response
|
// CheckMediaResponse returns an error (of type *Error) if the response
|
||||||
// status code is not 2xx. Unlike CheckResponse it does not assume the
|
// status code is not 2xx. Unlike CheckResponse it does not assume the
|
||||||
// body is a JSON error document.
|
// body is a JSON error document.
|
||||||
|
// It is the caller's responsibility to close res.Body.
|
||||||
func CheckMediaResponse(res *http.Response) error {
|
func CheckMediaResponse(res *http.Response) error {
|
||||||
if res.StatusCode >= 200 && res.StatusCode <= 299 {
|
if res.StatusCode >= 200 && res.StatusCode <= 299 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
slurp, _ := ioutil.ReadAll(io.LimitReader(res.Body, 1<<20))
|
slurp, _ := ioutil.ReadAll(io.LimitReader(res.Body, 1<<20))
|
||||||
res.Body.Close()
|
|
||||||
return &Error{
|
return &Error{
|
||||||
Code: res.StatusCode,
|
Code: res.StatusCode,
|
||||||
Body: string(slurp),
|
Body: string(slurp),
|
||||||
@ -278,41 +278,15 @@ func ResolveRelative(basestr, relstr string) string {
|
|||||||
return us
|
return us
|
||||||
}
|
}
|
||||||
|
|
||||||
// has4860Fix is whether this Go environment contains the fix for
|
|
||||||
// http://golang.org/issue/4860
|
|
||||||
var has4860Fix bool
|
|
||||||
|
|
||||||
// init initializes has4860Fix by checking the behavior of the net/http package.
|
|
||||||
func init() {
|
|
||||||
r := http.Request{
|
|
||||||
URL: &url.URL{
|
|
||||||
Scheme: "http",
|
|
||||||
Opaque: "//opaque",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
b := &bytes.Buffer{}
|
|
||||||
r.Write(b)
|
|
||||||
has4860Fix = bytes.HasPrefix(b.Bytes(), []byte("GET http"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetOpaque sets u.Opaque from u.Path such that HTTP requests to it
|
|
||||||
// don't alter any hex-escaped characters in u.Path.
|
|
||||||
func SetOpaque(u *url.URL) {
|
|
||||||
u.Opaque = "//" + u.Host + u.Path
|
|
||||||
if !has4860Fix {
|
|
||||||
u.Opaque = u.Scheme + ":" + u.Opaque
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Expand subsitutes any {encoded} strings in the URL passed in using
|
// Expand subsitutes any {encoded} strings in the URL passed in using
|
||||||
// the map supplied.
|
// the map supplied.
|
||||||
//
|
//
|
||||||
// This calls SetOpaque to avoid encoding of the parameters in the URL path.
|
// This calls SetOpaque to avoid encoding of the parameters in the URL path.
|
||||||
func Expand(u *url.URL, expansions map[string]string) {
|
func Expand(u *url.URL, expansions map[string]string) {
|
||||||
expanded, err := uritemplates.Expand(u.Path, expansions)
|
escaped, unescaped, err := uritemplates.Expand(u.Path, expansions)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
u.Path = expanded
|
u.Path = unescaped
|
||||||
SetOpaque(u)
|
u.RawPath = escaped
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
68
vendor/google.golang.org/api/googleapi/internal/uritemplates/uritemplates.go
generated
vendored
68
vendor/google.golang.org/api/googleapi/internal/uritemplates/uritemplates.go
generated
vendored
@ -34,11 +34,37 @@ func pctEncode(src []byte) []byte {
|
|||||||
return dst
|
return dst
|
||||||
}
|
}
|
||||||
|
|
||||||
func escape(s string, allowReserved bool) string {
|
// pairWriter is a convenience struct which allows escaped and unescaped
|
||||||
|
// versions of the template to be written in parallel.
|
||||||
|
type pairWriter struct {
|
||||||
|
escaped, unescaped bytes.Buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write writes the provided string directly without any escaping.
|
||||||
|
func (w *pairWriter) Write(s string) {
|
||||||
|
w.escaped.WriteString(s)
|
||||||
|
w.unescaped.WriteString(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Escape writes the provided string, escaping the string for the
|
||||||
|
// escaped output.
|
||||||
|
func (w *pairWriter) Escape(s string, allowReserved bool) {
|
||||||
|
w.unescaped.WriteString(s)
|
||||||
if allowReserved {
|
if allowReserved {
|
||||||
return string(reserved.ReplaceAllFunc([]byte(s), pctEncode))
|
w.escaped.Write(reserved.ReplaceAllFunc([]byte(s), pctEncode))
|
||||||
|
} else {
|
||||||
|
w.escaped.Write(unreserved.ReplaceAllFunc([]byte(s), pctEncode))
|
||||||
}
|
}
|
||||||
return string(unreserved.ReplaceAllFunc([]byte(s), pctEncode))
|
}
|
||||||
|
|
||||||
|
// Escaped returns the escaped string.
|
||||||
|
func (w *pairWriter) Escaped() string {
|
||||||
|
return w.escaped.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unescaped returns the unescaped string.
|
||||||
|
func (w *pairWriter) Unescaped() string {
|
||||||
|
return w.unescaped.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// A uriTemplate is a parsed representation of a URI template.
|
// A uriTemplate is a parsed representation of a URI template.
|
||||||
@ -170,18 +196,20 @@ func parseTerm(term string) (result templateTerm, err error) {
|
|||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Expand expands a URI template with a set of values to produce a string.
|
// Expand expands a URI template with a set of values to produce the
|
||||||
func (t *uriTemplate) Expand(values map[string]string) string {
|
// resultant URI. Two forms of the result are returned: one with all the
|
||||||
var buf bytes.Buffer
|
// elements escaped, and one with the elements unescaped.
|
||||||
|
func (t *uriTemplate) Expand(values map[string]string) (escaped, unescaped string) {
|
||||||
|
var w pairWriter
|
||||||
for _, p := range t.parts {
|
for _, p := range t.parts {
|
||||||
p.expand(&buf, values)
|
p.expand(&w, values)
|
||||||
}
|
}
|
||||||
return buf.String()
|
return w.Escaped(), w.Unescaped()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tp *templatePart) expand(buf *bytes.Buffer, values map[string]string) {
|
func (tp *templatePart) expand(w *pairWriter, values map[string]string) {
|
||||||
if len(tp.raw) > 0 {
|
if len(tp.raw) > 0 {
|
||||||
buf.WriteString(tp.raw)
|
w.Write(tp.raw)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var first = true
|
var first = true
|
||||||
@ -191,30 +219,30 @@ func (tp *templatePart) expand(buf *bytes.Buffer, values map[string]string) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if first {
|
if first {
|
||||||
buf.WriteString(tp.first)
|
w.Write(tp.first)
|
||||||
first = false
|
first = false
|
||||||
} else {
|
} else {
|
||||||
buf.WriteString(tp.sep)
|
w.Write(tp.sep)
|
||||||
}
|
}
|
||||||
tp.expandString(buf, term, value)
|
tp.expandString(w, term, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tp *templatePart) expandName(buf *bytes.Buffer, name string, empty bool) {
|
func (tp *templatePart) expandName(w *pairWriter, name string, empty bool) {
|
||||||
if tp.named {
|
if tp.named {
|
||||||
buf.WriteString(name)
|
w.Write(name)
|
||||||
if empty {
|
if empty {
|
||||||
buf.WriteString(tp.ifemp)
|
w.Write(tp.ifemp)
|
||||||
} else {
|
} else {
|
||||||
buf.WriteString("=")
|
w.Write("=")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tp *templatePart) expandString(buf *bytes.Buffer, t templateTerm, s string) {
|
func (tp *templatePart) expandString(w *pairWriter, t templateTerm, s string) {
|
||||||
if len(s) > t.truncate && t.truncate > 0 {
|
if len(s) > t.truncate && t.truncate > 0 {
|
||||||
s = s[:t.truncate]
|
s = s[:t.truncate]
|
||||||
}
|
}
|
||||||
tp.expandName(buf, t.name, len(s) == 0)
|
tp.expandName(w, t.name, len(s) == 0)
|
||||||
buf.WriteString(escape(s, tp.allowReserved))
|
w.Escape(s, tp.allowReserved)
|
||||||
}
|
}
|
||||||
|
10
vendor/google.golang.org/api/googleapi/internal/uritemplates/utils.go
generated
vendored
10
vendor/google.golang.org/api/googleapi/internal/uritemplates/utils.go
generated
vendored
@ -4,10 +4,14 @@
|
|||||||
|
|
||||||
package uritemplates
|
package uritemplates
|
||||||
|
|
||||||
func Expand(path string, values map[string]string) (string, error) {
|
// Expand parses then expands a URI template with a set of values to produce
|
||||||
|
// the resultant URI. Two forms of the result are returned: one with all the
|
||||||
|
// elements escaped, and one with the elements unescaped.
|
||||||
|
func Expand(path string, values map[string]string) (escaped, unescaped string, err error) {
|
||||||
template, err := parse(path)
|
template, err := parse(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
return template.Expand(values), nil
|
escaped, unescaped = template.Expand(values)
|
||||||
|
return escaped, unescaped, nil
|
||||||
}
|
}
|
||||||
|
18
vendor/google.golang.org/appengine/.travis.yml
generated
vendored
Normal file
18
vendor/google.golang.org/appengine/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
language: go
|
||||||
|
|
||||||
|
go:
|
||||||
|
- 1.6.3
|
||||||
|
- 1.7rc6
|
||||||
|
|
||||||
|
install:
|
||||||
|
- go get -v -t -d google.golang.org/appengine/...
|
||||||
|
- mkdir sdk
|
||||||
|
- curl -o sdk.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip"
|
||||||
|
- unzip sdk.zip -d sdk
|
||||||
|
- export APPENGINE_DEV_APPSERVER=$(pwd)/sdk/go_appengine/dev_appserver.py
|
||||||
|
|
||||||
|
script:
|
||||||
|
- go version
|
||||||
|
- go test -v google.golang.org/appengine/...
|
||||||
|
- go test -v -race google.golang.org/appengine/...
|
||||||
|
- sdk/go_appengine/goapp test -v google.golang.org/appengine/...
|
2
vendor/google.golang.org/cloud/LICENSE → vendor/google.golang.org/appengine/LICENSE
generated
vendored
2
vendor/google.golang.org/cloud/LICENSE → vendor/google.golang.org/appengine/LICENSE
generated
vendored
@ -187,7 +187,7 @@
|
|||||||
same "printed page" as the copyright notice for easier
|
same "printed page" as the copyright notice for easier
|
||||||
identification within third-party archives.
|
identification within third-party archives.
|
||||||
|
|
||||||
Copyright 2014 Google Inc.
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
71
vendor/google.golang.org/appengine/README.md
generated
vendored
Normal file
71
vendor/google.golang.org/appengine/README.md
generated
vendored
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# Go App Engine packages
|
||||||
|
|
||||||
|
[](https://travis-ci.org/golang/appengine)
|
||||||
|
|
||||||
|
This repository supports the Go runtime on App Engine,
|
||||||
|
including both the standard App Engine and the
|
||||||
|
"App Engine flexible environment" (formerly known as "Managed VMs").
|
||||||
|
It provides APIs for interacting with App Engine services.
|
||||||
|
Its canonical import path is `google.golang.org/appengine`.
|
||||||
|
|
||||||
|
See https://cloud.google.com/appengine/docs/go/
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
File issue reports and feature requests on the [Google App Engine issue
|
||||||
|
tracker](https://code.google.com/p/googleappengine/issues/entry?template=Go%20defect).
|
||||||
|
|
||||||
|
## Directory structure
|
||||||
|
The top level directory of this repository is the `appengine` package. It
|
||||||
|
contains the
|
||||||
|
basic APIs (e.g. `appengine.NewContext`) that apply across APIs. Specific API
|
||||||
|
packages are in subdirectories (e.g. `datastore`).
|
||||||
|
|
||||||
|
There is an `internal` subdirectory that contains service protocol buffers,
|
||||||
|
plus packages required for connectivity to make API calls. App Engine apps
|
||||||
|
should not directly import any package under `internal`.
|
||||||
|
|
||||||
|
## Updating a Go App Engine app
|
||||||
|
|
||||||
|
This section describes how to update an older Go App Engine app to use
|
||||||
|
these packages. A provided tool, `aefix`, can help automate steps 2 and 3
|
||||||
|
(run `go get google.golang.org/appengine/cmd/aefix` to install it), but
|
||||||
|
read the details below since `aefix` can't perform all the changes.
|
||||||
|
|
||||||
|
### 1. Update YAML files (App Engine flexible environment / Managed VMs only)
|
||||||
|
|
||||||
|
The `app.yaml` file (and YAML files for modules) should have these new lines added:
|
||||||
|
```
|
||||||
|
vm: true
|
||||||
|
```
|
||||||
|
See https://cloud.google.com/appengine/docs/go/modules/#Go_Instance_scaling_and_class for details.
|
||||||
|
|
||||||
|
### 2. Update import paths
|
||||||
|
|
||||||
|
The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`.
|
||||||
|
You will need to update your code to use import paths starting with that; for instance,
|
||||||
|
code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`.
|
||||||
|
|
||||||
|
### 3. Update code using deprecated, removed or modified APIs
|
||||||
|
|
||||||
|
Most App Engine services are available with exactly the same API.
|
||||||
|
A few APIs were cleaned up, and some are not available yet.
|
||||||
|
This list summarises the differences:
|
||||||
|
|
||||||
|
* `appengine.Context` has been replaced with the `Context` type from `golang.org/x/net/context`.
|
||||||
|
* Logging methods that were on `appengine.Context` are now functions in `google.golang.org/appengine/log`.
|
||||||
|
* `appengine.Timeout` has been removed. Use `context.WithTimeout` instead.
|
||||||
|
* `appengine.Datacenter` now takes a `context.Context` argument.
|
||||||
|
* `datastore.PropertyLoadSaver` has been simplified to use slices in place of channels.
|
||||||
|
* `delay.Call` now returns an error.
|
||||||
|
* `search.FieldLoadSaver` now handles document metadata.
|
||||||
|
* `urlfetch.Transport` no longer has a Deadline field; set a deadline on the
|
||||||
|
`context.Context` instead.
|
||||||
|
* `aetest` no longer declares its own Context type, and uses the standard one instead.
|
||||||
|
* `taskqueue.QueueStats` no longer takes a maxTasks argument. That argument has been
|
||||||
|
deprecated and unused for a long time.
|
||||||
|
* `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature.
|
||||||
|
Use `appengine.ModuleHostname`and `appengine.ModuleName` instead.
|
||||||
|
* Most of `appengine/file` and parts of `appengine/blobstore` are deprecated.
|
||||||
|
Use [Google Cloud Storage](https://godoc.org/google.golang.org/cloud/storage) instead.
|
||||||
|
* `appengine/socket` is not required on App Engine flexible environment / Managed VMs.
|
||||||
|
Use the standard `net` package instead.
|
112
vendor/google.golang.org/appengine/appengine.go
generated
vendored
Normal file
112
vendor/google.golang.org/appengine/appengine.go
generated
vendored
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package appengine provides basic functionality for Google App Engine.
|
||||||
|
//
|
||||||
|
// For more information on how to write Go apps for Google App Engine, see:
|
||||||
|
// https://cloud.google.com/appengine/docs/go/
|
||||||
|
package appengine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
"google.golang.org/appengine/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// The gophers party all night; the rabbits provide the beats.
|
||||||
|
|
||||||
|
// Main is the principal entry point for an app running in App Engine.
|
||||||
|
//
|
||||||
|
// On App Engine Flexible it installs a trivial health checker if one isn't
|
||||||
|
// already registered, and starts listening on port 8080 (overridden by the
|
||||||
|
// $PORT environment variable).
|
||||||
|
//
|
||||||
|
// See https://cloud.google.com/appengine/docs/flexible/custom-runtimes#health_check_requests
|
||||||
|
// for details on how to do your own health checking.
|
||||||
|
//
|
||||||
|
// Main is not yet supported on App Engine Standard.
|
||||||
|
//
|
||||||
|
// Main never returns.
|
||||||
|
//
|
||||||
|
// Main is designed so that the app's main package looks like this:
|
||||||
|
//
|
||||||
|
// package main
|
||||||
|
//
|
||||||
|
// import (
|
||||||
|
// "google.golang.org/appengine"
|
||||||
|
//
|
||||||
|
// _ "myapp/package0"
|
||||||
|
// _ "myapp/package1"
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// func main() {
|
||||||
|
// appengine.Main()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// The "myapp/packageX" packages are expected to register HTTP handlers
|
||||||
|
// in their init functions.
|
||||||
|
func Main() {
|
||||||
|
internal.Main()
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsDevAppServer reports whether the App Engine app is running in the
|
||||||
|
// development App Server.
|
||||||
|
func IsDevAppServer() bool {
|
||||||
|
return internal.IsDevAppServer()
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewContext returns a context for an in-flight HTTP request.
|
||||||
|
// This function is cheap.
|
||||||
|
func NewContext(req *http.Request) context.Context {
|
||||||
|
return WithContext(context.Background(), req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithContext returns a copy of the parent context
|
||||||
|
// and associates it with an in-flight HTTP request.
|
||||||
|
// This function is cheap.
|
||||||
|
func WithContext(parent context.Context, req *http.Request) context.Context {
|
||||||
|
return internal.WithContext(parent, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(dsymonds): Add a Call function here? Otherwise other packages can't access internal.Call.
|
||||||
|
|
||||||
|
// BlobKey is a key for a blobstore blob.
|
||||||
|
//
|
||||||
|
// Conceptually, this type belongs in the blobstore package, but it lives in
|
||||||
|
// the appengine package to avoid a circular dependency: blobstore depends on
|
||||||
|
// datastore, and datastore needs to refer to the BlobKey type.
|
||||||
|
type BlobKey string
|
||||||
|
|
||||||
|
// GeoPoint represents a location as latitude/longitude in degrees.
|
||||||
|
type GeoPoint struct {
|
||||||
|
Lat, Lng float64
|
||||||
|
}
|
||||||
|
|
||||||
|
// Valid returns whether a GeoPoint is within [-90, 90] latitude and [-180, 180] longitude.
|
||||||
|
func (g GeoPoint) Valid() bool {
|
||||||
|
return -90 <= g.Lat && g.Lat <= 90 && -180 <= g.Lng && g.Lng <= 180
|
||||||
|
}
|
||||||
|
|
||||||
|
// APICallFunc defines a function type for handling an API call.
|
||||||
|
// See WithCallOverride.
|
||||||
|
type APICallFunc func(ctx context.Context, service, method string, in, out proto.Message) error
|
||||||
|
|
||||||
|
// WithAPICallFunc returns a copy of the parent context
|
||||||
|
// that will cause API calls to invoke f instead of their normal operation.
|
||||||
|
//
|
||||||
|
// This is intended for advanced users only.
|
||||||
|
func WithAPICallFunc(ctx context.Context, f APICallFunc) context.Context {
|
||||||
|
return internal.WithCallOverride(ctx, internal.CallOverrideFunc(f))
|
||||||
|
}
|
||||||
|
|
||||||
|
// APICall performs an API call.
|
||||||
|
//
|
||||||
|
// This is not intended for general use; it is exported for use in conjunction
|
||||||
|
// with WithAPICallFunc.
|
||||||
|
func APICall(ctx context.Context, service, method string, in, out proto.Message) error {
|
||||||
|
return internal.Call(ctx, service, method, in, out)
|
||||||
|
}
|
20
vendor/google.golang.org/appengine/appengine_vm.go
generated
vendored
Normal file
20
vendor/google.golang.org/appengine/appengine_vm.go
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright 2015 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build !appengine
|
||||||
|
|
||||||
|
package appengine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
"google.golang.org/appengine/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BackgroundContext returns a context not associated with a request.
|
||||||
|
// This should only be used when not servicing a request.
|
||||||
|
// This only works in App Engine "flexible environment".
|
||||||
|
func BackgroundContext() context.Context {
|
||||||
|
return internal.BackgroundContext()
|
||||||
|
}
|
46
vendor/google.golang.org/appengine/errors.go
generated
vendored
Normal file
46
vendor/google.golang.org/appengine/errors.go
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// This file provides error functions for common API failure modes.
|
||||||
|
|
||||||
|
package appengine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"google.golang.org/appengine/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IsOverQuota reports whether err represents an API call failure
|
||||||
|
// due to insufficient available quota.
|
||||||
|
func IsOverQuota(err error) bool {
|
||||||
|
callErr, ok := err.(*internal.CallError)
|
||||||
|
return ok && callErr.Code == 4
|
||||||
|
}
|
||||||
|
|
||||||
|
// MultiError is returned by batch operations when there are errors with
|
||||||
|
// particular elements. Errors will be in a one-to-one correspondence with
|
||||||
|
// the input elements; successful elements will have a nil entry.
|
||||||
|
type MultiError []error
|
||||||
|
|
||||||
|
func (m MultiError) Error() string {
|
||||||
|
s, n := "", 0
|
||||||
|
for _, e := range m {
|
||||||
|
if e != nil {
|
||||||
|
if n == 0 {
|
||||||
|
s = e.Error()
|
||||||
|
}
|
||||||
|
n++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch n {
|
||||||
|
case 0:
|
||||||
|
return "(0 errors)"
|
||||||
|
case 1:
|
||||||
|
return s
|
||||||
|
case 2:
|
||||||
|
return s + " (and 1 other error)"
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%s (and %d other errors)", s, n-1)
|
||||||
|
}
|
142
vendor/google.golang.org/appengine/identity.go
generated
vendored
Normal file
142
vendor/google.golang.org/appengine/identity.go
generated
vendored
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package appengine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
"google.golang.org/appengine/internal"
|
||||||
|
pb "google.golang.org/appengine/internal/app_identity"
|
||||||
|
modpb "google.golang.org/appengine/internal/modules"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AppID returns the application ID for the current application.
|
||||||
|
// The string will be a plain application ID (e.g. "appid"), with a
|
||||||
|
// domain prefix for custom domain deployments (e.g. "example.com:appid").
|
||||||
|
func AppID(c context.Context) string { return internal.AppID(c) }
|
||||||
|
|
||||||
|
// DefaultVersionHostname returns the standard hostname of the default version
|
||||||
|
// of the current application (e.g. "my-app.appspot.com"). This is suitable for
|
||||||
|
// use in constructing URLs.
|
||||||
|
func DefaultVersionHostname(c context.Context) string {
|
||||||
|
return internal.DefaultVersionHostname(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModuleName returns the module name of the current instance.
|
||||||
|
func ModuleName(c context.Context) string {
|
||||||
|
return internal.ModuleName(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModuleHostname returns a hostname of a module instance.
|
||||||
|
// If module is the empty string, it refers to the module of the current instance.
|
||||||
|
// If version is empty, it refers to the version of the current instance if valid,
|
||||||
|
// or the default version of the module of the current instance.
|
||||||
|
// If instance is empty, ModuleHostname returns the load-balancing hostname.
|
||||||
|
func ModuleHostname(c context.Context, module, version, instance string) (string, error) {
|
||||||
|
req := &modpb.GetHostnameRequest{}
|
||||||
|
if module != "" {
|
||||||
|
req.Module = &module
|
||||||
|
}
|
||||||
|
if version != "" {
|
||||||
|
req.Version = &version
|
||||||
|
}
|
||||||
|
if instance != "" {
|
||||||
|
req.Instance = &instance
|
||||||
|
}
|
||||||
|
res := &modpb.GetHostnameResponse{}
|
||||||
|
if err := internal.Call(c, "modules", "GetHostname", req, res); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return *res.Hostname, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// VersionID returns the version ID for the current application.
|
||||||
|
// It will be of the form "X.Y", where X is specified in app.yaml,
|
||||||
|
// and Y is a number generated when each version of the app is uploaded.
|
||||||
|
// It does not include a module name.
|
||||||
|
func VersionID(c context.Context) string { return internal.VersionID(c) }
|
||||||
|
|
||||||
|
// InstanceID returns a mostly-unique identifier for this instance.
|
||||||
|
func InstanceID() string { return internal.InstanceID() }
|
||||||
|
|
||||||
|
// Datacenter returns an identifier for the datacenter that the instance is running in.
|
||||||
|
func Datacenter(c context.Context) string { return internal.Datacenter(c) }
|
||||||
|
|
||||||
|
// ServerSoftware returns the App Engine release version.
|
||||||
|
// In production, it looks like "Google App Engine/X.Y.Z".
|
||||||
|
// In the development appserver, it looks like "Development/X.Y".
|
||||||
|
func ServerSoftware() string { return internal.ServerSoftware() }
|
||||||
|
|
||||||
|
// RequestID returns a string that uniquely identifies the request.
|
||||||
|
func RequestID(c context.Context) string { return internal.RequestID(c) }
|
||||||
|
|
||||||
|
// AccessToken generates an OAuth2 access token for the specified scopes on
|
||||||
|
// behalf of service account of this application. This token will expire after
|
||||||
|
// the returned time.
|
||||||
|
func AccessToken(c context.Context, scopes ...string) (token string, expiry time.Time, err error) {
|
||||||
|
req := &pb.GetAccessTokenRequest{Scope: scopes}
|
||||||
|
res := &pb.GetAccessTokenResponse{}
|
||||||
|
|
||||||
|
err = internal.Call(c, "app_identity_service", "GetAccessToken", req, res)
|
||||||
|
if err != nil {
|
||||||
|
return "", time.Time{}, err
|
||||||
|
}
|
||||||
|
return res.GetAccessToken(), time.Unix(res.GetExpirationTime(), 0), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certificate represents a public certificate for the app.
|
||||||
|
type Certificate struct {
|
||||||
|
KeyName string
|
||||||
|
Data []byte // PEM-encoded X.509 certificate
|
||||||
|
}
|
||||||
|
|
||||||
|
// PublicCertificates retrieves the public certificates for the app.
|
||||||
|
// They can be used to verify a signature returned by SignBytes.
|
||||||
|
func PublicCertificates(c context.Context) ([]Certificate, error) {
|
||||||
|
req := &pb.GetPublicCertificateForAppRequest{}
|
||||||
|
res := &pb.GetPublicCertificateForAppResponse{}
|
||||||
|
if err := internal.Call(c, "app_identity_service", "GetPublicCertificatesForApp", req, res); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var cs []Certificate
|
||||||
|
for _, pc := range res.PublicCertificateList {
|
||||||
|
cs = append(cs, Certificate{
|
||||||
|
KeyName: pc.GetKeyName(),
|
||||||
|
Data: []byte(pc.GetX509CertificatePem()),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return cs, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ServiceAccount returns a string representing the service account name, in
|
||||||
|
// the form of an email address (typically app_id@appspot.gserviceaccount.com).
|
||||||
|
func ServiceAccount(c context.Context) (string, error) {
|
||||||
|
req := &pb.GetServiceAccountNameRequest{}
|
||||||
|
res := &pb.GetServiceAccountNameResponse{}
|
||||||
|
|
||||||
|
err := internal.Call(c, "app_identity_service", "GetServiceAccountName", req, res)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return res.GetServiceAccountName(), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignBytes signs bytes using a private key unique to your application.
|
||||||
|
func SignBytes(c context.Context, bytes []byte) (keyName string, signature []byte, err error) {
|
||||||
|
req := &pb.SignForAppRequest{BytesToSign: bytes}
|
||||||
|
res := &pb.SignForAppResponse{}
|
||||||
|
|
||||||
|
if err := internal.Call(c, "app_identity_service", "SignForApp", req, res); err != nil {
|
||||||
|
return "", nil, err
|
||||||
|
}
|
||||||
|
return res.GetKeyName(), res.GetSignatureBytes(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
internal.RegisterErrorCodeMap("app_identity_service", pb.AppIdentityServiceError_ErrorCode_name)
|
||||||
|
internal.RegisterErrorCodeMap("modules", modpb.ModulesServiceError_ErrorCode_name)
|
||||||
|
}
|
646
vendor/google.golang.org/appengine/internal/api.go
generated
vendored
Normal file
646
vendor/google.golang.org/appengine/internal/api.go
generated
vendored
Normal file
@ -0,0 +1,646 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build !appengine
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"runtime"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"sync/atomic"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
netcontext "golang.org/x/net/context"
|
||||||
|
|
||||||
|
basepb "google.golang.org/appengine/internal/base"
|
||||||
|
logpb "google.golang.org/appengine/internal/log"
|
||||||
|
remotepb "google.golang.org/appengine/internal/remote_api"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
apiPath = "/rpc_http"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// Incoming headers.
|
||||||
|
ticketHeader = http.CanonicalHeaderKey("X-AppEngine-API-Ticket")
|
||||||
|
dapperHeader = http.CanonicalHeaderKey("X-Google-DapperTraceInfo")
|
||||||
|
traceHeader = http.CanonicalHeaderKey("X-Cloud-Trace-Context")
|
||||||
|
curNamespaceHeader = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace")
|
||||||
|
userIPHeader = http.CanonicalHeaderKey("X-AppEngine-User-IP")
|
||||||
|
remoteAddrHeader = http.CanonicalHeaderKey("X-AppEngine-Remote-Addr")
|
||||||
|
|
||||||
|
// Outgoing headers.
|
||||||
|
apiEndpointHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Endpoint")
|
||||||
|
apiEndpointHeaderValue = []string{"app-engine-apis"}
|
||||||
|
apiMethodHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Method")
|
||||||
|
apiMethodHeaderValue = []string{"/VMRemoteAPI.CallRemoteAPI"}
|
||||||
|
apiDeadlineHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Deadline")
|
||||||
|
apiContentType = http.CanonicalHeaderKey("Content-Type")
|
||||||
|
apiContentTypeValue = []string{"application/octet-stream"}
|
||||||
|
logFlushHeader = http.CanonicalHeaderKey("X-AppEngine-Log-Flush-Count")
|
||||||
|
|
||||||
|
apiHTTPClient = &http.Client{
|
||||||
|
Transport: &http.Transport{
|
||||||
|
Proxy: http.ProxyFromEnvironment,
|
||||||
|
Dial: limitDial,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func apiURL() *url.URL {
|
||||||
|
host, port := "appengine.googleapis.internal", "10001"
|
||||||
|
if h := os.Getenv("API_HOST"); h != "" {
|
||||||
|
host = h
|
||||||
|
}
|
||||||
|
if p := os.Getenv("API_PORT"); p != "" {
|
||||||
|
port = p
|
||||||
|
}
|
||||||
|
return &url.URL{
|
||||||
|
Scheme: "http",
|
||||||
|
Host: host + ":" + port,
|
||||||
|
Path: apiPath,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
c := &context{
|
||||||
|
req: r,
|
||||||
|
outHeader: w.Header(),
|
||||||
|
apiURL: apiURL(),
|
||||||
|
}
|
||||||
|
stopFlushing := make(chan int)
|
||||||
|
|
||||||
|
ctxs.Lock()
|
||||||
|
ctxs.m[r] = c
|
||||||
|
ctxs.Unlock()
|
||||||
|
defer func() {
|
||||||
|
ctxs.Lock()
|
||||||
|
delete(ctxs.m, r)
|
||||||
|
ctxs.Unlock()
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Patch up RemoteAddr so it looks reasonable.
|
||||||
|
if addr := r.Header.Get(userIPHeader); addr != "" {
|
||||||
|
r.RemoteAddr = addr
|
||||||
|
} else if addr = r.Header.Get(remoteAddrHeader); addr != "" {
|
||||||
|
r.RemoteAddr = addr
|
||||||
|
} else {
|
||||||
|
// Should not normally reach here, but pick a sensible default anyway.
|
||||||
|
r.RemoteAddr = "127.0.0.1"
|
||||||
|
}
|
||||||
|
// The address in the headers will most likely be of these forms:
|
||||||
|
// 123.123.123.123
|
||||||
|
// 2001:db8::1
|
||||||
|
// net/http.Request.RemoteAddr is specified to be in "IP:port" form.
|
||||||
|
if _, _, err := net.SplitHostPort(r.RemoteAddr); err != nil {
|
||||||
|
// Assume the remote address is only a host; add a default port.
|
||||||
|
r.RemoteAddr = net.JoinHostPort(r.RemoteAddr, "80")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start goroutine responsible for flushing app logs.
|
||||||
|
// This is done after adding c to ctx.m (and stopped before removing it)
|
||||||
|
// because flushing logs requires making an API call.
|
||||||
|
go c.logFlusher(stopFlushing)
|
||||||
|
|
||||||
|
executeRequestSafely(c, r)
|
||||||
|
c.outHeader = nil // make sure header changes aren't respected any more
|
||||||
|
|
||||||
|
stopFlushing <- 1 // any logging beyond this point will be dropped
|
||||||
|
|
||||||
|
// Flush any pending logs asynchronously.
|
||||||
|
c.pendingLogs.Lock()
|
||||||
|
flushes := c.pendingLogs.flushes
|
||||||
|
if len(c.pendingLogs.lines) > 0 {
|
||||||
|
flushes++
|
||||||
|
}
|
||||||
|
c.pendingLogs.Unlock()
|
||||||
|
go c.flushLog(false)
|
||||||
|
w.Header().Set(logFlushHeader, strconv.Itoa(flushes))
|
||||||
|
|
||||||
|
// Avoid nil Write call if c.Write is never called.
|
||||||
|
if c.outCode != 0 {
|
||||||
|
w.WriteHeader(c.outCode)
|
||||||
|
}
|
||||||
|
if c.outBody != nil {
|
||||||
|
w.Write(c.outBody)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func executeRequestSafely(c *context, r *http.Request) {
|
||||||
|
defer func() {
|
||||||
|
if x := recover(); x != nil {
|
||||||
|
logf(c, 4, "%s", renderPanic(x)) // 4 == critical
|
||||||
|
c.outCode = 500
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
http.DefaultServeMux.ServeHTTP(c, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func renderPanic(x interface{}) string {
|
||||||
|
buf := make([]byte, 16<<10) // 16 KB should be plenty
|
||||||
|
buf = buf[:runtime.Stack(buf, false)]
|
||||||
|
|
||||||
|
// Remove the first few stack frames:
|
||||||
|
// this func
|
||||||
|
// the recover closure in the caller
|
||||||
|
// That will root the stack trace at the site of the panic.
|
||||||
|
const (
|
||||||
|
skipStart = "internal.renderPanic"
|
||||||
|
skipFrames = 2
|
||||||
|
)
|
||||||
|
start := bytes.Index(buf, []byte(skipStart))
|
||||||
|
p := start
|
||||||
|
for i := 0; i < skipFrames*2 && p+1 < len(buf); i++ {
|
||||||
|
p = bytes.IndexByte(buf[p+1:], '\n') + p + 1
|
||||||
|
if p < 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if p >= 0 {
|
||||||
|
// buf[start:p+1] is the block to remove.
|
||||||
|
// Copy buf[p+1:] over buf[start:] and shrink buf.
|
||||||
|
copy(buf[start:], buf[p+1:])
|
||||||
|
buf = buf[:len(buf)-(p+1-start)]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add panic heading.
|
||||||
|
head := fmt.Sprintf("panic: %v\n\n", x)
|
||||||
|
if len(head) > len(buf) {
|
||||||
|
// Extremely unlikely to happen.
|
||||||
|
return head
|
||||||
|
}
|
||||||
|
copy(buf[len(head):], buf)
|
||||||
|
copy(buf, head)
|
||||||
|
|
||||||
|
return string(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
var ctxs = struct {
|
||||||
|
sync.Mutex
|
||||||
|
m map[*http.Request]*context
|
||||||
|
bg *context // background context, lazily initialized
|
||||||
|
// dec is used by tests to decorate the netcontext.Context returned
|
||||||
|
// for a given request. This allows tests to add overrides (such as
|
||||||
|
// WithAppIDOverride) to the context. The map is nil outside tests.
|
||||||
|
dec map[*http.Request]func(netcontext.Context) netcontext.Context
|
||||||
|
}{
|
||||||
|
m: make(map[*http.Request]*context),
|
||||||
|
}
|
||||||
|
|
||||||
|
// context represents the context of an in-flight HTTP request.
|
||||||
|
// It implements the appengine.Context and http.ResponseWriter interfaces.
|
||||||
|
type context struct {
|
||||||
|
req *http.Request
|
||||||
|
|
||||||
|
outCode int
|
||||||
|
outHeader http.Header
|
||||||
|
outBody []byte
|
||||||
|
|
||||||
|
pendingLogs struct {
|
||||||
|
sync.Mutex
|
||||||
|
lines []*logpb.UserAppLogLine
|
||||||
|
flushes int
|
||||||
|
}
|
||||||
|
|
||||||
|
apiURL *url.URL
|
||||||
|
}
|
||||||
|
|
||||||
|
var contextKey = "holds a *context"
|
||||||
|
|
||||||
|
func fromContext(ctx netcontext.Context) *context {
|
||||||
|
c, _ := ctx.Value(&contextKey).(*context)
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
func withContext(parent netcontext.Context, c *context) netcontext.Context {
|
||||||
|
ctx := netcontext.WithValue(parent, &contextKey, c)
|
||||||
|
if ns := c.req.Header.Get(curNamespaceHeader); ns != "" {
|
||||||
|
ctx = withNamespace(ctx, ns)
|
||||||
|
}
|
||||||
|
return ctx
|
||||||
|
}
|
||||||
|
|
||||||
|
func toContext(c *context) netcontext.Context {
|
||||||
|
return withContext(netcontext.Background(), c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func IncomingHeaders(ctx netcontext.Context) http.Header {
|
||||||
|
if c := fromContext(ctx); c != nil {
|
||||||
|
return c.req.Header
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context {
|
||||||
|
ctxs.Lock()
|
||||||
|
c := ctxs.m[req]
|
||||||
|
d := ctxs.dec[req]
|
||||||
|
ctxs.Unlock()
|
||||||
|
|
||||||
|
if d != nil {
|
||||||
|
parent = d(parent)
|
||||||
|
}
|
||||||
|
|
||||||
|
if c == nil {
|
||||||
|
// Someone passed in an http.Request that is not in-flight.
|
||||||
|
// We panic here rather than panicking at a later point
|
||||||
|
// so that stack traces will be more sensible.
|
||||||
|
log.Panic("appengine: NewContext passed an unknown http.Request")
|
||||||
|
}
|
||||||
|
return withContext(parent, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func BackgroundContext() netcontext.Context {
|
||||||
|
ctxs.Lock()
|
||||||
|
defer ctxs.Unlock()
|
||||||
|
|
||||||
|
if ctxs.bg != nil {
|
||||||
|
return toContext(ctxs.bg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute background security ticket.
|
||||||
|
appID := partitionlessAppID()
|
||||||
|
escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1)
|
||||||
|
majVersion := VersionID(nil)
|
||||||
|
if i := strings.Index(majVersion, "."); i > 0 {
|
||||||
|
majVersion = majVersion[:i]
|
||||||
|
}
|
||||||
|
ticket := fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(nil), majVersion, InstanceID())
|
||||||
|
|
||||||
|
ctxs.bg = &context{
|
||||||
|
req: &http.Request{
|
||||||
|
Header: http.Header{
|
||||||
|
ticketHeader: []string{ticket},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apiURL: apiURL(),
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(dsymonds): Wire up the shutdown handler to do a final flush.
|
||||||
|
go ctxs.bg.logFlusher(make(chan int))
|
||||||
|
|
||||||
|
return toContext(ctxs.bg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterTestRequest registers the HTTP request req for testing, such that
|
||||||
|
// any API calls are sent to the provided URL. It returns a closure to delete
|
||||||
|
// the registration.
|
||||||
|
// It should only be used by aetest package.
|
||||||
|
func RegisterTestRequest(req *http.Request, apiURL *url.URL, decorate func(netcontext.Context) netcontext.Context) func() {
|
||||||
|
c := &context{
|
||||||
|
req: req,
|
||||||
|
apiURL: apiURL,
|
||||||
|
}
|
||||||
|
ctxs.Lock()
|
||||||
|
defer ctxs.Unlock()
|
||||||
|
if _, ok := ctxs.m[req]; ok {
|
||||||
|
log.Panic("req already associated with context")
|
||||||
|
}
|
||||||
|
if _, ok := ctxs.dec[req]; ok {
|
||||||
|
log.Panic("req already associated with context")
|
||||||
|
}
|
||||||
|
if ctxs.dec == nil {
|
||||||
|
ctxs.dec = make(map[*http.Request]func(netcontext.Context) netcontext.Context)
|
||||||
|
}
|
||||||
|
ctxs.m[req] = c
|
||||||
|
ctxs.dec[req] = decorate
|
||||||
|
|
||||||
|
return func() {
|
||||||
|
ctxs.Lock()
|
||||||
|
delete(ctxs.m, req)
|
||||||
|
delete(ctxs.dec, req)
|
||||||
|
ctxs.Unlock()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var errTimeout = &CallError{
|
||||||
|
Detail: "Deadline exceeded",
|
||||||
|
Code: int32(remotepb.RpcError_CANCELLED),
|
||||||
|
Timeout: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *context) Header() http.Header { return c.outHeader }
|
||||||
|
|
||||||
|
// Copied from $GOROOT/src/pkg/net/http/transfer.go. Some response status
|
||||||
|
// codes do not permit a response body (nor response entity headers such as
|
||||||
|
// Content-Length, Content-Type, etc).
|
||||||
|
func bodyAllowedForStatus(status int) bool {
|
||||||
|
switch {
|
||||||
|
case status >= 100 && status <= 199:
|
||||||
|
return false
|
||||||
|
case status == 204:
|
||||||
|
return false
|
||||||
|
case status == 304:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *context) Write(b []byte) (int, error) {
|
||||||
|
if c.outCode == 0 {
|
||||||
|
c.WriteHeader(http.StatusOK)
|
||||||
|
}
|
||||||
|
if len(b) > 0 && !bodyAllowedForStatus(c.outCode) {
|
||||||
|
return 0, http.ErrBodyNotAllowed
|
||||||
|
}
|
||||||
|
c.outBody = append(c.outBody, b...)
|
||||||
|
return len(b), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *context) WriteHeader(code int) {
|
||||||
|
if c.outCode != 0 {
|
||||||
|
logf(c, 3, "WriteHeader called multiple times on request.") // error level
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.outCode = code
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *context) post(body []byte, timeout time.Duration) (b []byte, err error) {
|
||||||
|
hreq := &http.Request{
|
||||||
|
Method: "POST",
|
||||||
|
URL: c.apiURL,
|
||||||
|
Header: http.Header{
|
||||||
|
apiEndpointHeader: apiEndpointHeaderValue,
|
||||||
|
apiMethodHeader: apiMethodHeaderValue,
|
||||||
|
apiContentType: apiContentTypeValue,
|
||||||
|
apiDeadlineHeader: []string{strconv.FormatFloat(timeout.Seconds(), 'f', -1, 64)},
|
||||||
|
},
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader(body)),
|
||||||
|
ContentLength: int64(len(body)),
|
||||||
|
Host: c.apiURL.Host,
|
||||||
|
}
|
||||||
|
if info := c.req.Header.Get(dapperHeader); info != "" {
|
||||||
|
hreq.Header.Set(dapperHeader, info)
|
||||||
|
}
|
||||||
|
if info := c.req.Header.Get(traceHeader); info != "" {
|
||||||
|
hreq.Header.Set(traceHeader, info)
|
||||||
|
}
|
||||||
|
|
||||||
|
tr := apiHTTPClient.Transport.(*http.Transport)
|
||||||
|
|
||||||
|
var timedOut int32 // atomic; set to 1 if timed out
|
||||||
|
t := time.AfterFunc(timeout, func() {
|
||||||
|
atomic.StoreInt32(&timedOut, 1)
|
||||||
|
tr.CancelRequest(hreq)
|
||||||
|
})
|
||||||
|
defer t.Stop()
|
||||||
|
defer func() {
|
||||||
|
// Check if timeout was exceeded.
|
||||||
|
if atomic.LoadInt32(&timedOut) != 0 {
|
||||||
|
err = errTimeout
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
hresp, err := apiHTTPClient.Do(hreq)
|
||||||
|
if err != nil {
|
||||||
|
return nil, &CallError{
|
||||||
|
Detail: fmt.Sprintf("service bridge HTTP failed: %v", err),
|
||||||
|
Code: int32(remotepb.RpcError_UNKNOWN),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defer hresp.Body.Close()
|
||||||
|
hrespBody, err := ioutil.ReadAll(hresp.Body)
|
||||||
|
if hresp.StatusCode != 200 {
|
||||||
|
return nil, &CallError{
|
||||||
|
Detail: fmt.Sprintf("service bridge returned HTTP %d (%q)", hresp.StatusCode, hrespBody),
|
||||||
|
Code: int32(remotepb.RpcError_UNKNOWN),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, &CallError{
|
||||||
|
Detail: fmt.Sprintf("service bridge response bad: %v", err),
|
||||||
|
Code: int32(remotepb.RpcError_UNKNOWN),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return hrespBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error {
|
||||||
|
if ns := NamespaceFromContext(ctx); ns != "" {
|
||||||
|
if fn, ok := NamespaceMods[service]; ok {
|
||||||
|
fn(in, ns)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if f, ctx, ok := callOverrideFromContext(ctx); ok {
|
||||||
|
return f(ctx, service, method, in, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle already-done contexts quickly.
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
c := fromContext(ctx)
|
||||||
|
if c == nil {
|
||||||
|
// Give a good error message rather than a panic lower down.
|
||||||
|
return errors.New("not an App Engine context")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply transaction modifications if we're in a transaction.
|
||||||
|
if t := transactionFromContext(ctx); t != nil {
|
||||||
|
if t.finished {
|
||||||
|
return errors.New("transaction context has expired")
|
||||||
|
}
|
||||||
|
applyTransaction(in, &t.transaction)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default RPC timeout is 60s.
|
||||||
|
timeout := 60 * time.Second
|
||||||
|
if deadline, ok := ctx.Deadline(); ok {
|
||||||
|
timeout = deadline.Sub(time.Now())
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := proto.Marshal(in)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ticket := c.req.Header.Get(ticketHeader)
|
||||||
|
req := &remotepb.Request{
|
||||||
|
ServiceName: &service,
|
||||||
|
Method: &method,
|
||||||
|
Request: data,
|
||||||
|
RequestId: &ticket,
|
||||||
|
}
|
||||||
|
hreqBody, err := proto.Marshal(req)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
hrespBody, err := c.post(hreqBody, timeout)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
res := &remotepb.Response{}
|
||||||
|
if err := proto.Unmarshal(hrespBody, res); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if res.RpcError != nil {
|
||||||
|
ce := &CallError{
|
||||||
|
Detail: res.RpcError.GetDetail(),
|
||||||
|
Code: *res.RpcError.Code,
|
||||||
|
}
|
||||||
|
switch remotepb.RpcError_ErrorCode(ce.Code) {
|
||||||
|
case remotepb.RpcError_CANCELLED, remotepb.RpcError_DEADLINE_EXCEEDED:
|
||||||
|
ce.Timeout = true
|
||||||
|
}
|
||||||
|
return ce
|
||||||
|
}
|
||||||
|
if res.ApplicationError != nil {
|
||||||
|
return &APIError{
|
||||||
|
Service: *req.ServiceName,
|
||||||
|
Detail: res.ApplicationError.GetDetail(),
|
||||||
|
Code: *res.ApplicationError.Code,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if res.Exception != nil || res.JavaException != nil {
|
||||||
|
// This shouldn't happen, but let's be defensive.
|
||||||
|
return &CallError{
|
||||||
|
Detail: "service bridge returned exception",
|
||||||
|
Code: int32(remotepb.RpcError_UNKNOWN),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return proto.Unmarshal(res.Response, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *context) Request() *http.Request {
|
||||||
|
return c.req
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *context) addLogLine(ll *logpb.UserAppLogLine) {
|
||||||
|
// Truncate long log lines.
|
||||||
|
// TODO(dsymonds): Check if this is still necessary.
|
||||||
|
const lim = 8 << 10
|
||||||
|
if len(*ll.Message) > lim {
|
||||||
|
suffix := fmt.Sprintf("...(length %d)", len(*ll.Message))
|
||||||
|
ll.Message = proto.String((*ll.Message)[:lim-len(suffix)] + suffix)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.pendingLogs.Lock()
|
||||||
|
c.pendingLogs.lines = append(c.pendingLogs.lines, ll)
|
||||||
|
c.pendingLogs.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
var logLevelName = map[int64]string{
|
||||||
|
0: "DEBUG",
|
||||||
|
1: "INFO",
|
||||||
|
2: "WARNING",
|
||||||
|
3: "ERROR",
|
||||||
|
4: "CRITICAL",
|
||||||
|
}
|
||||||
|
|
||||||
|
func logf(c *context, level int64, format string, args ...interface{}) {
|
||||||
|
s := fmt.Sprintf(format, args...)
|
||||||
|
s = strings.TrimRight(s, "\n") // Remove any trailing newline characters.
|
||||||
|
c.addLogLine(&logpb.UserAppLogLine{
|
||||||
|
TimestampUsec: proto.Int64(time.Now().UnixNano() / 1e3),
|
||||||
|
Level: &level,
|
||||||
|
Message: &s,
|
||||||
|
})
|
||||||
|
log.Print(logLevelName[level] + ": " + s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// flushLog attempts to flush any pending logs to the appserver.
|
||||||
|
// It should not be called concurrently.
|
||||||
|
func (c *context) flushLog(force bool) (flushed bool) {
|
||||||
|
c.pendingLogs.Lock()
|
||||||
|
// Grab up to 30 MB. We can get away with up to 32 MB, but let's be cautious.
|
||||||
|
n, rem := 0, 30<<20
|
||||||
|
for ; n < len(c.pendingLogs.lines); n++ {
|
||||||
|
ll := c.pendingLogs.lines[n]
|
||||||
|
// Each log line will require about 3 bytes of overhead.
|
||||||
|
nb := proto.Size(ll) + 3
|
||||||
|
if nb > rem {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
rem -= nb
|
||||||
|
}
|
||||||
|
lines := c.pendingLogs.lines[:n]
|
||||||
|
c.pendingLogs.lines = c.pendingLogs.lines[n:]
|
||||||
|
c.pendingLogs.Unlock()
|
||||||
|
|
||||||
|
if len(lines) == 0 && !force {
|
||||||
|
// Nothing to flush.
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
rescueLogs := false
|
||||||
|
defer func() {
|
||||||
|
if rescueLogs {
|
||||||
|
c.pendingLogs.Lock()
|
||||||
|
c.pendingLogs.lines = append(lines, c.pendingLogs.lines...)
|
||||||
|
c.pendingLogs.Unlock()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
buf, err := proto.Marshal(&logpb.UserAppLogGroup{
|
||||||
|
LogLine: lines,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("internal.flushLog: marshaling UserAppLogGroup: %v", err)
|
||||||
|
rescueLogs = true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
req := &logpb.FlushRequest{
|
||||||
|
Logs: buf,
|
||||||
|
}
|
||||||
|
res := &basepb.VoidProto{}
|
||||||
|
c.pendingLogs.Lock()
|
||||||
|
c.pendingLogs.flushes++
|
||||||
|
c.pendingLogs.Unlock()
|
||||||
|
if err := Call(toContext(c), "logservice", "Flush", req, res); err != nil {
|
||||||
|
log.Printf("internal.flushLog: Flush RPC: %v", err)
|
||||||
|
rescueLogs = true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Log flushing parameters.
|
||||||
|
flushInterval = 1 * time.Second
|
||||||
|
forceFlushInterval = 60 * time.Second
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *context) logFlusher(stop <-chan int) {
|
||||||
|
lastFlush := time.Now()
|
||||||
|
tick := time.NewTicker(flushInterval)
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-stop:
|
||||||
|
// Request finished.
|
||||||
|
tick.Stop()
|
||||||
|
return
|
||||||
|
case <-tick.C:
|
||||||
|
force := time.Now().Sub(lastFlush) > forceFlushInterval
|
||||||
|
if c.flushLog(force) {
|
||||||
|
lastFlush = time.Now()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ContextForTesting(req *http.Request) netcontext.Context {
|
||||||
|
return toContext(&context{req: req})
|
||||||
|
}
|
159
vendor/google.golang.org/appengine/internal/api_classic.go
generated
vendored
Normal file
159
vendor/google.golang.org/appengine/internal/api_classic.go
generated
vendored
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
// Copyright 2015 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build appengine
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"appengine"
|
||||||
|
"appengine_internal"
|
||||||
|
basepb "appengine_internal/base"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
netcontext "golang.org/x/net/context"
|
||||||
|
)
|
||||||
|
|
||||||
|
var contextKey = "holds an appengine.Context"
|
||||||
|
|
||||||
|
func fromContext(ctx netcontext.Context) appengine.Context {
|
||||||
|
c, _ := ctx.Value(&contextKey).(appengine.Context)
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is only for classic App Engine adapters.
|
||||||
|
func ClassicContextFromContext(ctx netcontext.Context) appengine.Context {
|
||||||
|
return fromContext(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func withContext(parent netcontext.Context, c appengine.Context) netcontext.Context {
|
||||||
|
ctx := netcontext.WithValue(parent, &contextKey, c)
|
||||||
|
|
||||||
|
s := &basepb.StringProto{}
|
||||||
|
c.Call("__go__", "GetNamespace", &basepb.VoidProto{}, s, nil)
|
||||||
|
if ns := s.GetValue(); ns != "" {
|
||||||
|
ctx = NamespacedContext(ctx, ns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctx
|
||||||
|
}
|
||||||
|
|
||||||
|
func IncomingHeaders(ctx netcontext.Context) http.Header {
|
||||||
|
if c := fromContext(ctx); c != nil {
|
||||||
|
if req, ok := c.Request().(*http.Request); ok {
|
||||||
|
return req.Header
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context {
|
||||||
|
c := appengine.NewContext(req)
|
||||||
|
return withContext(parent, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
type testingContext struct {
|
||||||
|
appengine.Context
|
||||||
|
|
||||||
|
req *http.Request
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *testingContext) FullyQualifiedAppID() string { return "dev~testcontext" }
|
||||||
|
func (t *testingContext) Call(service, method string, _, _ appengine_internal.ProtoMessage, _ *appengine_internal.CallOptions) error {
|
||||||
|
if service == "__go__" && method == "GetNamespace" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return fmt.Errorf("testingContext: unsupported Call")
|
||||||
|
}
|
||||||
|
func (t *testingContext) Request() interface{} { return t.req }
|
||||||
|
|
||||||
|
func ContextForTesting(req *http.Request) netcontext.Context {
|
||||||
|
return withContext(netcontext.Background(), &testingContext{req: req})
|
||||||
|
}
|
||||||
|
|
||||||
|
func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error {
|
||||||
|
if ns := NamespaceFromContext(ctx); ns != "" {
|
||||||
|
if fn, ok := NamespaceMods[service]; ok {
|
||||||
|
fn(in, ns)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if f, ctx, ok := callOverrideFromContext(ctx); ok {
|
||||||
|
return f(ctx, service, method, in, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle already-done contexts quickly.
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
c := fromContext(ctx)
|
||||||
|
if c == nil {
|
||||||
|
// Give a good error message rather than a panic lower down.
|
||||||
|
return errors.New("not an App Engine context")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply transaction modifications if we're in a transaction.
|
||||||
|
if t := transactionFromContext(ctx); t != nil {
|
||||||
|
if t.finished {
|
||||||
|
return errors.New("transaction context has expired")
|
||||||
|
}
|
||||||
|
applyTransaction(in, &t.transaction)
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts *appengine_internal.CallOptions
|
||||||
|
if d, ok := ctx.Deadline(); ok {
|
||||||
|
opts = &appengine_internal.CallOptions{
|
||||||
|
Timeout: d.Sub(time.Now()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := c.Call(service, method, in, out, opts)
|
||||||
|
switch v := err.(type) {
|
||||||
|
case *appengine_internal.APIError:
|
||||||
|
return &APIError{
|
||||||
|
Service: v.Service,
|
||||||
|
Detail: v.Detail,
|
||||||
|
Code: v.Code,
|
||||||
|
}
|
||||||
|
case *appengine_internal.CallError:
|
||||||
|
return &CallError{
|
||||||
|
Detail: v.Detail,
|
||||||
|
Code: v.Code,
|
||||||
|
Timeout: v.Timeout,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
panic("handleHTTP called; this should be impossible")
|
||||||
|
}
|
||||||
|
|
||||||
|
func logf(c appengine.Context, level int64, format string, args ...interface{}) {
|
||||||
|
var fn func(format string, args ...interface{})
|
||||||
|
switch level {
|
||||||
|
case 0:
|
||||||
|
fn = c.Debugf
|
||||||
|
case 1:
|
||||||
|
fn = c.Infof
|
||||||
|
case 2:
|
||||||
|
fn = c.Warningf
|
||||||
|
case 3:
|
||||||
|
fn = c.Errorf
|
||||||
|
case 4:
|
||||||
|
fn = c.Criticalf
|
||||||
|
default:
|
||||||
|
// This shouldn't happen.
|
||||||
|
fn = c.Criticalf
|
||||||
|
}
|
||||||
|
fn(format, args...)
|
||||||
|
}
|
86
vendor/google.golang.org/appengine/internal/api_common.go
generated
vendored
Normal file
86
vendor/google.golang.org/appengine/internal/api_common.go
generated
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
// Copyright 2015 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
netcontext "golang.org/x/net/context"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CallOverrideFunc func(ctx netcontext.Context, service, method string, in, out proto.Message) error
|
||||||
|
|
||||||
|
var callOverrideKey = "holds []CallOverrideFunc"
|
||||||
|
|
||||||
|
func WithCallOverride(ctx netcontext.Context, f CallOverrideFunc) netcontext.Context {
|
||||||
|
// We avoid appending to any existing call override
|
||||||
|
// so we don't risk overwriting a popped stack below.
|
||||||
|
var cofs []CallOverrideFunc
|
||||||
|
if uf, ok := ctx.Value(&callOverrideKey).([]CallOverrideFunc); ok {
|
||||||
|
cofs = append(cofs, uf...)
|
||||||
|
}
|
||||||
|
cofs = append(cofs, f)
|
||||||
|
return netcontext.WithValue(ctx, &callOverrideKey, cofs)
|
||||||
|
}
|
||||||
|
|
||||||
|
func callOverrideFromContext(ctx netcontext.Context) (CallOverrideFunc, netcontext.Context, bool) {
|
||||||
|
cofs, _ := ctx.Value(&callOverrideKey).([]CallOverrideFunc)
|
||||||
|
if len(cofs) == 0 {
|
||||||
|
return nil, nil, false
|
||||||
|
}
|
||||||
|
// We found a list of overrides; grab the last, and reconstitute a
|
||||||
|
// context that will hide it.
|
||||||
|
f := cofs[len(cofs)-1]
|
||||||
|
ctx = netcontext.WithValue(ctx, &callOverrideKey, cofs[:len(cofs)-1])
|
||||||
|
return f, ctx, true
|
||||||
|
}
|
||||||
|
|
||||||
|
type logOverrideFunc func(level int64, format string, args ...interface{})
|
||||||
|
|
||||||
|
var logOverrideKey = "holds a logOverrideFunc"
|
||||||
|
|
||||||
|
func WithLogOverride(ctx netcontext.Context, f logOverrideFunc) netcontext.Context {
|
||||||
|
return netcontext.WithValue(ctx, &logOverrideKey, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
var appIDOverrideKey = "holds a string, being the full app ID"
|
||||||
|
|
||||||
|
func WithAppIDOverride(ctx netcontext.Context, appID string) netcontext.Context {
|
||||||
|
return netcontext.WithValue(ctx, &appIDOverrideKey, appID)
|
||||||
|
}
|
||||||
|
|
||||||
|
var namespaceKey = "holds the namespace string"
|
||||||
|
|
||||||
|
func withNamespace(ctx netcontext.Context, ns string) netcontext.Context {
|
||||||
|
return netcontext.WithValue(ctx, &namespaceKey, ns)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NamespaceFromContext(ctx netcontext.Context) string {
|
||||||
|
// If there's no namespace, return the empty string.
|
||||||
|
ns, _ := ctx.Value(&namespaceKey).(string)
|
||||||
|
return ns
|
||||||
|
}
|
||||||
|
|
||||||
|
// FullyQualifiedAppID returns the fully-qualified application ID.
|
||||||
|
// This may contain a partition prefix (e.g. "s~" for High Replication apps),
|
||||||
|
// or a domain prefix (e.g. "example.com:").
|
||||||
|
func FullyQualifiedAppID(ctx netcontext.Context) string {
|
||||||
|
if id, ok := ctx.Value(&appIDOverrideKey).(string); ok {
|
||||||
|
return id
|
||||||
|
}
|
||||||
|
return fullyQualifiedAppID(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Logf(ctx netcontext.Context, level int64, format string, args ...interface{}) {
|
||||||
|
if f, ok := ctx.Value(&logOverrideKey).(logOverrideFunc); ok {
|
||||||
|
f(level, format, args...)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logf(fromContext(ctx), level, format, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NamespacedContext wraps a Context to support namespaces.
|
||||||
|
func NamespacedContext(ctx netcontext.Context, namespace string) netcontext.Context {
|
||||||
|
return withNamespace(ctx, namespace)
|
||||||
|
}
|
28
vendor/google.golang.org/appengine/internal/app_id.go
generated
vendored
Normal file
28
vendor/google.golang.org/appengine/internal/app_id.go
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func parseFullAppID(appid string) (partition, domain, displayID string) {
|
||||||
|
if i := strings.Index(appid, "~"); i != -1 {
|
||||||
|
partition, appid = appid[:i], appid[i+1:]
|
||||||
|
}
|
||||||
|
if i := strings.Index(appid, ":"); i != -1 {
|
||||||
|
domain, appid = appid[:i], appid[i+1:]
|
||||||
|
}
|
||||||
|
return partition, domain, appid
|
||||||
|
}
|
||||||
|
|
||||||
|
// appID returns "appid" or "domain.com:appid".
|
||||||
|
func appID(fullAppID string) string {
|
||||||
|
_, dom, dis := parseFullAppID(fullAppID)
|
||||||
|
if dom != "" {
|
||||||
|
return dom + ":" + dis
|
||||||
|
}
|
||||||
|
return dis
|
||||||
|
}
|
296
vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go
generated
vendored
Normal file
296
vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go
generated
vendored
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: google.golang.org/appengine/internal/app_identity/app_identity_service.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package app_identity is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
google.golang.org/appengine/internal/app_identity/app_identity_service.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
AppIdentityServiceError
|
||||||
|
SignForAppRequest
|
||||||
|
SignForAppResponse
|
||||||
|
GetPublicCertificateForAppRequest
|
||||||
|
PublicCertificate
|
||||||
|
GetPublicCertificateForAppResponse
|
||||||
|
GetServiceAccountNameRequest
|
||||||
|
GetServiceAccountNameResponse
|
||||||
|
GetAccessTokenRequest
|
||||||
|
GetAccessTokenResponse
|
||||||
|
GetDefaultGcsBucketNameRequest
|
||||||
|
GetDefaultGcsBucketNameResponse
|
||||||
|
*/
|
||||||
|
package app_identity
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type AppIdentityServiceError_ErrorCode int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
AppIdentityServiceError_SUCCESS AppIdentityServiceError_ErrorCode = 0
|
||||||
|
AppIdentityServiceError_UNKNOWN_SCOPE AppIdentityServiceError_ErrorCode = 9
|
||||||
|
AppIdentityServiceError_BLOB_TOO_LARGE AppIdentityServiceError_ErrorCode = 1000
|
||||||
|
AppIdentityServiceError_DEADLINE_EXCEEDED AppIdentityServiceError_ErrorCode = 1001
|
||||||
|
AppIdentityServiceError_NOT_A_VALID_APP AppIdentityServiceError_ErrorCode = 1002
|
||||||
|
AppIdentityServiceError_UNKNOWN_ERROR AppIdentityServiceError_ErrorCode = 1003
|
||||||
|
AppIdentityServiceError_NOT_ALLOWED AppIdentityServiceError_ErrorCode = 1005
|
||||||
|
AppIdentityServiceError_NOT_IMPLEMENTED AppIdentityServiceError_ErrorCode = 1006
|
||||||
|
)
|
||||||
|
|
||||||
|
var AppIdentityServiceError_ErrorCode_name = map[int32]string{
|
||||||
|
0: "SUCCESS",
|
||||||
|
9: "UNKNOWN_SCOPE",
|
||||||
|
1000: "BLOB_TOO_LARGE",
|
||||||
|
1001: "DEADLINE_EXCEEDED",
|
||||||
|
1002: "NOT_A_VALID_APP",
|
||||||
|
1003: "UNKNOWN_ERROR",
|
||||||
|
1005: "NOT_ALLOWED",
|
||||||
|
1006: "NOT_IMPLEMENTED",
|
||||||
|
}
|
||||||
|
var AppIdentityServiceError_ErrorCode_value = map[string]int32{
|
||||||
|
"SUCCESS": 0,
|
||||||
|
"UNKNOWN_SCOPE": 9,
|
||||||
|
"BLOB_TOO_LARGE": 1000,
|
||||||
|
"DEADLINE_EXCEEDED": 1001,
|
||||||
|
"NOT_A_VALID_APP": 1002,
|
||||||
|
"UNKNOWN_ERROR": 1003,
|
||||||
|
"NOT_ALLOWED": 1005,
|
||||||
|
"NOT_IMPLEMENTED": 1006,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x AppIdentityServiceError_ErrorCode) Enum() *AppIdentityServiceError_ErrorCode {
|
||||||
|
p := new(AppIdentityServiceError_ErrorCode)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x AppIdentityServiceError_ErrorCode) String() string {
|
||||||
|
return proto.EnumName(AppIdentityServiceError_ErrorCode_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *AppIdentityServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(AppIdentityServiceError_ErrorCode_value, data, "AppIdentityServiceError_ErrorCode")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = AppIdentityServiceError_ErrorCode(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type AppIdentityServiceError struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *AppIdentityServiceError) Reset() { *m = AppIdentityServiceError{} }
|
||||||
|
func (m *AppIdentityServiceError) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*AppIdentityServiceError) ProtoMessage() {}
|
||||||
|
|
||||||
|
type SignForAppRequest struct {
|
||||||
|
BytesToSign []byte `protobuf:"bytes,1,opt,name=bytes_to_sign" json:"bytes_to_sign,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SignForAppRequest) Reset() { *m = SignForAppRequest{} }
|
||||||
|
func (m *SignForAppRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SignForAppRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *SignForAppRequest) GetBytesToSign() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.BytesToSign
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SignForAppResponse struct {
|
||||||
|
KeyName *string `protobuf:"bytes,1,opt,name=key_name" json:"key_name,omitempty"`
|
||||||
|
SignatureBytes []byte `protobuf:"bytes,2,opt,name=signature_bytes" json:"signature_bytes,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SignForAppResponse) Reset() { *m = SignForAppResponse{} }
|
||||||
|
func (m *SignForAppResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SignForAppResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *SignForAppResponse) GetKeyName() string {
|
||||||
|
if m != nil && m.KeyName != nil {
|
||||||
|
return *m.KeyName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SignForAppResponse) GetSignatureBytes() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.SignatureBytes
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPublicCertificateForAppRequest struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetPublicCertificateForAppRequest) Reset() { *m = GetPublicCertificateForAppRequest{} }
|
||||||
|
func (m *GetPublicCertificateForAppRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetPublicCertificateForAppRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
type PublicCertificate struct {
|
||||||
|
KeyName *string `protobuf:"bytes,1,opt,name=key_name" json:"key_name,omitempty"`
|
||||||
|
X509CertificatePem *string `protobuf:"bytes,2,opt,name=x509_certificate_pem" json:"x509_certificate_pem,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PublicCertificate) Reset() { *m = PublicCertificate{} }
|
||||||
|
func (m *PublicCertificate) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*PublicCertificate) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *PublicCertificate) GetKeyName() string {
|
||||||
|
if m != nil && m.KeyName != nil {
|
||||||
|
return *m.KeyName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PublicCertificate) GetX509CertificatePem() string {
|
||||||
|
if m != nil && m.X509CertificatePem != nil {
|
||||||
|
return *m.X509CertificatePem
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPublicCertificateForAppResponse struct {
|
||||||
|
PublicCertificateList []*PublicCertificate `protobuf:"bytes,1,rep,name=public_certificate_list" json:"public_certificate_list,omitempty"`
|
||||||
|
MaxClientCacheTimeInSecond *int64 `protobuf:"varint,2,opt,name=max_client_cache_time_in_second" json:"max_client_cache_time_in_second,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetPublicCertificateForAppResponse) Reset() { *m = GetPublicCertificateForAppResponse{} }
|
||||||
|
func (m *GetPublicCertificateForAppResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetPublicCertificateForAppResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetPublicCertificateForAppResponse) GetPublicCertificateList() []*PublicCertificate {
|
||||||
|
if m != nil {
|
||||||
|
return m.PublicCertificateList
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetPublicCertificateForAppResponse) GetMaxClientCacheTimeInSecond() int64 {
|
||||||
|
if m != nil && m.MaxClientCacheTimeInSecond != nil {
|
||||||
|
return *m.MaxClientCacheTimeInSecond
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetServiceAccountNameRequest struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetServiceAccountNameRequest) Reset() { *m = GetServiceAccountNameRequest{} }
|
||||||
|
func (m *GetServiceAccountNameRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetServiceAccountNameRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
type GetServiceAccountNameResponse struct {
|
||||||
|
ServiceAccountName *string `protobuf:"bytes,1,opt,name=service_account_name" json:"service_account_name,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetServiceAccountNameResponse) Reset() { *m = GetServiceAccountNameResponse{} }
|
||||||
|
func (m *GetServiceAccountNameResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetServiceAccountNameResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetServiceAccountNameResponse) GetServiceAccountName() string {
|
||||||
|
if m != nil && m.ServiceAccountName != nil {
|
||||||
|
return *m.ServiceAccountName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetAccessTokenRequest struct {
|
||||||
|
Scope []string `protobuf:"bytes,1,rep,name=scope" json:"scope,omitempty"`
|
||||||
|
ServiceAccountId *int64 `protobuf:"varint,2,opt,name=service_account_id" json:"service_account_id,omitempty"`
|
||||||
|
ServiceAccountName *string `protobuf:"bytes,3,opt,name=service_account_name" json:"service_account_name,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenRequest) Reset() { *m = GetAccessTokenRequest{} }
|
||||||
|
func (m *GetAccessTokenRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetAccessTokenRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenRequest) GetScope() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Scope
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenRequest) GetServiceAccountId() int64 {
|
||||||
|
if m != nil && m.ServiceAccountId != nil {
|
||||||
|
return *m.ServiceAccountId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenRequest) GetServiceAccountName() string {
|
||||||
|
if m != nil && m.ServiceAccountName != nil {
|
||||||
|
return *m.ServiceAccountName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetAccessTokenResponse struct {
|
||||||
|
AccessToken *string `protobuf:"bytes,1,opt,name=access_token" json:"access_token,omitempty"`
|
||||||
|
ExpirationTime *int64 `protobuf:"varint,2,opt,name=expiration_time" json:"expiration_time,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenResponse) Reset() { *m = GetAccessTokenResponse{} }
|
||||||
|
func (m *GetAccessTokenResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetAccessTokenResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenResponse) GetAccessToken() string {
|
||||||
|
if m != nil && m.AccessToken != nil {
|
||||||
|
return *m.AccessToken
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetAccessTokenResponse) GetExpirationTime() int64 {
|
||||||
|
if m != nil && m.ExpirationTime != nil {
|
||||||
|
return *m.ExpirationTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetDefaultGcsBucketNameRequest struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetDefaultGcsBucketNameRequest) Reset() { *m = GetDefaultGcsBucketNameRequest{} }
|
||||||
|
func (m *GetDefaultGcsBucketNameRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetDefaultGcsBucketNameRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
type GetDefaultGcsBucketNameResponse struct {
|
||||||
|
DefaultGcsBucketName *string `protobuf:"bytes,1,opt,name=default_gcs_bucket_name" json:"default_gcs_bucket_name,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetDefaultGcsBucketNameResponse) Reset() { *m = GetDefaultGcsBucketNameResponse{} }
|
||||||
|
func (m *GetDefaultGcsBucketNameResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetDefaultGcsBucketNameResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetDefaultGcsBucketNameResponse) GetDefaultGcsBucketName() string {
|
||||||
|
if m != nil && m.DefaultGcsBucketName != nil {
|
||||||
|
return *m.DefaultGcsBucketName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
}
|
64
vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
generated
vendored
Normal file
64
vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
generated
vendored
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "app_identity";
|
||||||
|
|
||||||
|
package appengine;
|
||||||
|
|
||||||
|
message AppIdentityServiceError {
|
||||||
|
enum ErrorCode {
|
||||||
|
SUCCESS = 0;
|
||||||
|
UNKNOWN_SCOPE = 9;
|
||||||
|
BLOB_TOO_LARGE = 1000;
|
||||||
|
DEADLINE_EXCEEDED = 1001;
|
||||||
|
NOT_A_VALID_APP = 1002;
|
||||||
|
UNKNOWN_ERROR = 1003;
|
||||||
|
NOT_ALLOWED = 1005;
|
||||||
|
NOT_IMPLEMENTED = 1006;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignForAppRequest {
|
||||||
|
optional bytes bytes_to_sign = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignForAppResponse {
|
||||||
|
optional string key_name = 1;
|
||||||
|
optional bytes signature_bytes = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetPublicCertificateForAppRequest {
|
||||||
|
}
|
||||||
|
|
||||||
|
message PublicCertificate {
|
||||||
|
optional string key_name = 1;
|
||||||
|
optional string x509_certificate_pem = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetPublicCertificateForAppResponse {
|
||||||
|
repeated PublicCertificate public_certificate_list = 1;
|
||||||
|
optional int64 max_client_cache_time_in_second = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetServiceAccountNameRequest {
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetServiceAccountNameResponse {
|
||||||
|
optional string service_account_name = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetAccessTokenRequest {
|
||||||
|
repeated string scope = 1;
|
||||||
|
optional int64 service_account_id = 2;
|
||||||
|
optional string service_account_name = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetAccessTokenResponse {
|
||||||
|
optional string access_token = 1;
|
||||||
|
optional int64 expiration_time = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetDefaultGcsBucketNameRequest {
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetDefaultGcsBucketNameResponse {
|
||||||
|
optional string default_gcs_bucket_name = 1;
|
||||||
|
}
|
133
vendor/google.golang.org/appengine/internal/base/api_base.pb.go
generated
vendored
Normal file
133
vendor/google.golang.org/appengine/internal/base/api_base.pb.go
generated
vendored
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: google.golang.org/appengine/internal/base/api_base.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package base is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
google.golang.org/appengine/internal/base/api_base.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
StringProto
|
||||||
|
Integer32Proto
|
||||||
|
Integer64Proto
|
||||||
|
BoolProto
|
||||||
|
DoubleProto
|
||||||
|
BytesProto
|
||||||
|
VoidProto
|
||||||
|
*/
|
||||||
|
package base
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type StringProto struct {
|
||||||
|
Value *string `protobuf:"bytes,1,req,name=value" json:"value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StringProto) Reset() { *m = StringProto{} }
|
||||||
|
func (m *StringProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*StringProto) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *StringProto) GetValue() string {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type Integer32Proto struct {
|
||||||
|
Value *int32 `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Integer32Proto) Reset() { *m = Integer32Proto{} }
|
||||||
|
func (m *Integer32Proto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Integer32Proto) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *Integer32Proto) GetValue() int32 {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type Integer64Proto struct {
|
||||||
|
Value *int64 `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Integer64Proto) Reset() { *m = Integer64Proto{} }
|
||||||
|
func (m *Integer64Proto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Integer64Proto) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *Integer64Proto) GetValue() int64 {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type BoolProto struct {
|
||||||
|
Value *bool `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BoolProto) Reset() { *m = BoolProto{} }
|
||||||
|
func (m *BoolProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*BoolProto) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *BoolProto) GetValue() bool {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type DoubleProto struct {
|
||||||
|
Value *float64 `protobuf:"fixed64,1,req,name=value" json:"value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *DoubleProto) Reset() { *m = DoubleProto{} }
|
||||||
|
func (m *DoubleProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*DoubleProto) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *DoubleProto) GetValue() float64 {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type BytesProto struct {
|
||||||
|
Value []byte `protobuf:"bytes,1,req,name=value" json:"value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BytesProto) Reset() { *m = BytesProto{} }
|
||||||
|
func (m *BytesProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*BytesProto) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *BytesProto) GetValue() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type VoidProto struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *VoidProto) Reset() { *m = VoidProto{} }
|
||||||
|
func (m *VoidProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*VoidProto) ProtoMessage() {}
|
33
vendor/google.golang.org/appengine/internal/base/api_base.proto
generated
vendored
Normal file
33
vendor/google.golang.org/appengine/internal/base/api_base.proto
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Built-in base types for API calls. Primarily useful as return types.
|
||||||
|
|
||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "base";
|
||||||
|
|
||||||
|
package appengine.base;
|
||||||
|
|
||||||
|
message StringProto {
|
||||||
|
required string value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Integer32Proto {
|
||||||
|
required int32 value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Integer64Proto {
|
||||||
|
required int64 value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message BoolProto {
|
||||||
|
required bool value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DoubleProto {
|
||||||
|
required double value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message BytesProto {
|
||||||
|
required bytes value = 1 [ctype=CORD];
|
||||||
|
}
|
||||||
|
|
||||||
|
message VoidProto {
|
||||||
|
}
|
2778
vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go
generated
vendored
Normal file
2778
vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
541
vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
generated
vendored
Executable file
541
vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
generated
vendored
Executable file
@ -0,0 +1,541 @@
|
|||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "datastore";
|
||||||
|
|
||||||
|
package appengine;
|
||||||
|
|
||||||
|
message Action{}
|
||||||
|
|
||||||
|
message PropertyValue {
|
||||||
|
optional int64 int64Value = 1;
|
||||||
|
optional bool booleanValue = 2;
|
||||||
|
optional string stringValue = 3;
|
||||||
|
optional double doubleValue = 4;
|
||||||
|
|
||||||
|
optional group PointValue = 5 {
|
||||||
|
required double x = 6;
|
||||||
|
required double y = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional group UserValue = 8 {
|
||||||
|
required string email = 9;
|
||||||
|
required string auth_domain = 10;
|
||||||
|
optional string nickname = 11;
|
||||||
|
optional string federated_identity = 21;
|
||||||
|
optional string federated_provider = 22;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional group ReferenceValue = 12 {
|
||||||
|
required string app = 13;
|
||||||
|
optional string name_space = 20;
|
||||||
|
repeated group PathElement = 14 {
|
||||||
|
required string type = 15;
|
||||||
|
optional int64 id = 16;
|
||||||
|
optional string name = 17;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message Property {
|
||||||
|
enum Meaning {
|
||||||
|
NO_MEANING = 0;
|
||||||
|
BLOB = 14;
|
||||||
|
TEXT = 15;
|
||||||
|
BYTESTRING = 16;
|
||||||
|
|
||||||
|
ATOM_CATEGORY = 1;
|
||||||
|
ATOM_LINK = 2;
|
||||||
|
ATOM_TITLE = 3;
|
||||||
|
ATOM_CONTENT = 4;
|
||||||
|
ATOM_SUMMARY = 5;
|
||||||
|
ATOM_AUTHOR = 6;
|
||||||
|
|
||||||
|
GD_WHEN = 7;
|
||||||
|
GD_EMAIL = 8;
|
||||||
|
GEORSS_POINT = 9;
|
||||||
|
GD_IM = 10;
|
||||||
|
|
||||||
|
GD_PHONENUMBER = 11;
|
||||||
|
GD_POSTALADDRESS = 12;
|
||||||
|
|
||||||
|
GD_RATING = 13;
|
||||||
|
|
||||||
|
BLOBKEY = 17;
|
||||||
|
ENTITY_PROTO = 19;
|
||||||
|
|
||||||
|
INDEX_VALUE = 18;
|
||||||
|
};
|
||||||
|
|
||||||
|
optional Meaning meaning = 1 [default = NO_MEANING];
|
||||||
|
optional string meaning_uri = 2;
|
||||||
|
|
||||||
|
required string name = 3;
|
||||||
|
|
||||||
|
required PropertyValue value = 5;
|
||||||
|
|
||||||
|
required bool multiple = 4;
|
||||||
|
|
||||||
|
optional bool searchable = 6 [default=false];
|
||||||
|
|
||||||
|
enum FtsTokenizationOption {
|
||||||
|
HTML = 1;
|
||||||
|
ATOM = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional FtsTokenizationOption fts_tokenization_option = 8;
|
||||||
|
|
||||||
|
optional string locale = 9 [default = "en"];
|
||||||
|
}
|
||||||
|
|
||||||
|
message Path {
|
||||||
|
repeated group Element = 1 {
|
||||||
|
required string type = 2;
|
||||||
|
optional int64 id = 3;
|
||||||
|
optional string name = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message Reference {
|
||||||
|
required string app = 13;
|
||||||
|
optional string name_space = 20;
|
||||||
|
required Path path = 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
message User {
|
||||||
|
required string email = 1;
|
||||||
|
required string auth_domain = 2;
|
||||||
|
optional string nickname = 3;
|
||||||
|
optional string federated_identity = 6;
|
||||||
|
optional string federated_provider = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message EntityProto {
|
||||||
|
required Reference key = 13;
|
||||||
|
required Path entity_group = 16;
|
||||||
|
optional User owner = 17;
|
||||||
|
|
||||||
|
enum Kind {
|
||||||
|
GD_CONTACT = 1;
|
||||||
|
GD_EVENT = 2;
|
||||||
|
GD_MESSAGE = 3;
|
||||||
|
}
|
||||||
|
optional Kind kind = 4;
|
||||||
|
optional string kind_uri = 5;
|
||||||
|
|
||||||
|
repeated Property property = 14;
|
||||||
|
repeated Property raw_property = 15;
|
||||||
|
|
||||||
|
optional int32 rank = 18;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CompositeProperty {
|
||||||
|
required int64 index_id = 1;
|
||||||
|
repeated string value = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Index {
|
||||||
|
required string entity_type = 1;
|
||||||
|
required bool ancestor = 5;
|
||||||
|
repeated group Property = 2 {
|
||||||
|
required string name = 3;
|
||||||
|
enum Direction {
|
||||||
|
ASCENDING = 1;
|
||||||
|
DESCENDING = 2;
|
||||||
|
}
|
||||||
|
optional Direction direction = 4 [default = ASCENDING];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message CompositeIndex {
|
||||||
|
required string app_id = 1;
|
||||||
|
required int64 id = 2;
|
||||||
|
required Index definition = 3;
|
||||||
|
|
||||||
|
enum State {
|
||||||
|
WRITE_ONLY = 1;
|
||||||
|
READ_WRITE = 2;
|
||||||
|
DELETED = 3;
|
||||||
|
ERROR = 4;
|
||||||
|
}
|
||||||
|
required State state = 4;
|
||||||
|
|
||||||
|
optional bool only_use_if_required = 6 [default = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message IndexPostfix {
|
||||||
|
message IndexValue {
|
||||||
|
required string property_name = 1;
|
||||||
|
required PropertyValue value = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
repeated IndexValue index_value = 1;
|
||||||
|
|
||||||
|
optional Reference key = 2;
|
||||||
|
|
||||||
|
optional bool before = 3 [default=true];
|
||||||
|
}
|
||||||
|
|
||||||
|
message IndexPosition {
|
||||||
|
optional string key = 1;
|
||||||
|
|
||||||
|
optional bool before = 2 [default=true];
|
||||||
|
}
|
||||||
|
|
||||||
|
message Snapshot {
|
||||||
|
enum Status {
|
||||||
|
INACTIVE = 0;
|
||||||
|
ACTIVE = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
required int64 ts = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message InternalHeader {
|
||||||
|
optional string qos = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Transaction {
|
||||||
|
optional InternalHeader header = 4;
|
||||||
|
required fixed64 handle = 1;
|
||||||
|
required string app = 2;
|
||||||
|
optional bool mark_changes = 3 [default = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message Query {
|
||||||
|
optional InternalHeader header = 39;
|
||||||
|
|
||||||
|
required string app = 1;
|
||||||
|
optional string name_space = 29;
|
||||||
|
|
||||||
|
optional string kind = 3;
|
||||||
|
optional Reference ancestor = 17;
|
||||||
|
|
||||||
|
repeated group Filter = 4 {
|
||||||
|
enum Operator {
|
||||||
|
LESS_THAN = 1;
|
||||||
|
LESS_THAN_OR_EQUAL = 2;
|
||||||
|
GREATER_THAN = 3;
|
||||||
|
GREATER_THAN_OR_EQUAL = 4;
|
||||||
|
EQUAL = 5;
|
||||||
|
IN = 6;
|
||||||
|
EXISTS = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
required Operator op = 6;
|
||||||
|
repeated Property property = 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional string search_query = 8;
|
||||||
|
|
||||||
|
repeated group Order = 9 {
|
||||||
|
enum Direction {
|
||||||
|
ASCENDING = 1;
|
||||||
|
DESCENDING = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
required string property = 10;
|
||||||
|
optional Direction direction = 11 [default = ASCENDING];
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Hint {
|
||||||
|
ORDER_FIRST = 1;
|
||||||
|
ANCESTOR_FIRST = 2;
|
||||||
|
FILTER_FIRST = 3;
|
||||||
|
}
|
||||||
|
optional Hint hint = 18;
|
||||||
|
|
||||||
|
optional int32 count = 23;
|
||||||
|
|
||||||
|
optional int32 offset = 12 [default = 0];
|
||||||
|
|
||||||
|
optional int32 limit = 16;
|
||||||
|
|
||||||
|
optional CompiledCursor compiled_cursor = 30;
|
||||||
|
optional CompiledCursor end_compiled_cursor = 31;
|
||||||
|
|
||||||
|
repeated CompositeIndex composite_index = 19;
|
||||||
|
|
||||||
|
optional bool require_perfect_plan = 20 [default = false];
|
||||||
|
|
||||||
|
optional bool keys_only = 21 [default = false];
|
||||||
|
|
||||||
|
optional Transaction transaction = 22;
|
||||||
|
|
||||||
|
optional bool compile = 25 [default = false];
|
||||||
|
|
||||||
|
optional int64 failover_ms = 26;
|
||||||
|
|
||||||
|
optional bool strong = 32;
|
||||||
|
|
||||||
|
repeated string property_name = 33;
|
||||||
|
|
||||||
|
repeated string group_by_property_name = 34;
|
||||||
|
|
||||||
|
optional bool distinct = 24;
|
||||||
|
|
||||||
|
optional int64 min_safe_time_seconds = 35;
|
||||||
|
|
||||||
|
repeated string safe_replica_name = 36;
|
||||||
|
|
||||||
|
optional bool persist_offset = 37 [default=false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message CompiledQuery {
|
||||||
|
required group PrimaryScan = 1 {
|
||||||
|
optional string index_name = 2;
|
||||||
|
|
||||||
|
optional string start_key = 3;
|
||||||
|
optional bool start_inclusive = 4;
|
||||||
|
optional string end_key = 5;
|
||||||
|
optional bool end_inclusive = 6;
|
||||||
|
|
||||||
|
repeated string start_postfix_value = 22;
|
||||||
|
repeated string end_postfix_value = 23;
|
||||||
|
|
||||||
|
optional int64 end_unapplied_log_timestamp_us = 19;
|
||||||
|
}
|
||||||
|
|
||||||
|
repeated group MergeJoinScan = 7 {
|
||||||
|
required string index_name = 8;
|
||||||
|
|
||||||
|
repeated string prefix_value = 9;
|
||||||
|
|
||||||
|
optional bool value_prefix = 20 [default=false];
|
||||||
|
}
|
||||||
|
|
||||||
|
optional Index index_def = 21;
|
||||||
|
|
||||||
|
optional int32 offset = 10 [default = 0];
|
||||||
|
|
||||||
|
optional int32 limit = 11;
|
||||||
|
|
||||||
|
required bool keys_only = 12;
|
||||||
|
|
||||||
|
repeated string property_name = 24;
|
||||||
|
|
||||||
|
optional int32 distinct_infix_size = 25;
|
||||||
|
|
||||||
|
optional group EntityFilter = 13 {
|
||||||
|
optional bool distinct = 14 [default=false];
|
||||||
|
|
||||||
|
optional string kind = 17;
|
||||||
|
optional Reference ancestor = 18;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message CompiledCursor {
|
||||||
|
optional group Position = 2 {
|
||||||
|
optional string start_key = 27;
|
||||||
|
|
||||||
|
repeated group IndexValue = 29 {
|
||||||
|
optional string property = 30;
|
||||||
|
required PropertyValue value = 31;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional Reference key = 32;
|
||||||
|
|
||||||
|
optional bool start_inclusive = 28 [default=true];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message Cursor {
|
||||||
|
required fixed64 cursor = 1;
|
||||||
|
|
||||||
|
optional string app = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Error {
|
||||||
|
enum ErrorCode {
|
||||||
|
BAD_REQUEST = 1;
|
||||||
|
CONCURRENT_TRANSACTION = 2;
|
||||||
|
INTERNAL_ERROR = 3;
|
||||||
|
NEED_INDEX = 4;
|
||||||
|
TIMEOUT = 5;
|
||||||
|
PERMISSION_DENIED = 6;
|
||||||
|
BIGTABLE_ERROR = 7;
|
||||||
|
COMMITTED_BUT_STILL_APPLYING = 8;
|
||||||
|
CAPABILITY_DISABLED = 9;
|
||||||
|
TRY_ALTERNATE_BACKEND = 10;
|
||||||
|
SAFE_TIME_TOO_OLD = 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message Cost {
|
||||||
|
optional int32 index_writes = 1;
|
||||||
|
optional int32 index_write_bytes = 2;
|
||||||
|
optional int32 entity_writes = 3;
|
||||||
|
optional int32 entity_write_bytes = 4;
|
||||||
|
optional group CommitCost = 5 {
|
||||||
|
optional int32 requested_entity_puts = 6;
|
||||||
|
optional int32 requested_entity_deletes = 7;
|
||||||
|
};
|
||||||
|
optional int32 approximate_storage_delta = 8;
|
||||||
|
optional int32 id_sequence_updates = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetRequest {
|
||||||
|
optional InternalHeader header = 6;
|
||||||
|
|
||||||
|
repeated Reference key = 1;
|
||||||
|
optional Transaction transaction = 2;
|
||||||
|
|
||||||
|
optional int64 failover_ms = 3;
|
||||||
|
|
||||||
|
optional bool strong = 4;
|
||||||
|
|
||||||
|
optional bool allow_deferred = 5 [default=false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetResponse {
|
||||||
|
repeated group Entity = 1 {
|
||||||
|
optional EntityProto entity = 2;
|
||||||
|
optional Reference key = 4;
|
||||||
|
|
||||||
|
optional int64 version = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
repeated Reference deferred = 5;
|
||||||
|
|
||||||
|
optional bool in_order = 6 [default=true];
|
||||||
|
}
|
||||||
|
|
||||||
|
message PutRequest {
|
||||||
|
optional InternalHeader header = 11;
|
||||||
|
|
||||||
|
repeated EntityProto entity = 1;
|
||||||
|
optional Transaction transaction = 2;
|
||||||
|
repeated CompositeIndex composite_index = 3;
|
||||||
|
|
||||||
|
optional bool trusted = 4 [default = false];
|
||||||
|
|
||||||
|
optional bool force = 7 [default = false];
|
||||||
|
|
||||||
|
optional bool mark_changes = 8 [default = false];
|
||||||
|
repeated Snapshot snapshot = 9;
|
||||||
|
|
||||||
|
enum AutoIdPolicy {
|
||||||
|
CURRENT = 0;
|
||||||
|
SEQUENTIAL = 1;
|
||||||
|
}
|
||||||
|
optional AutoIdPolicy auto_id_policy = 10 [default = CURRENT];
|
||||||
|
}
|
||||||
|
|
||||||
|
message PutResponse {
|
||||||
|
repeated Reference key = 1;
|
||||||
|
optional Cost cost = 2;
|
||||||
|
repeated int64 version = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message TouchRequest {
|
||||||
|
optional InternalHeader header = 10;
|
||||||
|
|
||||||
|
repeated Reference key = 1;
|
||||||
|
repeated CompositeIndex composite_index = 2;
|
||||||
|
optional bool force = 3 [default = false];
|
||||||
|
repeated Snapshot snapshot = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
message TouchResponse {
|
||||||
|
optional Cost cost = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DeleteRequest {
|
||||||
|
optional InternalHeader header = 10;
|
||||||
|
|
||||||
|
repeated Reference key = 6;
|
||||||
|
optional Transaction transaction = 5;
|
||||||
|
|
||||||
|
optional bool trusted = 4 [default = false];
|
||||||
|
|
||||||
|
optional bool force = 7 [default = false];
|
||||||
|
|
||||||
|
optional bool mark_changes = 8 [default = false];
|
||||||
|
repeated Snapshot snapshot = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DeleteResponse {
|
||||||
|
optional Cost cost = 1;
|
||||||
|
repeated int64 version = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NextRequest {
|
||||||
|
optional InternalHeader header = 5;
|
||||||
|
|
||||||
|
required Cursor cursor = 1;
|
||||||
|
optional int32 count = 2;
|
||||||
|
|
||||||
|
optional int32 offset = 4 [default = 0];
|
||||||
|
|
||||||
|
optional bool compile = 3 [default = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message QueryResult {
|
||||||
|
optional Cursor cursor = 1;
|
||||||
|
|
||||||
|
repeated EntityProto result = 2;
|
||||||
|
|
||||||
|
optional int32 skipped_results = 7;
|
||||||
|
|
||||||
|
required bool more_results = 3;
|
||||||
|
|
||||||
|
optional bool keys_only = 4;
|
||||||
|
|
||||||
|
optional bool index_only = 9;
|
||||||
|
|
||||||
|
optional bool small_ops = 10;
|
||||||
|
|
||||||
|
optional CompiledQuery compiled_query = 5;
|
||||||
|
|
||||||
|
optional CompiledCursor compiled_cursor = 6;
|
||||||
|
|
||||||
|
repeated CompositeIndex index = 8;
|
||||||
|
|
||||||
|
repeated int64 version = 11;
|
||||||
|
}
|
||||||
|
|
||||||
|
message AllocateIdsRequest {
|
||||||
|
optional InternalHeader header = 4;
|
||||||
|
|
||||||
|
optional Reference model_key = 1;
|
||||||
|
|
||||||
|
optional int64 size = 2;
|
||||||
|
|
||||||
|
optional int64 max = 3;
|
||||||
|
|
||||||
|
repeated Reference reserve = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message AllocateIdsResponse {
|
||||||
|
required int64 start = 1;
|
||||||
|
required int64 end = 2;
|
||||||
|
optional Cost cost = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CompositeIndices {
|
||||||
|
repeated CompositeIndex index = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message AddActionsRequest {
|
||||||
|
optional InternalHeader header = 3;
|
||||||
|
|
||||||
|
required Transaction transaction = 1;
|
||||||
|
repeated Action action = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message AddActionsResponse {
|
||||||
|
}
|
||||||
|
|
||||||
|
message BeginTransactionRequest {
|
||||||
|
optional InternalHeader header = 3;
|
||||||
|
|
||||||
|
required string app = 1;
|
||||||
|
optional bool allow_multiple_eg = 2 [default = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message CommitResponse {
|
||||||
|
optional Cost cost = 1;
|
||||||
|
|
||||||
|
repeated group Version = 3 {
|
||||||
|
required Reference root_entity_key = 4;
|
||||||
|
required int64 version = 5;
|
||||||
|
}
|
||||||
|
}
|
14
vendor/google.golang.org/appengine/internal/identity.go
generated
vendored
Normal file
14
vendor/google.golang.org/appengine/internal/identity.go
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import netcontext "golang.org/x/net/context"
|
||||||
|
|
||||||
|
// These functions are implementations of the wrapper functions
|
||||||
|
// in ../appengine/identity.go. See that file for commentary.
|
||||||
|
|
||||||
|
func AppID(c netcontext.Context) string {
|
||||||
|
return appID(FullyQualifiedAppID(c))
|
||||||
|
}
|
27
vendor/google.golang.org/appengine/internal/identity_classic.go
generated
vendored
Normal file
27
vendor/google.golang.org/appengine/internal/identity_classic.go
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2015 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build appengine
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"appengine"
|
||||||
|
|
||||||
|
netcontext "golang.org/x/net/context"
|
||||||
|
)
|
||||||
|
|
||||||
|
func DefaultVersionHostname(ctx netcontext.Context) string {
|
||||||
|
return appengine.DefaultVersionHostname(fromContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
func RequestID(ctx netcontext.Context) string { return appengine.RequestID(fromContext(ctx)) }
|
||||||
|
func Datacenter(_ netcontext.Context) string { return appengine.Datacenter() }
|
||||||
|
func ServerSoftware() string { return appengine.ServerSoftware() }
|
||||||
|
func ModuleName(ctx netcontext.Context) string { return appengine.ModuleName(fromContext(ctx)) }
|
||||||
|
func VersionID(ctx netcontext.Context) string { return appengine.VersionID(fromContext(ctx)) }
|
||||||
|
func InstanceID() string { return appengine.InstanceID() }
|
||||||
|
func IsDevAppServer() bool { return appengine.IsDevAppServer() }
|
||||||
|
|
||||||
|
func fullyQualifiedAppID(ctx netcontext.Context) string { return fromContext(ctx).FullyQualifiedAppID() }
|
97
vendor/google.golang.org/appengine/internal/identity_vm.go
generated
vendored
Normal file
97
vendor/google.golang.org/appengine/internal/identity_vm.go
generated
vendored
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build !appengine
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
netcontext "golang.org/x/net/context"
|
||||||
|
)
|
||||||
|
|
||||||
|
// These functions are implementations of the wrapper functions
|
||||||
|
// in ../appengine/identity.go. See that file for commentary.
|
||||||
|
|
||||||
|
const (
|
||||||
|
hDefaultVersionHostname = "X-AppEngine-Default-Version-Hostname"
|
||||||
|
hRequestLogId = "X-AppEngine-Request-Log-Id"
|
||||||
|
hDatacenter = "X-AppEngine-Datacenter"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ctxHeaders(ctx netcontext.Context) http.Header {
|
||||||
|
return fromContext(ctx).Request().Header
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultVersionHostname(ctx netcontext.Context) string {
|
||||||
|
return ctxHeaders(ctx).Get(hDefaultVersionHostname)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RequestID(ctx netcontext.Context) string {
|
||||||
|
return ctxHeaders(ctx).Get(hRequestLogId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Datacenter(ctx netcontext.Context) string {
|
||||||
|
return ctxHeaders(ctx).Get(hDatacenter)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ServerSoftware() string {
|
||||||
|
// TODO(dsymonds): Remove fallback when we've verified this.
|
||||||
|
if s := os.Getenv("SERVER_SOFTWARE"); s != "" {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return "Google App Engine/1.x.x"
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(dsymonds): Remove the metadata fetches.
|
||||||
|
|
||||||
|
func ModuleName(_ netcontext.Context) string {
|
||||||
|
if s := os.Getenv("GAE_MODULE_NAME"); s != "" {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return string(mustGetMetadata("instance/attributes/gae_backend_name"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func VersionID(_ netcontext.Context) string {
|
||||||
|
if s1, s2 := os.Getenv("GAE_MODULE_VERSION"), os.Getenv("GAE_MINOR_VERSION"); s1 != "" && s2 != "" {
|
||||||
|
return s1 + "." + s2
|
||||||
|
}
|
||||||
|
return string(mustGetMetadata("instance/attributes/gae_backend_version")) + "." + string(mustGetMetadata("instance/attributes/gae_backend_minor_version"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func InstanceID() string {
|
||||||
|
if s := os.Getenv("GAE_MODULE_INSTANCE"); s != "" {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return string(mustGetMetadata("instance/attributes/gae_backend_instance"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func partitionlessAppID() string {
|
||||||
|
// gae_project has everything except the partition prefix.
|
||||||
|
appID := os.Getenv("GAE_LONG_APP_ID")
|
||||||
|
if appID == "" {
|
||||||
|
appID = string(mustGetMetadata("instance/attributes/gae_project"))
|
||||||
|
}
|
||||||
|
return appID
|
||||||
|
}
|
||||||
|
|
||||||
|
func fullyQualifiedAppID(_ netcontext.Context) string {
|
||||||
|
appID := partitionlessAppID()
|
||||||
|
|
||||||
|
part := os.Getenv("GAE_PARTITION")
|
||||||
|
if part == "" {
|
||||||
|
part = string(mustGetMetadata("instance/attributes/gae_partition"))
|
||||||
|
}
|
||||||
|
|
||||||
|
if part != "" {
|
||||||
|
appID = part + "~" + appID
|
||||||
|
}
|
||||||
|
return appID
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsDevAppServer() bool {
|
||||||
|
return os.Getenv("RUN_WITH_DEVAPPSERVER") != ""
|
||||||
|
}
|
110
vendor/google.golang.org/appengine/internal/internal.go
generated
vendored
Normal file
110
vendor/google.golang.org/appengine/internal/internal.go
generated
vendored
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package internal provides support for package appengine.
|
||||||
|
//
|
||||||
|
// Programs should not use this package directly. Its API is not stable.
|
||||||
|
// Use packages appengine and appengine/* instead.
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
|
||||||
|
remotepb "google.golang.org/appengine/internal/remote_api"
|
||||||
|
)
|
||||||
|
|
||||||
|
// errorCodeMaps is a map of service name to the error code map for the service.
|
||||||
|
var errorCodeMaps = make(map[string]map[int32]string)
|
||||||
|
|
||||||
|
// RegisterErrorCodeMap is called from API implementations to register their
|
||||||
|
// error code map. This should only be called from init functions.
|
||||||
|
func RegisterErrorCodeMap(service string, m map[int32]string) {
|
||||||
|
errorCodeMaps[service] = m
|
||||||
|
}
|
||||||
|
|
||||||
|
type timeoutCodeKey struct {
|
||||||
|
service string
|
||||||
|
code int32
|
||||||
|
}
|
||||||
|
|
||||||
|
// timeoutCodes is the set of service+code pairs that represent timeouts.
|
||||||
|
var timeoutCodes = make(map[timeoutCodeKey]bool)
|
||||||
|
|
||||||
|
func RegisterTimeoutErrorCode(service string, code int32) {
|
||||||
|
timeoutCodes[timeoutCodeKey{service, code}] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// APIError is the type returned by appengine.Context's Call method
|
||||||
|
// when an API call fails in an API-specific way. This may be, for instance,
|
||||||
|
// a taskqueue API call failing with TaskQueueServiceError::UNKNOWN_QUEUE.
|
||||||
|
type APIError struct {
|
||||||
|
Service string
|
||||||
|
Detail string
|
||||||
|
Code int32 // API-specific error code
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *APIError) Error() string {
|
||||||
|
if e.Code == 0 {
|
||||||
|
if e.Detail == "" {
|
||||||
|
return "APIError <empty>"
|
||||||
|
}
|
||||||
|
return e.Detail
|
||||||
|
}
|
||||||
|
s := fmt.Sprintf("API error %d", e.Code)
|
||||||
|
if m, ok := errorCodeMaps[e.Service]; ok {
|
||||||
|
s += " (" + e.Service + ": " + m[e.Code] + ")"
|
||||||
|
} else {
|
||||||
|
// Shouldn't happen, but provide a bit more detail if it does.
|
||||||
|
s = e.Service + " " + s
|
||||||
|
}
|
||||||
|
if e.Detail != "" {
|
||||||
|
s += ": " + e.Detail
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *APIError) IsTimeout() bool {
|
||||||
|
return timeoutCodes[timeoutCodeKey{e.Service, e.Code}]
|
||||||
|
}
|
||||||
|
|
||||||
|
// CallError is the type returned by appengine.Context's Call method when an
|
||||||
|
// API call fails in a generic way, such as RpcError::CAPABILITY_DISABLED.
|
||||||
|
type CallError struct {
|
||||||
|
Detail string
|
||||||
|
Code int32
|
||||||
|
// TODO: Remove this if we get a distinguishable error code.
|
||||||
|
Timeout bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *CallError) Error() string {
|
||||||
|
var msg string
|
||||||
|
switch remotepb.RpcError_ErrorCode(e.Code) {
|
||||||
|
case remotepb.RpcError_UNKNOWN:
|
||||||
|
return e.Detail
|
||||||
|
case remotepb.RpcError_OVER_QUOTA:
|
||||||
|
msg = "Over quota"
|
||||||
|
case remotepb.RpcError_CAPABILITY_DISABLED:
|
||||||
|
msg = "Capability disabled"
|
||||||
|
case remotepb.RpcError_CANCELLED:
|
||||||
|
msg = "Canceled"
|
||||||
|
default:
|
||||||
|
msg = fmt.Sprintf("Call error %d", e.Code)
|
||||||
|
}
|
||||||
|
s := msg + ": " + e.Detail
|
||||||
|
if e.Timeout {
|
||||||
|
s += " (timeout)"
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *CallError) IsTimeout() bool {
|
||||||
|
return e.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
// NamespaceMods is a map from API service to a function that will mutate an RPC request to attach a namespace.
|
||||||
|
// The function should be prepared to be called on the same message more than once; it should only modify the
|
||||||
|
// RPC request the first time.
|
||||||
|
var NamespaceMods = make(map[string]func(m proto.Message, namespace string))
|
899
vendor/google.golang.org/appengine/internal/log/log_service.pb.go
generated
vendored
Normal file
899
vendor/google.golang.org/appengine/internal/log/log_service.pb.go
generated
vendored
Normal file
@ -0,0 +1,899 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: google.golang.org/appengine/internal/log/log_service.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package log is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
google.golang.org/appengine/internal/log/log_service.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
LogServiceError
|
||||||
|
UserAppLogLine
|
||||||
|
UserAppLogGroup
|
||||||
|
FlushRequest
|
||||||
|
SetStatusRequest
|
||||||
|
LogOffset
|
||||||
|
LogLine
|
||||||
|
RequestLog
|
||||||
|
LogModuleVersion
|
||||||
|
LogReadRequest
|
||||||
|
LogReadResponse
|
||||||
|
LogUsageRecord
|
||||||
|
LogUsageRequest
|
||||||
|
LogUsageResponse
|
||||||
|
*/
|
||||||
|
package log
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type LogServiceError_ErrorCode int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
LogServiceError_OK LogServiceError_ErrorCode = 0
|
||||||
|
LogServiceError_INVALID_REQUEST LogServiceError_ErrorCode = 1
|
||||||
|
LogServiceError_STORAGE_ERROR LogServiceError_ErrorCode = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
var LogServiceError_ErrorCode_name = map[int32]string{
|
||||||
|
0: "OK",
|
||||||
|
1: "INVALID_REQUEST",
|
||||||
|
2: "STORAGE_ERROR",
|
||||||
|
}
|
||||||
|
var LogServiceError_ErrorCode_value = map[string]int32{
|
||||||
|
"OK": 0,
|
||||||
|
"INVALID_REQUEST": 1,
|
||||||
|
"STORAGE_ERROR": 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x LogServiceError_ErrorCode) Enum() *LogServiceError_ErrorCode {
|
||||||
|
p := new(LogServiceError_ErrorCode)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x LogServiceError_ErrorCode) String() string {
|
||||||
|
return proto.EnumName(LogServiceError_ErrorCode_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *LogServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(LogServiceError_ErrorCode_value, data, "LogServiceError_ErrorCode")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = LogServiceError_ErrorCode(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogServiceError struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogServiceError) Reset() { *m = LogServiceError{} }
|
||||||
|
func (m *LogServiceError) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogServiceError) ProtoMessage() {}
|
||||||
|
|
||||||
|
type UserAppLogLine struct {
|
||||||
|
TimestampUsec *int64 `protobuf:"varint,1,req,name=timestamp_usec" json:"timestamp_usec,omitempty"`
|
||||||
|
Level *int64 `protobuf:"varint,2,req,name=level" json:"level,omitempty"`
|
||||||
|
Message *string `protobuf:"bytes,3,req,name=message" json:"message,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UserAppLogLine) Reset() { *m = UserAppLogLine{} }
|
||||||
|
func (m *UserAppLogLine) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UserAppLogLine) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *UserAppLogLine) GetTimestampUsec() int64 {
|
||||||
|
if m != nil && m.TimestampUsec != nil {
|
||||||
|
return *m.TimestampUsec
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UserAppLogLine) GetLevel() int64 {
|
||||||
|
if m != nil && m.Level != nil {
|
||||||
|
return *m.Level
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UserAppLogLine) GetMessage() string {
|
||||||
|
if m != nil && m.Message != nil {
|
||||||
|
return *m.Message
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserAppLogGroup struct {
|
||||||
|
LogLine []*UserAppLogLine `protobuf:"bytes,2,rep,name=log_line" json:"log_line,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UserAppLogGroup) Reset() { *m = UserAppLogGroup{} }
|
||||||
|
func (m *UserAppLogGroup) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UserAppLogGroup) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *UserAppLogGroup) GetLogLine() []*UserAppLogLine {
|
||||||
|
if m != nil {
|
||||||
|
return m.LogLine
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlushRequest struct {
|
||||||
|
Logs []byte `protobuf:"bytes,1,opt,name=logs" json:"logs,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *FlushRequest) Reset() { *m = FlushRequest{} }
|
||||||
|
func (m *FlushRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*FlushRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *FlushRequest) GetLogs() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Logs
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SetStatusRequest struct {
|
||||||
|
Status *string `protobuf:"bytes,1,req,name=status" json:"status,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SetStatusRequest) Reset() { *m = SetStatusRequest{} }
|
||||||
|
func (m *SetStatusRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SetStatusRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *SetStatusRequest) GetStatus() string {
|
||||||
|
if m != nil && m.Status != nil {
|
||||||
|
return *m.Status
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogOffset struct {
|
||||||
|
RequestId []byte `protobuf:"bytes,1,opt,name=request_id" json:"request_id,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogOffset) Reset() { *m = LogOffset{} }
|
||||||
|
func (m *LogOffset) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogOffset) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *LogOffset) GetRequestId() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.RequestId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogLine struct {
|
||||||
|
Time *int64 `protobuf:"varint,1,req,name=time" json:"time,omitempty"`
|
||||||
|
Level *int32 `protobuf:"varint,2,req,name=level" json:"level,omitempty"`
|
||||||
|
LogMessage *string `protobuf:"bytes,3,req,name=log_message" json:"log_message,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogLine) Reset() { *m = LogLine{} }
|
||||||
|
func (m *LogLine) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogLine) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *LogLine) GetTime() int64 {
|
||||||
|
if m != nil && m.Time != nil {
|
||||||
|
return *m.Time
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogLine) GetLevel() int32 {
|
||||||
|
if m != nil && m.Level != nil {
|
||||||
|
return *m.Level
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogLine) GetLogMessage() string {
|
||||||
|
if m != nil && m.LogMessage != nil {
|
||||||
|
return *m.LogMessage
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type RequestLog struct {
|
||||||
|
AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"`
|
||||||
|
ModuleId *string `protobuf:"bytes,37,opt,name=module_id,def=default" json:"module_id,omitempty"`
|
||||||
|
VersionId *string `protobuf:"bytes,2,req,name=version_id" json:"version_id,omitempty"`
|
||||||
|
RequestId []byte `protobuf:"bytes,3,req,name=request_id" json:"request_id,omitempty"`
|
||||||
|
Offset *LogOffset `protobuf:"bytes,35,opt,name=offset" json:"offset,omitempty"`
|
||||||
|
Ip *string `protobuf:"bytes,4,req,name=ip" json:"ip,omitempty"`
|
||||||
|
Nickname *string `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"`
|
||||||
|
StartTime *int64 `protobuf:"varint,6,req,name=start_time" json:"start_time,omitempty"`
|
||||||
|
EndTime *int64 `protobuf:"varint,7,req,name=end_time" json:"end_time,omitempty"`
|
||||||
|
Latency *int64 `protobuf:"varint,8,req,name=latency" json:"latency,omitempty"`
|
||||||
|
Mcycles *int64 `protobuf:"varint,9,req,name=mcycles" json:"mcycles,omitempty"`
|
||||||
|
Method *string `protobuf:"bytes,10,req,name=method" json:"method,omitempty"`
|
||||||
|
Resource *string `protobuf:"bytes,11,req,name=resource" json:"resource,omitempty"`
|
||||||
|
HttpVersion *string `protobuf:"bytes,12,req,name=http_version" json:"http_version,omitempty"`
|
||||||
|
Status *int32 `protobuf:"varint,13,req,name=status" json:"status,omitempty"`
|
||||||
|
ResponseSize *int64 `protobuf:"varint,14,req,name=response_size" json:"response_size,omitempty"`
|
||||||
|
Referrer *string `protobuf:"bytes,15,opt,name=referrer" json:"referrer,omitempty"`
|
||||||
|
UserAgent *string `protobuf:"bytes,16,opt,name=user_agent" json:"user_agent,omitempty"`
|
||||||
|
UrlMapEntry *string `protobuf:"bytes,17,req,name=url_map_entry" json:"url_map_entry,omitempty"`
|
||||||
|
Combined *string `protobuf:"bytes,18,req,name=combined" json:"combined,omitempty"`
|
||||||
|
ApiMcycles *int64 `protobuf:"varint,19,opt,name=api_mcycles" json:"api_mcycles,omitempty"`
|
||||||
|
Host *string `protobuf:"bytes,20,opt,name=host" json:"host,omitempty"`
|
||||||
|
Cost *float64 `protobuf:"fixed64,21,opt,name=cost" json:"cost,omitempty"`
|
||||||
|
TaskQueueName *string `protobuf:"bytes,22,opt,name=task_queue_name" json:"task_queue_name,omitempty"`
|
||||||
|
TaskName *string `protobuf:"bytes,23,opt,name=task_name" json:"task_name,omitempty"`
|
||||||
|
WasLoadingRequest *bool `protobuf:"varint,24,opt,name=was_loading_request" json:"was_loading_request,omitempty"`
|
||||||
|
PendingTime *int64 `protobuf:"varint,25,opt,name=pending_time" json:"pending_time,omitempty"`
|
||||||
|
ReplicaIndex *int32 `protobuf:"varint,26,opt,name=replica_index,def=-1" json:"replica_index,omitempty"`
|
||||||
|
Finished *bool `protobuf:"varint,27,opt,name=finished,def=1" json:"finished,omitempty"`
|
||||||
|
CloneKey []byte `protobuf:"bytes,28,opt,name=clone_key" json:"clone_key,omitempty"`
|
||||||
|
Line []*LogLine `protobuf:"bytes,29,rep,name=line" json:"line,omitempty"`
|
||||||
|
LinesIncomplete *bool `protobuf:"varint,36,opt,name=lines_incomplete" json:"lines_incomplete,omitempty"`
|
||||||
|
AppEngineRelease []byte `protobuf:"bytes,38,opt,name=app_engine_release" json:"app_engine_release,omitempty"`
|
||||||
|
ExitReason *int32 `protobuf:"varint,30,opt,name=exit_reason" json:"exit_reason,omitempty"`
|
||||||
|
WasThrottledForTime *bool `protobuf:"varint,31,opt,name=was_throttled_for_time" json:"was_throttled_for_time,omitempty"`
|
||||||
|
WasThrottledForRequests *bool `protobuf:"varint,32,opt,name=was_throttled_for_requests" json:"was_throttled_for_requests,omitempty"`
|
||||||
|
ThrottledTime *int64 `protobuf:"varint,33,opt,name=throttled_time" json:"throttled_time,omitempty"`
|
||||||
|
ServerName []byte `protobuf:"bytes,34,opt,name=server_name" json:"server_name,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) Reset() { *m = RequestLog{} }
|
||||||
|
func (m *RequestLog) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*RequestLog) ProtoMessage() {}
|
||||||
|
|
||||||
|
const Default_RequestLog_ModuleId string = "default"
|
||||||
|
const Default_RequestLog_ReplicaIndex int32 = -1
|
||||||
|
const Default_RequestLog_Finished bool = true
|
||||||
|
|
||||||
|
func (m *RequestLog) GetAppId() string {
|
||||||
|
if m != nil && m.AppId != nil {
|
||||||
|
return *m.AppId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetModuleId() string {
|
||||||
|
if m != nil && m.ModuleId != nil {
|
||||||
|
return *m.ModuleId
|
||||||
|
}
|
||||||
|
return Default_RequestLog_ModuleId
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetVersionId() string {
|
||||||
|
if m != nil && m.VersionId != nil {
|
||||||
|
return *m.VersionId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetRequestId() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.RequestId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetOffset() *LogOffset {
|
||||||
|
if m != nil {
|
||||||
|
return m.Offset
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetIp() string {
|
||||||
|
if m != nil && m.Ip != nil {
|
||||||
|
return *m.Ip
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetNickname() string {
|
||||||
|
if m != nil && m.Nickname != nil {
|
||||||
|
return *m.Nickname
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetStartTime() int64 {
|
||||||
|
if m != nil && m.StartTime != nil {
|
||||||
|
return *m.StartTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetEndTime() int64 {
|
||||||
|
if m != nil && m.EndTime != nil {
|
||||||
|
return *m.EndTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetLatency() int64 {
|
||||||
|
if m != nil && m.Latency != nil {
|
||||||
|
return *m.Latency
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetMcycles() int64 {
|
||||||
|
if m != nil && m.Mcycles != nil {
|
||||||
|
return *m.Mcycles
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetMethod() string {
|
||||||
|
if m != nil && m.Method != nil {
|
||||||
|
return *m.Method
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetResource() string {
|
||||||
|
if m != nil && m.Resource != nil {
|
||||||
|
return *m.Resource
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetHttpVersion() string {
|
||||||
|
if m != nil && m.HttpVersion != nil {
|
||||||
|
return *m.HttpVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetStatus() int32 {
|
||||||
|
if m != nil && m.Status != nil {
|
||||||
|
return *m.Status
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetResponseSize() int64 {
|
||||||
|
if m != nil && m.ResponseSize != nil {
|
||||||
|
return *m.ResponseSize
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetReferrer() string {
|
||||||
|
if m != nil && m.Referrer != nil {
|
||||||
|
return *m.Referrer
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetUserAgent() string {
|
||||||
|
if m != nil && m.UserAgent != nil {
|
||||||
|
return *m.UserAgent
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetUrlMapEntry() string {
|
||||||
|
if m != nil && m.UrlMapEntry != nil {
|
||||||
|
return *m.UrlMapEntry
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetCombined() string {
|
||||||
|
if m != nil && m.Combined != nil {
|
||||||
|
return *m.Combined
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetApiMcycles() int64 {
|
||||||
|
if m != nil && m.ApiMcycles != nil {
|
||||||
|
return *m.ApiMcycles
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetHost() string {
|
||||||
|
if m != nil && m.Host != nil {
|
||||||
|
return *m.Host
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetCost() float64 {
|
||||||
|
if m != nil && m.Cost != nil {
|
||||||
|
return *m.Cost
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetTaskQueueName() string {
|
||||||
|
if m != nil && m.TaskQueueName != nil {
|
||||||
|
return *m.TaskQueueName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetTaskName() string {
|
||||||
|
if m != nil && m.TaskName != nil {
|
||||||
|
return *m.TaskName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetWasLoadingRequest() bool {
|
||||||
|
if m != nil && m.WasLoadingRequest != nil {
|
||||||
|
return *m.WasLoadingRequest
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetPendingTime() int64 {
|
||||||
|
if m != nil && m.PendingTime != nil {
|
||||||
|
return *m.PendingTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetReplicaIndex() int32 {
|
||||||
|
if m != nil && m.ReplicaIndex != nil {
|
||||||
|
return *m.ReplicaIndex
|
||||||
|
}
|
||||||
|
return Default_RequestLog_ReplicaIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetFinished() bool {
|
||||||
|
if m != nil && m.Finished != nil {
|
||||||
|
return *m.Finished
|
||||||
|
}
|
||||||
|
return Default_RequestLog_Finished
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetCloneKey() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.CloneKey
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetLine() []*LogLine {
|
||||||
|
if m != nil {
|
||||||
|
return m.Line
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetLinesIncomplete() bool {
|
||||||
|
if m != nil && m.LinesIncomplete != nil {
|
||||||
|
return *m.LinesIncomplete
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetAppEngineRelease() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.AppEngineRelease
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetExitReason() int32 {
|
||||||
|
if m != nil && m.ExitReason != nil {
|
||||||
|
return *m.ExitReason
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetWasThrottledForTime() bool {
|
||||||
|
if m != nil && m.WasThrottledForTime != nil {
|
||||||
|
return *m.WasThrottledForTime
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetWasThrottledForRequests() bool {
|
||||||
|
if m != nil && m.WasThrottledForRequests != nil {
|
||||||
|
return *m.WasThrottledForRequests
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetThrottledTime() int64 {
|
||||||
|
if m != nil && m.ThrottledTime != nil {
|
||||||
|
return *m.ThrottledTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RequestLog) GetServerName() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.ServerName
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogModuleVersion struct {
|
||||||
|
ModuleId *string `protobuf:"bytes,1,opt,name=module_id,def=default" json:"module_id,omitempty"`
|
||||||
|
VersionId *string `protobuf:"bytes,2,opt,name=version_id" json:"version_id,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogModuleVersion) Reset() { *m = LogModuleVersion{} }
|
||||||
|
func (m *LogModuleVersion) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogModuleVersion) ProtoMessage() {}
|
||||||
|
|
||||||
|
const Default_LogModuleVersion_ModuleId string = "default"
|
||||||
|
|
||||||
|
func (m *LogModuleVersion) GetModuleId() string {
|
||||||
|
if m != nil && m.ModuleId != nil {
|
||||||
|
return *m.ModuleId
|
||||||
|
}
|
||||||
|
return Default_LogModuleVersion_ModuleId
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogModuleVersion) GetVersionId() string {
|
||||||
|
if m != nil && m.VersionId != nil {
|
||||||
|
return *m.VersionId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogReadRequest struct {
|
||||||
|
AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"`
|
||||||
|
VersionId []string `protobuf:"bytes,2,rep,name=version_id" json:"version_id,omitempty"`
|
||||||
|
ModuleVersion []*LogModuleVersion `protobuf:"bytes,19,rep,name=module_version" json:"module_version,omitempty"`
|
||||||
|
StartTime *int64 `protobuf:"varint,3,opt,name=start_time" json:"start_time,omitempty"`
|
||||||
|
EndTime *int64 `protobuf:"varint,4,opt,name=end_time" json:"end_time,omitempty"`
|
||||||
|
Offset *LogOffset `protobuf:"bytes,5,opt,name=offset" json:"offset,omitempty"`
|
||||||
|
RequestId [][]byte `protobuf:"bytes,6,rep,name=request_id" json:"request_id,omitempty"`
|
||||||
|
MinimumLogLevel *int32 `protobuf:"varint,7,opt,name=minimum_log_level" json:"minimum_log_level,omitempty"`
|
||||||
|
IncludeIncomplete *bool `protobuf:"varint,8,opt,name=include_incomplete" json:"include_incomplete,omitempty"`
|
||||||
|
Count *int64 `protobuf:"varint,9,opt,name=count" json:"count,omitempty"`
|
||||||
|
CombinedLogRegex *string `protobuf:"bytes,14,opt,name=combined_log_regex" json:"combined_log_regex,omitempty"`
|
||||||
|
HostRegex *string `protobuf:"bytes,15,opt,name=host_regex" json:"host_regex,omitempty"`
|
||||||
|
ReplicaIndex *int32 `protobuf:"varint,16,opt,name=replica_index" json:"replica_index,omitempty"`
|
||||||
|
IncludeAppLogs *bool `protobuf:"varint,10,opt,name=include_app_logs" json:"include_app_logs,omitempty"`
|
||||||
|
AppLogsPerRequest *int32 `protobuf:"varint,17,opt,name=app_logs_per_request" json:"app_logs_per_request,omitempty"`
|
||||||
|
IncludeHost *bool `protobuf:"varint,11,opt,name=include_host" json:"include_host,omitempty"`
|
||||||
|
IncludeAll *bool `protobuf:"varint,12,opt,name=include_all" json:"include_all,omitempty"`
|
||||||
|
CacheIterator *bool `protobuf:"varint,13,opt,name=cache_iterator" json:"cache_iterator,omitempty"`
|
||||||
|
NumShards *int32 `protobuf:"varint,18,opt,name=num_shards" json:"num_shards,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) Reset() { *m = LogReadRequest{} }
|
||||||
|
func (m *LogReadRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogReadRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetAppId() string {
|
||||||
|
if m != nil && m.AppId != nil {
|
||||||
|
return *m.AppId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetVersionId() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.VersionId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetModuleVersion() []*LogModuleVersion {
|
||||||
|
if m != nil {
|
||||||
|
return m.ModuleVersion
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetStartTime() int64 {
|
||||||
|
if m != nil && m.StartTime != nil {
|
||||||
|
return *m.StartTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetEndTime() int64 {
|
||||||
|
if m != nil && m.EndTime != nil {
|
||||||
|
return *m.EndTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetOffset() *LogOffset {
|
||||||
|
if m != nil {
|
||||||
|
return m.Offset
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetRequestId() [][]byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.RequestId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetMinimumLogLevel() int32 {
|
||||||
|
if m != nil && m.MinimumLogLevel != nil {
|
||||||
|
return *m.MinimumLogLevel
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetIncludeIncomplete() bool {
|
||||||
|
if m != nil && m.IncludeIncomplete != nil {
|
||||||
|
return *m.IncludeIncomplete
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetCount() int64 {
|
||||||
|
if m != nil && m.Count != nil {
|
||||||
|
return *m.Count
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetCombinedLogRegex() string {
|
||||||
|
if m != nil && m.CombinedLogRegex != nil {
|
||||||
|
return *m.CombinedLogRegex
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetHostRegex() string {
|
||||||
|
if m != nil && m.HostRegex != nil {
|
||||||
|
return *m.HostRegex
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetReplicaIndex() int32 {
|
||||||
|
if m != nil && m.ReplicaIndex != nil {
|
||||||
|
return *m.ReplicaIndex
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetIncludeAppLogs() bool {
|
||||||
|
if m != nil && m.IncludeAppLogs != nil {
|
||||||
|
return *m.IncludeAppLogs
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetAppLogsPerRequest() int32 {
|
||||||
|
if m != nil && m.AppLogsPerRequest != nil {
|
||||||
|
return *m.AppLogsPerRequest
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetIncludeHost() bool {
|
||||||
|
if m != nil && m.IncludeHost != nil {
|
||||||
|
return *m.IncludeHost
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetIncludeAll() bool {
|
||||||
|
if m != nil && m.IncludeAll != nil {
|
||||||
|
return *m.IncludeAll
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetCacheIterator() bool {
|
||||||
|
if m != nil && m.CacheIterator != nil {
|
||||||
|
return *m.CacheIterator
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadRequest) GetNumShards() int32 {
|
||||||
|
if m != nil && m.NumShards != nil {
|
||||||
|
return *m.NumShards
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogReadResponse struct {
|
||||||
|
Log []*RequestLog `protobuf:"bytes,1,rep,name=log" json:"log,omitempty"`
|
||||||
|
Offset *LogOffset `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
|
||||||
|
LastEndTime *int64 `protobuf:"varint,3,opt,name=last_end_time" json:"last_end_time,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadResponse) Reset() { *m = LogReadResponse{} }
|
||||||
|
func (m *LogReadResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogReadResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *LogReadResponse) GetLog() []*RequestLog {
|
||||||
|
if m != nil {
|
||||||
|
return m.Log
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadResponse) GetOffset() *LogOffset {
|
||||||
|
if m != nil {
|
||||||
|
return m.Offset
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogReadResponse) GetLastEndTime() int64 {
|
||||||
|
if m != nil && m.LastEndTime != nil {
|
||||||
|
return *m.LastEndTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogUsageRecord struct {
|
||||||
|
VersionId *string `protobuf:"bytes,1,opt,name=version_id" json:"version_id,omitempty"`
|
||||||
|
StartTime *int32 `protobuf:"varint,2,opt,name=start_time" json:"start_time,omitempty"`
|
||||||
|
EndTime *int32 `protobuf:"varint,3,opt,name=end_time" json:"end_time,omitempty"`
|
||||||
|
Count *int64 `protobuf:"varint,4,opt,name=count" json:"count,omitempty"`
|
||||||
|
TotalSize *int64 `protobuf:"varint,5,opt,name=total_size" json:"total_size,omitempty"`
|
||||||
|
Records *int32 `protobuf:"varint,6,opt,name=records" json:"records,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) Reset() { *m = LogUsageRecord{} }
|
||||||
|
func (m *LogUsageRecord) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogUsageRecord) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) GetVersionId() string {
|
||||||
|
if m != nil && m.VersionId != nil {
|
||||||
|
return *m.VersionId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) GetStartTime() int32 {
|
||||||
|
if m != nil && m.StartTime != nil {
|
||||||
|
return *m.StartTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) GetEndTime() int32 {
|
||||||
|
if m != nil && m.EndTime != nil {
|
||||||
|
return *m.EndTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) GetCount() int64 {
|
||||||
|
if m != nil && m.Count != nil {
|
||||||
|
return *m.Count
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) GetTotalSize() int64 {
|
||||||
|
if m != nil && m.TotalSize != nil {
|
||||||
|
return *m.TotalSize
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRecord) GetRecords() int32 {
|
||||||
|
if m != nil && m.Records != nil {
|
||||||
|
return *m.Records
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogUsageRequest struct {
|
||||||
|
AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"`
|
||||||
|
VersionId []string `protobuf:"bytes,2,rep,name=version_id" json:"version_id,omitempty"`
|
||||||
|
StartTime *int32 `protobuf:"varint,3,opt,name=start_time" json:"start_time,omitempty"`
|
||||||
|
EndTime *int32 `protobuf:"varint,4,opt,name=end_time" json:"end_time,omitempty"`
|
||||||
|
ResolutionHours *uint32 `protobuf:"varint,5,opt,name=resolution_hours,def=1" json:"resolution_hours,omitempty"`
|
||||||
|
CombineVersions *bool `protobuf:"varint,6,opt,name=combine_versions" json:"combine_versions,omitempty"`
|
||||||
|
UsageVersion *int32 `protobuf:"varint,7,opt,name=usage_version" json:"usage_version,omitempty"`
|
||||||
|
VersionsOnly *bool `protobuf:"varint,8,opt,name=versions_only" json:"versions_only,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) Reset() { *m = LogUsageRequest{} }
|
||||||
|
func (m *LogUsageRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogUsageRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
const Default_LogUsageRequest_ResolutionHours uint32 = 1
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetAppId() string {
|
||||||
|
if m != nil && m.AppId != nil {
|
||||||
|
return *m.AppId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetVersionId() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.VersionId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetStartTime() int32 {
|
||||||
|
if m != nil && m.StartTime != nil {
|
||||||
|
return *m.StartTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetEndTime() int32 {
|
||||||
|
if m != nil && m.EndTime != nil {
|
||||||
|
return *m.EndTime
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetResolutionHours() uint32 {
|
||||||
|
if m != nil && m.ResolutionHours != nil {
|
||||||
|
return *m.ResolutionHours
|
||||||
|
}
|
||||||
|
return Default_LogUsageRequest_ResolutionHours
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetCombineVersions() bool {
|
||||||
|
if m != nil && m.CombineVersions != nil {
|
||||||
|
return *m.CombineVersions
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetUsageVersion() int32 {
|
||||||
|
if m != nil && m.UsageVersion != nil {
|
||||||
|
return *m.UsageVersion
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageRequest) GetVersionsOnly() bool {
|
||||||
|
if m != nil && m.VersionsOnly != nil {
|
||||||
|
return *m.VersionsOnly
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type LogUsageResponse struct {
|
||||||
|
Usage []*LogUsageRecord `protobuf:"bytes,1,rep,name=usage" json:"usage,omitempty"`
|
||||||
|
Summary *LogUsageRecord `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageResponse) Reset() { *m = LogUsageResponse{} }
|
||||||
|
func (m *LogUsageResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*LogUsageResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *LogUsageResponse) GetUsage() []*LogUsageRecord {
|
||||||
|
if m != nil {
|
||||||
|
return m.Usage
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *LogUsageResponse) GetSummary() *LogUsageRecord {
|
||||||
|
if m != nil {
|
||||||
|
return m.Summary
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
}
|
150
vendor/google.golang.org/appengine/internal/log/log_service.proto
generated
vendored
Normal file
150
vendor/google.golang.org/appengine/internal/log/log_service.proto
generated
vendored
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "log";
|
||||||
|
|
||||||
|
package appengine;
|
||||||
|
|
||||||
|
message LogServiceError {
|
||||||
|
enum ErrorCode {
|
||||||
|
OK = 0;
|
||||||
|
INVALID_REQUEST = 1;
|
||||||
|
STORAGE_ERROR = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message UserAppLogLine {
|
||||||
|
required int64 timestamp_usec = 1;
|
||||||
|
required int64 level = 2;
|
||||||
|
required string message = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UserAppLogGroup {
|
||||||
|
repeated UserAppLogLine log_line = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FlushRequest {
|
||||||
|
optional bytes logs = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SetStatusRequest {
|
||||||
|
required string status = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message LogOffset {
|
||||||
|
optional bytes request_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogLine {
|
||||||
|
required int64 time = 1;
|
||||||
|
required int32 level = 2;
|
||||||
|
required string log_message = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message RequestLog {
|
||||||
|
required string app_id = 1;
|
||||||
|
optional string module_id = 37 [default="default"];
|
||||||
|
required string version_id = 2;
|
||||||
|
required bytes request_id = 3;
|
||||||
|
optional LogOffset offset = 35;
|
||||||
|
required string ip = 4;
|
||||||
|
optional string nickname = 5;
|
||||||
|
required int64 start_time = 6;
|
||||||
|
required int64 end_time = 7;
|
||||||
|
required int64 latency = 8;
|
||||||
|
required int64 mcycles = 9;
|
||||||
|
required string method = 10;
|
||||||
|
required string resource = 11;
|
||||||
|
required string http_version = 12;
|
||||||
|
required int32 status = 13;
|
||||||
|
required int64 response_size = 14;
|
||||||
|
optional string referrer = 15;
|
||||||
|
optional string user_agent = 16;
|
||||||
|
required string url_map_entry = 17;
|
||||||
|
required string combined = 18;
|
||||||
|
optional int64 api_mcycles = 19;
|
||||||
|
optional string host = 20;
|
||||||
|
optional double cost = 21;
|
||||||
|
|
||||||
|
optional string task_queue_name = 22;
|
||||||
|
optional string task_name = 23;
|
||||||
|
|
||||||
|
optional bool was_loading_request = 24;
|
||||||
|
optional int64 pending_time = 25;
|
||||||
|
optional int32 replica_index = 26 [default = -1];
|
||||||
|
optional bool finished = 27 [default = true];
|
||||||
|
optional bytes clone_key = 28;
|
||||||
|
|
||||||
|
repeated LogLine line = 29;
|
||||||
|
|
||||||
|
optional bool lines_incomplete = 36;
|
||||||
|
optional bytes app_engine_release = 38;
|
||||||
|
|
||||||
|
optional int32 exit_reason = 30;
|
||||||
|
optional bool was_throttled_for_time = 31;
|
||||||
|
optional bool was_throttled_for_requests = 32;
|
||||||
|
optional int64 throttled_time = 33;
|
||||||
|
|
||||||
|
optional bytes server_name = 34;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogModuleVersion {
|
||||||
|
optional string module_id = 1 [default="default"];
|
||||||
|
optional string version_id = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogReadRequest {
|
||||||
|
required string app_id = 1;
|
||||||
|
repeated string version_id = 2;
|
||||||
|
repeated LogModuleVersion module_version = 19;
|
||||||
|
|
||||||
|
optional int64 start_time = 3;
|
||||||
|
optional int64 end_time = 4;
|
||||||
|
optional LogOffset offset = 5;
|
||||||
|
repeated bytes request_id = 6;
|
||||||
|
|
||||||
|
optional int32 minimum_log_level = 7;
|
||||||
|
optional bool include_incomplete = 8;
|
||||||
|
optional int64 count = 9;
|
||||||
|
|
||||||
|
optional string combined_log_regex = 14;
|
||||||
|
optional string host_regex = 15;
|
||||||
|
optional int32 replica_index = 16;
|
||||||
|
|
||||||
|
optional bool include_app_logs = 10;
|
||||||
|
optional int32 app_logs_per_request = 17;
|
||||||
|
optional bool include_host = 11;
|
||||||
|
optional bool include_all = 12;
|
||||||
|
optional bool cache_iterator = 13;
|
||||||
|
optional int32 num_shards = 18;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogReadResponse {
|
||||||
|
repeated RequestLog log = 1;
|
||||||
|
optional LogOffset offset = 2;
|
||||||
|
optional int64 last_end_time = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogUsageRecord {
|
||||||
|
optional string version_id = 1;
|
||||||
|
optional int32 start_time = 2;
|
||||||
|
optional int32 end_time = 3;
|
||||||
|
optional int64 count = 4;
|
||||||
|
optional int64 total_size = 5;
|
||||||
|
optional int32 records = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogUsageRequest {
|
||||||
|
required string app_id = 1;
|
||||||
|
repeated string version_id = 2;
|
||||||
|
optional int32 start_time = 3;
|
||||||
|
optional int32 end_time = 4;
|
||||||
|
optional uint32 resolution_hours = 5 [default = 1];
|
||||||
|
optional bool combine_versions = 6;
|
||||||
|
optional int32 usage_version = 7;
|
||||||
|
optional bool versions_only = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LogUsageResponse {
|
||||||
|
repeated LogUsageRecord usage = 1;
|
||||||
|
optional LogUsageRecord summary = 2;
|
||||||
|
}
|
15
vendor/google.golang.org/appengine/internal/main.go
generated
vendored
Normal file
15
vendor/google.golang.org/appengine/internal/main.go
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build appengine
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"appengine_internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Main() {
|
||||||
|
appengine_internal.Main()
|
||||||
|
}
|
44
vendor/google.golang.org/appengine/internal/main_vm.go
generated
vendored
Normal file
44
vendor/google.golang.org/appengine/internal/main_vm.go
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build !appengine
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Main() {
|
||||||
|
installHealthChecker(http.DefaultServeMux)
|
||||||
|
|
||||||
|
port := "8080"
|
||||||
|
if s := os.Getenv("PORT"); s != "" {
|
||||||
|
port = s
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := http.ListenAndServe(":"+port, http.HandlerFunc(handleHTTP)); err != nil {
|
||||||
|
log.Fatalf("http.ListenAndServe: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func installHealthChecker(mux *http.ServeMux) {
|
||||||
|
// If no health check handler has been installed by this point, add a trivial one.
|
||||||
|
const healthPath = "/_ah/health"
|
||||||
|
hreq := &http.Request{
|
||||||
|
Method: "GET",
|
||||||
|
URL: &url.URL{
|
||||||
|
Path: healthPath,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if _, pat := mux.Handler(hreq); pat != healthPath {
|
||||||
|
mux.HandleFunc(healthPath, func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
io.WriteString(w, "ok")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
61
vendor/google.golang.org/appengine/internal/metadata.go
generated
vendored
Normal file
61
vendor/google.golang.org/appengine/internal/metadata.go
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// Copyright 2014 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
// This file has code for accessing metadata.
|
||||||
|
//
|
||||||
|
// References:
|
||||||
|
// https://cloud.google.com/compute/docs/metadata
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
metadataHost = "metadata"
|
||||||
|
metadataPath = "/computeMetadata/v1/"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
metadataRequestHeaders = http.Header{
|
||||||
|
"Metadata-Flavor": []string{"Google"},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// TODO(dsymonds): Do we need to support default values, like Python?
|
||||||
|
func mustGetMetadata(key string) []byte {
|
||||||
|
b, err := getMetadata(key)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Metadata fetch failed: %v", err)
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
func getMetadata(key string) ([]byte, error) {
|
||||||
|
// TODO(dsymonds): May need to use url.Parse to support keys with query args.
|
||||||
|
req := &http.Request{
|
||||||
|
Method: "GET",
|
||||||
|
URL: &url.URL{
|
||||||
|
Scheme: "http",
|
||||||
|
Host: metadataHost,
|
||||||
|
Path: metadataPath + key,
|
||||||
|
},
|
||||||
|
Header: metadataRequestHeaders,
|
||||||
|
Host: metadataHost,
|
||||||
|
}
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return nil, fmt.Errorf("metadata server returned HTTP %d", resp.StatusCode)
|
||||||
|
}
|
||||||
|
return ioutil.ReadAll(resp.Body)
|
||||||
|
}
|
375
vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go
generated
vendored
Normal file
375
vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go
generated
vendored
Normal file
@ -0,0 +1,375 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: google.golang.org/appengine/internal/modules/modules_service.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package modules is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
google.golang.org/appengine/internal/modules/modules_service.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
ModulesServiceError
|
||||||
|
GetModulesRequest
|
||||||
|
GetModulesResponse
|
||||||
|
GetVersionsRequest
|
||||||
|
GetVersionsResponse
|
||||||
|
GetDefaultVersionRequest
|
||||||
|
GetDefaultVersionResponse
|
||||||
|
GetNumInstancesRequest
|
||||||
|
GetNumInstancesResponse
|
||||||
|
SetNumInstancesRequest
|
||||||
|
SetNumInstancesResponse
|
||||||
|
StartModuleRequest
|
||||||
|
StartModuleResponse
|
||||||
|
StopModuleRequest
|
||||||
|
StopModuleResponse
|
||||||
|
GetHostnameRequest
|
||||||
|
GetHostnameResponse
|
||||||
|
*/
|
||||||
|
package modules
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type ModulesServiceError_ErrorCode int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
ModulesServiceError_OK ModulesServiceError_ErrorCode = 0
|
||||||
|
ModulesServiceError_INVALID_MODULE ModulesServiceError_ErrorCode = 1
|
||||||
|
ModulesServiceError_INVALID_VERSION ModulesServiceError_ErrorCode = 2
|
||||||
|
ModulesServiceError_INVALID_INSTANCES ModulesServiceError_ErrorCode = 3
|
||||||
|
ModulesServiceError_TRANSIENT_ERROR ModulesServiceError_ErrorCode = 4
|
||||||
|
ModulesServiceError_UNEXPECTED_STATE ModulesServiceError_ErrorCode = 5
|
||||||
|
)
|
||||||
|
|
||||||
|
var ModulesServiceError_ErrorCode_name = map[int32]string{
|
||||||
|
0: "OK",
|
||||||
|
1: "INVALID_MODULE",
|
||||||
|
2: "INVALID_VERSION",
|
||||||
|
3: "INVALID_INSTANCES",
|
||||||
|
4: "TRANSIENT_ERROR",
|
||||||
|
5: "UNEXPECTED_STATE",
|
||||||
|
}
|
||||||
|
var ModulesServiceError_ErrorCode_value = map[string]int32{
|
||||||
|
"OK": 0,
|
||||||
|
"INVALID_MODULE": 1,
|
||||||
|
"INVALID_VERSION": 2,
|
||||||
|
"INVALID_INSTANCES": 3,
|
||||||
|
"TRANSIENT_ERROR": 4,
|
||||||
|
"UNEXPECTED_STATE": 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x ModulesServiceError_ErrorCode) Enum() *ModulesServiceError_ErrorCode {
|
||||||
|
p := new(ModulesServiceError_ErrorCode)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x ModulesServiceError_ErrorCode) String() string {
|
||||||
|
return proto.EnumName(ModulesServiceError_ErrorCode_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *ModulesServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(ModulesServiceError_ErrorCode_value, data, "ModulesServiceError_ErrorCode")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = ModulesServiceError_ErrorCode(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModulesServiceError struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ModulesServiceError) Reset() { *m = ModulesServiceError{} }
|
||||||
|
func (m *ModulesServiceError) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*ModulesServiceError) ProtoMessage() {}
|
||||||
|
|
||||||
|
type GetModulesRequest struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetModulesRequest) Reset() { *m = GetModulesRequest{} }
|
||||||
|
func (m *GetModulesRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetModulesRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
type GetModulesResponse struct {
|
||||||
|
Module []string `protobuf:"bytes,1,rep,name=module" json:"module,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetModulesResponse) Reset() { *m = GetModulesResponse{} }
|
||||||
|
func (m *GetModulesResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetModulesResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetModulesResponse) GetModule() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Module
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetVersionsRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetVersionsRequest) Reset() { *m = GetVersionsRequest{} }
|
||||||
|
func (m *GetVersionsRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetVersionsRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetVersionsRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetVersionsResponse struct {
|
||||||
|
Version []string `protobuf:"bytes,1,rep,name=version" json:"version,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetVersionsResponse) Reset() { *m = GetVersionsResponse{} }
|
||||||
|
func (m *GetVersionsResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetVersionsResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetVersionsResponse) GetVersion() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Version
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetDefaultVersionRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetDefaultVersionRequest) Reset() { *m = GetDefaultVersionRequest{} }
|
||||||
|
func (m *GetDefaultVersionRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetDefaultVersionRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetDefaultVersionRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetDefaultVersionResponse struct {
|
||||||
|
Version *string `protobuf:"bytes,1,req,name=version" json:"version,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetDefaultVersionResponse) Reset() { *m = GetDefaultVersionResponse{} }
|
||||||
|
func (m *GetDefaultVersionResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetDefaultVersionResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetDefaultVersionResponse) GetVersion() string {
|
||||||
|
if m != nil && m.Version != nil {
|
||||||
|
return *m.Version
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetNumInstancesRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
|
||||||
|
Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetNumInstancesRequest) Reset() { *m = GetNumInstancesRequest{} }
|
||||||
|
func (m *GetNumInstancesRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetNumInstancesRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetNumInstancesRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetNumInstancesRequest) GetVersion() string {
|
||||||
|
if m != nil && m.Version != nil {
|
||||||
|
return *m.Version
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetNumInstancesResponse struct {
|
||||||
|
Instances *int64 `protobuf:"varint,1,req,name=instances" json:"instances,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetNumInstancesResponse) Reset() { *m = GetNumInstancesResponse{} }
|
||||||
|
func (m *GetNumInstancesResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetNumInstancesResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetNumInstancesResponse) GetInstances() int64 {
|
||||||
|
if m != nil && m.Instances != nil {
|
||||||
|
return *m.Instances
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type SetNumInstancesRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
|
||||||
|
Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
|
||||||
|
Instances *int64 `protobuf:"varint,3,req,name=instances" json:"instances,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SetNumInstancesRequest) Reset() { *m = SetNumInstancesRequest{} }
|
||||||
|
func (m *SetNumInstancesRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SetNumInstancesRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *SetNumInstancesRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SetNumInstancesRequest) GetVersion() string {
|
||||||
|
if m != nil && m.Version != nil {
|
||||||
|
return *m.Version
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SetNumInstancesRequest) GetInstances() int64 {
|
||||||
|
if m != nil && m.Instances != nil {
|
||||||
|
return *m.Instances
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type SetNumInstancesResponse struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SetNumInstancesResponse) Reset() { *m = SetNumInstancesResponse{} }
|
||||||
|
func (m *SetNumInstancesResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SetNumInstancesResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
type StartModuleRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,req,name=module" json:"module,omitempty"`
|
||||||
|
Version *string `protobuf:"bytes,2,req,name=version" json:"version,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StartModuleRequest) Reset() { *m = StartModuleRequest{} }
|
||||||
|
func (m *StartModuleRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*StartModuleRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *StartModuleRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StartModuleRequest) GetVersion() string {
|
||||||
|
if m != nil && m.Version != nil {
|
||||||
|
return *m.Version
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type StartModuleResponse struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StartModuleResponse) Reset() { *m = StartModuleResponse{} }
|
||||||
|
func (m *StartModuleResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*StartModuleResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
type StopModuleRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
|
||||||
|
Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StopModuleRequest) Reset() { *m = StopModuleRequest{} }
|
||||||
|
func (m *StopModuleRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*StopModuleRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *StopModuleRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StopModuleRequest) GetVersion() string {
|
||||||
|
if m != nil && m.Version != nil {
|
||||||
|
return *m.Version
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type StopModuleResponse struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StopModuleResponse) Reset() { *m = StopModuleResponse{} }
|
||||||
|
func (m *StopModuleResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*StopModuleResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
type GetHostnameRequest struct {
|
||||||
|
Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
|
||||||
|
Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
|
||||||
|
Instance *string `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetHostnameRequest) Reset() { *m = GetHostnameRequest{} }
|
||||||
|
func (m *GetHostnameRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetHostnameRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetHostnameRequest) GetModule() string {
|
||||||
|
if m != nil && m.Module != nil {
|
||||||
|
return *m.Module
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetHostnameRequest) GetVersion() string {
|
||||||
|
if m != nil && m.Version != nil {
|
||||||
|
return *m.Version
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetHostnameRequest) GetInstance() string {
|
||||||
|
if m != nil && m.Instance != nil {
|
||||||
|
return *m.Instance
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetHostnameResponse struct {
|
||||||
|
Hostname *string `protobuf:"bytes,1,req,name=hostname" json:"hostname,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GetHostnameResponse) Reset() { *m = GetHostnameResponse{} }
|
||||||
|
func (m *GetHostnameResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GetHostnameResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *GetHostnameResponse) GetHostname() string {
|
||||||
|
if m != nil && m.Hostname != nil {
|
||||||
|
return *m.Hostname
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
}
|
80
vendor/google.golang.org/appengine/internal/modules/modules_service.proto
generated
vendored
Normal file
80
vendor/google.golang.org/appengine/internal/modules/modules_service.proto
generated
vendored
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "modules";
|
||||||
|
|
||||||
|
package appengine;
|
||||||
|
|
||||||
|
message ModulesServiceError {
|
||||||
|
enum ErrorCode {
|
||||||
|
OK = 0;
|
||||||
|
INVALID_MODULE = 1;
|
||||||
|
INVALID_VERSION = 2;
|
||||||
|
INVALID_INSTANCES = 3;
|
||||||
|
TRANSIENT_ERROR = 4;
|
||||||
|
UNEXPECTED_STATE = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetModulesRequest {
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetModulesResponse {
|
||||||
|
repeated string module = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetVersionsRequest {
|
||||||
|
optional string module = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetVersionsResponse {
|
||||||
|
repeated string version = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetDefaultVersionRequest {
|
||||||
|
optional string module = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetDefaultVersionResponse {
|
||||||
|
required string version = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetNumInstancesRequest {
|
||||||
|
optional string module = 1;
|
||||||
|
optional string version = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetNumInstancesResponse {
|
||||||
|
required int64 instances = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SetNumInstancesRequest {
|
||||||
|
optional string module = 1;
|
||||||
|
optional string version = 2;
|
||||||
|
required int64 instances = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SetNumInstancesResponse {}
|
||||||
|
|
||||||
|
message StartModuleRequest {
|
||||||
|
required string module = 1;
|
||||||
|
required string version = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message StartModuleResponse {}
|
||||||
|
|
||||||
|
message StopModuleRequest {
|
||||||
|
optional string module = 1;
|
||||||
|
optional string version = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message StopModuleResponse {}
|
||||||
|
|
||||||
|
message GetHostnameRequest {
|
||||||
|
optional string module = 1;
|
||||||
|
optional string version = 2;
|
||||||
|
optional string instance = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetHostnameResponse {
|
||||||
|
required string hostname = 1;
|
||||||
|
}
|
||||||
|
|
56
vendor/google.golang.org/appengine/internal/net.go
generated
vendored
Normal file
56
vendor/google.golang.org/appengine/internal/net.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
// Copyright 2014 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
// This file implements a network dialer that limits the number of concurrent connections.
|
||||||
|
// It is only used for API calls.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"runtime"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var limitSem = make(chan int, 100) // TODO(dsymonds): Use environment variable.
|
||||||
|
|
||||||
|
func limitRelease() {
|
||||||
|
// non-blocking
|
||||||
|
select {
|
||||||
|
case <-limitSem:
|
||||||
|
default:
|
||||||
|
// This should not normally happen.
|
||||||
|
log.Print("appengine: unbalanced limitSem release!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func limitDial(network, addr string) (net.Conn, error) {
|
||||||
|
limitSem <- 1
|
||||||
|
|
||||||
|
// Dial with a timeout in case the API host is MIA.
|
||||||
|
// The connection should normally be very fast.
|
||||||
|
conn, err := net.DialTimeout(network, addr, 500*time.Millisecond)
|
||||||
|
if err != nil {
|
||||||
|
limitRelease()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
lc := &limitConn{Conn: conn}
|
||||||
|
runtime.SetFinalizer(lc, (*limitConn).Close) // shouldn't usually be required
|
||||||
|
return lc, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type limitConn struct {
|
||||||
|
close sync.Once
|
||||||
|
net.Conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func (lc *limitConn) Close() error {
|
||||||
|
defer lc.close.Do(func() {
|
||||||
|
limitRelease()
|
||||||
|
runtime.SetFinalizer(lc, nil)
|
||||||
|
})
|
||||||
|
return lc.Conn.Close()
|
||||||
|
}
|
40
vendor/google.golang.org/appengine/internal/regen.sh
generated
vendored
Executable file
40
vendor/google.golang.org/appengine/internal/regen.sh
generated
vendored
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
#
|
||||||
|
# This script rebuilds the generated code for the protocol buffers.
|
||||||
|
# To run this you will need protoc and goprotobuf installed;
|
||||||
|
# see https://github.com/golang/protobuf for instructions.
|
||||||
|
|
||||||
|
PKG=google.golang.org/appengine
|
||||||
|
|
||||||
|
function die() {
|
||||||
|
echo 1>&2 $*
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sanity check that the right tools are accessible.
|
||||||
|
for tool in go protoc protoc-gen-go; do
|
||||||
|
q=$(which $tool) || die "didn't find $tool"
|
||||||
|
echo 1>&2 "$tool: $q"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -n 1>&2 "finding package dir... "
|
||||||
|
pkgdir=$(go list -f '{{.Dir}}' $PKG)
|
||||||
|
echo 1>&2 $pkgdir
|
||||||
|
base=$(echo $pkgdir | sed "s,/$PKG\$,,")
|
||||||
|
echo 1>&2 "base: $base"
|
||||||
|
cd $base
|
||||||
|
|
||||||
|
# Run protoc once per package.
|
||||||
|
for dir in $(find $PKG/internal -name '*.proto' | xargs dirname | sort | uniq); do
|
||||||
|
echo 1>&2 "* $dir"
|
||||||
|
protoc --go_out=. $dir/*.proto
|
||||||
|
done
|
||||||
|
|
||||||
|
for f in $(find $PKG/internal -name '*.pb.go'); do
|
||||||
|
# Remove proto.RegisterEnum calls.
|
||||||
|
# These cause duplicate registration panics when these packages
|
||||||
|
# are used on classic App Engine. proto.RegisterEnum only affects
|
||||||
|
# parsing the text format; we don't care about that.
|
||||||
|
# https://code.google.com/p/googleappengine/issues/detail?id=11670#c17
|
||||||
|
sed -i '/proto.RegisterEnum/d' $f
|
||||||
|
done
|
231
vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go
generated
vendored
Normal file
231
vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go
generated
vendored
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: google.golang.org/appengine/internal/remote_api/remote_api.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package remote_api is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
google.golang.org/appengine/internal/remote_api/remote_api.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
Request
|
||||||
|
ApplicationError
|
||||||
|
RpcError
|
||||||
|
Response
|
||||||
|
*/
|
||||||
|
package remote_api
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type RpcError_ErrorCode int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
RpcError_UNKNOWN RpcError_ErrorCode = 0
|
||||||
|
RpcError_CALL_NOT_FOUND RpcError_ErrorCode = 1
|
||||||
|
RpcError_PARSE_ERROR RpcError_ErrorCode = 2
|
||||||
|
RpcError_SECURITY_VIOLATION RpcError_ErrorCode = 3
|
||||||
|
RpcError_OVER_QUOTA RpcError_ErrorCode = 4
|
||||||
|
RpcError_REQUEST_TOO_LARGE RpcError_ErrorCode = 5
|
||||||
|
RpcError_CAPABILITY_DISABLED RpcError_ErrorCode = 6
|
||||||
|
RpcError_FEATURE_DISABLED RpcError_ErrorCode = 7
|
||||||
|
RpcError_BAD_REQUEST RpcError_ErrorCode = 8
|
||||||
|
RpcError_RESPONSE_TOO_LARGE RpcError_ErrorCode = 9
|
||||||
|
RpcError_CANCELLED RpcError_ErrorCode = 10
|
||||||
|
RpcError_REPLAY_ERROR RpcError_ErrorCode = 11
|
||||||
|
RpcError_DEADLINE_EXCEEDED RpcError_ErrorCode = 12
|
||||||
|
)
|
||||||
|
|
||||||
|
var RpcError_ErrorCode_name = map[int32]string{
|
||||||
|
0: "UNKNOWN",
|
||||||
|
1: "CALL_NOT_FOUND",
|
||||||
|
2: "PARSE_ERROR",
|
||||||
|
3: "SECURITY_VIOLATION",
|
||||||
|
4: "OVER_QUOTA",
|
||||||
|
5: "REQUEST_TOO_LARGE",
|
||||||
|
6: "CAPABILITY_DISABLED",
|
||||||
|
7: "FEATURE_DISABLED",
|
||||||
|
8: "BAD_REQUEST",
|
||||||
|
9: "RESPONSE_TOO_LARGE",
|
||||||
|
10: "CANCELLED",
|
||||||
|
11: "REPLAY_ERROR",
|
||||||
|
12: "DEADLINE_EXCEEDED",
|
||||||
|
}
|
||||||
|
var RpcError_ErrorCode_value = map[string]int32{
|
||||||
|
"UNKNOWN": 0,
|
||||||
|
"CALL_NOT_FOUND": 1,
|
||||||
|
"PARSE_ERROR": 2,
|
||||||
|
"SECURITY_VIOLATION": 3,
|
||||||
|
"OVER_QUOTA": 4,
|
||||||
|
"REQUEST_TOO_LARGE": 5,
|
||||||
|
"CAPABILITY_DISABLED": 6,
|
||||||
|
"FEATURE_DISABLED": 7,
|
||||||
|
"BAD_REQUEST": 8,
|
||||||
|
"RESPONSE_TOO_LARGE": 9,
|
||||||
|
"CANCELLED": 10,
|
||||||
|
"REPLAY_ERROR": 11,
|
||||||
|
"DEADLINE_EXCEEDED": 12,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x RpcError_ErrorCode) Enum() *RpcError_ErrorCode {
|
||||||
|
p := new(RpcError_ErrorCode)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x RpcError_ErrorCode) String() string {
|
||||||
|
return proto.EnumName(RpcError_ErrorCode_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *RpcError_ErrorCode) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(RpcError_ErrorCode_value, data, "RpcError_ErrorCode")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = RpcError_ErrorCode(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type Request struct {
|
||||||
|
ServiceName *string `protobuf:"bytes,2,req,name=service_name" json:"service_name,omitempty"`
|
||||||
|
Method *string `protobuf:"bytes,3,req,name=method" json:"method,omitempty"`
|
||||||
|
Request []byte `protobuf:"bytes,4,req,name=request" json:"request,omitempty"`
|
||||||
|
RequestId *string `protobuf:"bytes,5,opt,name=request_id" json:"request_id,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Request) Reset() { *m = Request{} }
|
||||||
|
func (m *Request) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Request) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *Request) GetServiceName() string {
|
||||||
|
if m != nil && m.ServiceName != nil {
|
||||||
|
return *m.ServiceName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Request) GetMethod() string {
|
||||||
|
if m != nil && m.Method != nil {
|
||||||
|
return *m.Method
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Request) GetRequest() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Request
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Request) GetRequestId() string {
|
||||||
|
if m != nil && m.RequestId != nil {
|
||||||
|
return *m.RequestId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type ApplicationError struct {
|
||||||
|
Code *int32 `protobuf:"varint,1,req,name=code" json:"code,omitempty"`
|
||||||
|
Detail *string `protobuf:"bytes,2,req,name=detail" json:"detail,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ApplicationError) Reset() { *m = ApplicationError{} }
|
||||||
|
func (m *ApplicationError) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*ApplicationError) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *ApplicationError) GetCode() int32 {
|
||||||
|
if m != nil && m.Code != nil {
|
||||||
|
return *m.Code
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ApplicationError) GetDetail() string {
|
||||||
|
if m != nil && m.Detail != nil {
|
||||||
|
return *m.Detail
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type RpcError struct {
|
||||||
|
Code *int32 `protobuf:"varint,1,req,name=code" json:"code,omitempty"`
|
||||||
|
Detail *string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RpcError) Reset() { *m = RpcError{} }
|
||||||
|
func (m *RpcError) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*RpcError) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *RpcError) GetCode() int32 {
|
||||||
|
if m != nil && m.Code != nil {
|
||||||
|
return *m.Code
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *RpcError) GetDetail() string {
|
||||||
|
if m != nil && m.Detail != nil {
|
||||||
|
return *m.Detail
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type Response struct {
|
||||||
|
Response []byte `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
|
||||||
|
Exception []byte `protobuf:"bytes,2,opt,name=exception" json:"exception,omitempty"`
|
||||||
|
ApplicationError *ApplicationError `protobuf:"bytes,3,opt,name=application_error" json:"application_error,omitempty"`
|
||||||
|
JavaException []byte `protobuf:"bytes,4,opt,name=java_exception" json:"java_exception,omitempty"`
|
||||||
|
RpcError *RpcError `protobuf:"bytes,5,opt,name=rpc_error" json:"rpc_error,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Response) Reset() { *m = Response{} }
|
||||||
|
func (m *Response) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Response) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *Response) GetResponse() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Response
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Response) GetException() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Exception
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Response) GetApplicationError() *ApplicationError {
|
||||||
|
if m != nil {
|
||||||
|
return m.ApplicationError
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Response) GetJavaException() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.JavaException
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Response) GetRpcError() *RpcError {
|
||||||
|
if m != nil {
|
||||||
|
return m.RpcError
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
}
|
44
vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
generated
vendored
Normal file
44
vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "remote_api";
|
||||||
|
|
||||||
|
package remote_api;
|
||||||
|
|
||||||
|
message Request {
|
||||||
|
required string service_name = 2;
|
||||||
|
required string method = 3;
|
||||||
|
required bytes request = 4;
|
||||||
|
optional string request_id = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ApplicationError {
|
||||||
|
required int32 code = 1;
|
||||||
|
required string detail = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message RpcError {
|
||||||
|
enum ErrorCode {
|
||||||
|
UNKNOWN = 0;
|
||||||
|
CALL_NOT_FOUND = 1;
|
||||||
|
PARSE_ERROR = 2;
|
||||||
|
SECURITY_VIOLATION = 3;
|
||||||
|
OVER_QUOTA = 4;
|
||||||
|
REQUEST_TOO_LARGE = 5;
|
||||||
|
CAPABILITY_DISABLED = 6;
|
||||||
|
FEATURE_DISABLED = 7;
|
||||||
|
BAD_REQUEST = 8;
|
||||||
|
RESPONSE_TOO_LARGE = 9;
|
||||||
|
CANCELLED = 10;
|
||||||
|
REPLAY_ERROR = 11;
|
||||||
|
DEADLINE_EXCEEDED = 12;
|
||||||
|
}
|
||||||
|
required int32 code = 1;
|
||||||
|
optional string detail = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Response {
|
||||||
|
optional bytes response = 1;
|
||||||
|
optional bytes exception = 2;
|
||||||
|
optional ApplicationError application_error = 3;
|
||||||
|
optional bytes java_exception = 4;
|
||||||
|
optional RpcError rpc_error = 5;
|
||||||
|
}
|
107
vendor/google.golang.org/appengine/internal/transaction.go
generated
vendored
Normal file
107
vendor/google.golang.org/appengine/internal/transaction.go
generated
vendored
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
// Copyright 2014 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
// This file implements hooks for applying datastore transactions.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
netcontext "golang.org/x/net/context"
|
||||||
|
|
||||||
|
basepb "google.golang.org/appengine/internal/base"
|
||||||
|
pb "google.golang.org/appengine/internal/datastore"
|
||||||
|
)
|
||||||
|
|
||||||
|
var transactionSetters = make(map[reflect.Type]reflect.Value)
|
||||||
|
|
||||||
|
// RegisterTransactionSetter registers a function that sets transaction information
|
||||||
|
// in a protocol buffer message. f should be a function with two arguments,
|
||||||
|
// the first being a protocol buffer type, and the second being *datastore.Transaction.
|
||||||
|
func RegisterTransactionSetter(f interface{}) {
|
||||||
|
v := reflect.ValueOf(f)
|
||||||
|
transactionSetters[v.Type().In(0)] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// applyTransaction applies the transaction t to message pb
|
||||||
|
// by using the relevant setter passed to RegisterTransactionSetter.
|
||||||
|
func applyTransaction(pb proto.Message, t *pb.Transaction) {
|
||||||
|
v := reflect.ValueOf(pb)
|
||||||
|
if f, ok := transactionSetters[v.Type()]; ok {
|
||||||
|
f.Call([]reflect.Value{v, reflect.ValueOf(t)})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var transactionKey = "used for *Transaction"
|
||||||
|
|
||||||
|
func transactionFromContext(ctx netcontext.Context) *transaction {
|
||||||
|
t, _ := ctx.Value(&transactionKey).(*transaction)
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
func withTransaction(ctx netcontext.Context, t *transaction) netcontext.Context {
|
||||||
|
return netcontext.WithValue(ctx, &transactionKey, t)
|
||||||
|
}
|
||||||
|
|
||||||
|
type transaction struct {
|
||||||
|
transaction pb.Transaction
|
||||||
|
finished bool
|
||||||
|
}
|
||||||
|
|
||||||
|
var ErrConcurrentTransaction = errors.New("internal: concurrent transaction")
|
||||||
|
|
||||||
|
func RunTransactionOnce(c netcontext.Context, f func(netcontext.Context) error, xg bool) error {
|
||||||
|
if transactionFromContext(c) != nil {
|
||||||
|
return errors.New("nested transactions are not supported")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Begin the transaction.
|
||||||
|
t := &transaction{}
|
||||||
|
req := &pb.BeginTransactionRequest{
|
||||||
|
App: proto.String(FullyQualifiedAppID(c)),
|
||||||
|
}
|
||||||
|
if xg {
|
||||||
|
req.AllowMultipleEg = proto.Bool(true)
|
||||||
|
}
|
||||||
|
if err := Call(c, "datastore_v3", "BeginTransaction", req, &t.transaction); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call f, rolling back the transaction if f returns a non-nil error, or panics.
|
||||||
|
// The panic is not recovered.
|
||||||
|
defer func() {
|
||||||
|
if t.finished {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
t.finished = true
|
||||||
|
// Ignore the error return value, since we are already returning a non-nil
|
||||||
|
// error (or we're panicking).
|
||||||
|
Call(c, "datastore_v3", "Rollback", &t.transaction, &basepb.VoidProto{})
|
||||||
|
}()
|
||||||
|
if err := f(withTransaction(c, t)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
t.finished = true
|
||||||
|
|
||||||
|
// Commit the transaction.
|
||||||
|
res := &pb.CommitResponse{}
|
||||||
|
err := Call(c, "datastore_v3", "Commit", &t.transaction, res)
|
||||||
|
if ae, ok := err.(*APIError); ok {
|
||||||
|
/* TODO: restore this conditional
|
||||||
|
if appengine.IsDevAppServer() {
|
||||||
|
*/
|
||||||
|
// The Python Dev AppServer raises an ApplicationError with error code 2 (which is
|
||||||
|
// Error.CONCURRENT_TRANSACTION) and message "Concurrency exception.".
|
||||||
|
if ae.Code == int32(pb.Error_BAD_REQUEST) && ae.Detail == "ApplicationError: 2 Concurrency exception." {
|
||||||
|
return ErrConcurrentTransaction
|
||||||
|
}
|
||||||
|
if ae.Code == int32(pb.Error_CONCURRENT_TRANSACTION) {
|
||||||
|
return ErrConcurrentTransaction
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
25
vendor/google.golang.org/appengine/namespace.go
generated
vendored
Normal file
25
vendor/google.golang.org/appengine/namespace.go
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2012 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package appengine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"regexp"
|
||||||
|
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
"google.golang.org/appengine/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Namespace returns a replacement context that operates within the given namespace.
|
||||||
|
func Namespace(c context.Context, namespace string) (context.Context, error) {
|
||||||
|
if !validNamespace.MatchString(namespace) {
|
||||||
|
return nil, fmt.Errorf("appengine: namespace %q does not match /%s/", namespace, validNamespace)
|
||||||
|
}
|
||||||
|
return internal.NamespacedContext(c, namespace), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// validNamespace matches valid namespace names.
|
||||||
|
var validNamespace = regexp.MustCompile(`^[0-9A-Za-z._-]{0,100}$`)
|
20
vendor/google.golang.org/appengine/timeout.go
generated
vendored
Normal file
20
vendor/google.golang.org/appengine/timeout.go
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright 2013 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package appengine
|
||||||
|
|
||||||
|
import "golang.org/x/net/context"
|
||||||
|
|
||||||
|
// IsTimeoutError reports whether err is a timeout error.
|
||||||
|
func IsTimeoutError(err error) bool {
|
||||||
|
if err == context.DeadlineExceeded {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if t, ok := err.(interface {
|
||||||
|
IsTimeout() bool
|
||||||
|
}); ok {
|
||||||
|
return t.IsTimeout()
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
382
vendor/google.golang.org/cloud/compute/metadata/metadata.go
generated
vendored
382
vendor/google.golang.org/cloud/compute/metadata/metadata.go
generated
vendored
@ -1,382 +0,0 @@
|
|||||||
// Copyright 2014 Google Inc. All Rights Reserved.
|
|
||||||
//
|
|
||||||
// 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 metadata provides access to Google Compute Engine (GCE)
|
|
||||||
// metadata and API service accounts.
|
|
||||||
//
|
|
||||||
// This package is a wrapper around the GCE metadata service,
|
|
||||||
// as documented at https://developers.google.com/compute/docs/metadata.
|
|
||||||
package metadata
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
|
||||||
"golang.org/x/net/context/ctxhttp"
|
|
||||||
|
|
||||||
"google.golang.org/cloud/internal"
|
|
||||||
)
|
|
||||||
|
|
||||||
// metadataIP is the documented metadata server IP address.
|
|
||||||
const metadataIP = "169.254.169.254"
|
|
||||||
|
|
||||||
type cachedValue struct {
|
|
||||||
k string
|
|
||||||
trim bool
|
|
||||||
mu sync.Mutex
|
|
||||||
v string
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
projID = &cachedValue{k: "project/project-id", trim: true}
|
|
||||||
projNum = &cachedValue{k: "project/numeric-project-id", trim: true}
|
|
||||||
instID = &cachedValue{k: "instance/id", trim: true}
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
metaClient = &http.Client{
|
|
||||||
Transport: &internal.Transport{
|
|
||||||
Base: &http.Transport{
|
|
||||||
Dial: (&net.Dialer{
|
|
||||||
Timeout: 2 * time.Second,
|
|
||||||
KeepAlive: 30 * time.Second,
|
|
||||||
}).Dial,
|
|
||||||
ResponseHeaderTimeout: 2 * time.Second,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
subscribeClient = &http.Client{
|
|
||||||
Transport: &internal.Transport{
|
|
||||||
Base: &http.Transport{
|
|
||||||
Dial: (&net.Dialer{
|
|
||||||
Timeout: 2 * time.Second,
|
|
||||||
KeepAlive: 30 * time.Second,
|
|
||||||
}).Dial,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// NotDefinedError is returned when requested metadata is not defined.
|
|
||||||
//
|
|
||||||
// The underlying string is the suffix after "/computeMetadata/v1/".
|
|
||||||
//
|
|
||||||
// This error is not returned if the value is defined to be the empty
|
|
||||||
// string.
|
|
||||||
type NotDefinedError string
|
|
||||||
|
|
||||||
func (suffix NotDefinedError) Error() string {
|
|
||||||
return fmt.Sprintf("metadata: GCE metadata %q not defined", string(suffix))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get returns a value from the metadata service.
|
|
||||||
// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
|
|
||||||
//
|
|
||||||
// If the GCE_METADATA_HOST environment variable is not defined, a default of
|
|
||||||
// 169.254.169.254 will be used instead.
|
|
||||||
//
|
|
||||||
// If the requested metadata is not defined, the returned error will
|
|
||||||
// be of type NotDefinedError.
|
|
||||||
func Get(suffix string) (string, error) {
|
|
||||||
val, _, err := getETag(metaClient, suffix)
|
|
||||||
return val, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// getETag returns a value from the metadata service as well as the associated
|
|
||||||
// ETag using the provided client. This func is otherwise equivalent to Get.
|
|
||||||
func getETag(client *http.Client, suffix string) (value, etag string, err error) {
|
|
||||||
// Using a fixed IP makes it very difficult to spoof the metadata service in
|
|
||||||
// a container, which is an important use-case for local testing of cloud
|
|
||||||
// deployments. To enable spoofing of the metadata service, the environment
|
|
||||||
// variable GCE_METADATA_HOST is first inspected to decide where metadata
|
|
||||||
// requests shall go.
|
|
||||||
host := os.Getenv("GCE_METADATA_HOST")
|
|
||||||
if host == "" {
|
|
||||||
// Using 169.254.169.254 instead of "metadata" here because Go
|
|
||||||
// binaries built with the "netgo" tag and without cgo won't
|
|
||||||
// know the search suffix for "metadata" is
|
|
||||||
// ".google.internal", and this IP address is documented as
|
|
||||||
// being stable anyway.
|
|
||||||
host = metadataIP
|
|
||||||
}
|
|
||||||
url := "http://" + host + "/computeMetadata/v1/" + suffix
|
|
||||||
req, _ := http.NewRequest("GET", url, nil)
|
|
||||||
req.Header.Set("Metadata-Flavor", "Google")
|
|
||||||
res, err := client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return "", "", err
|
|
||||||
}
|
|
||||||
defer res.Body.Close()
|
|
||||||
if res.StatusCode == http.StatusNotFound {
|
|
||||||
return "", "", NotDefinedError(suffix)
|
|
||||||
}
|
|
||||||
if res.StatusCode != 200 {
|
|
||||||
return "", "", fmt.Errorf("status code %d trying to fetch %s", res.StatusCode, url)
|
|
||||||
}
|
|
||||||
all, err := ioutil.ReadAll(res.Body)
|
|
||||||
if err != nil {
|
|
||||||
return "", "", err
|
|
||||||
}
|
|
||||||
return string(all), res.Header.Get("Etag"), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getTrimmed(suffix string) (s string, err error) {
|
|
||||||
s, err = Get(suffix)
|
|
||||||
s = strings.TrimSpace(s)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cachedValue) get() (v string, err error) {
|
|
||||||
defer c.mu.Unlock()
|
|
||||||
c.mu.Lock()
|
|
||||||
if c.v != "" {
|
|
||||||
return c.v, nil
|
|
||||||
}
|
|
||||||
if c.trim {
|
|
||||||
v, err = getTrimmed(c.k)
|
|
||||||
} else {
|
|
||||||
v, err = Get(c.k)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
c.v = v
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var onGCE struct {
|
|
||||||
sync.Mutex
|
|
||||||
set bool
|
|
||||||
v bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// OnGCE reports whether this process is running on Google Compute Engine.
|
|
||||||
func OnGCE() bool {
|
|
||||||
defer onGCE.Unlock()
|
|
||||||
onGCE.Lock()
|
|
||||||
if onGCE.set {
|
|
||||||
return onGCE.v
|
|
||||||
}
|
|
||||||
onGCE.set = true
|
|
||||||
onGCE.v = testOnGCE()
|
|
||||||
return onGCE.v
|
|
||||||
}
|
|
||||||
|
|
||||||
func testOnGCE() bool {
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
resc := make(chan bool, 2)
|
|
||||||
|
|
||||||
// Try two strategies in parallel.
|
|
||||||
// See https://github.com/GoogleCloudPlatform/gcloud-golang/issues/194
|
|
||||||
go func() {
|
|
||||||
res, err := ctxhttp.Get(ctx, metaClient, "http://"+metadataIP)
|
|
||||||
if err != nil {
|
|
||||||
resc <- false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer res.Body.Close()
|
|
||||||
resc <- res.Header.Get("Metadata-Flavor") == "Google"
|
|
||||||
}()
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
addrs, err := net.LookupHost("metadata.google.internal")
|
|
||||||
if err != nil || len(addrs) == 0 {
|
|
||||||
resc <- false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resc <- strsContains(addrs, metadataIP)
|
|
||||||
}()
|
|
||||||
|
|
||||||
return <-resc
|
|
||||||
}
|
|
||||||
|
|
||||||
// Subscribe subscribes to a value from the metadata service.
|
|
||||||
// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
|
|
||||||
// The suffix may contain query parameters.
|
|
||||||
//
|
|
||||||
// Subscribe calls fn with the latest metadata value indicated by the provided
|
|
||||||
// suffix. If the metadata value is deleted, fn is called with the empty string
|
|
||||||
// and ok false. Subscribe blocks until fn returns a non-nil error or the value
|
|
||||||
// is deleted. Subscribe returns the error value returned from the last call to
|
|
||||||
// fn, which may be nil when ok == false.
|
|
||||||
func Subscribe(suffix string, fn func(v string, ok bool) error) error {
|
|
||||||
const failedSubscribeSleep = time.Second * 5
|
|
||||||
|
|
||||||
// First check to see if the metadata value exists at all.
|
|
||||||
val, lastETag, err := getETag(subscribeClient, suffix)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := fn(val, true); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
ok := true
|
|
||||||
if strings.ContainsRune(suffix, '?') {
|
|
||||||
suffix += "&wait_for_change=true&last_etag="
|
|
||||||
} else {
|
|
||||||
suffix += "?wait_for_change=true&last_etag="
|
|
||||||
}
|
|
||||||
for {
|
|
||||||
val, etag, err := getETag(subscribeClient, suffix+url.QueryEscape(lastETag))
|
|
||||||
if err != nil {
|
|
||||||
if _, deleted := err.(NotDefinedError); !deleted {
|
|
||||||
time.Sleep(failedSubscribeSleep)
|
|
||||||
continue // Retry on other errors.
|
|
||||||
}
|
|
||||||
ok = false
|
|
||||||
}
|
|
||||||
lastETag = etag
|
|
||||||
|
|
||||||
if err := fn(val, ok); err != nil || !ok {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ProjectID returns the current instance's project ID string.
|
|
||||||
func ProjectID() (string, error) { return projID.get() }
|
|
||||||
|
|
||||||
// NumericProjectID returns the current instance's numeric project ID.
|
|
||||||
func NumericProjectID() (string, error) { return projNum.get() }
|
|
||||||
|
|
||||||
// InternalIP returns the instance's primary internal IP address.
|
|
||||||
func InternalIP() (string, error) {
|
|
||||||
return getTrimmed("instance/network-interfaces/0/ip")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExternalIP returns the instance's primary external (public) IP address.
|
|
||||||
func ExternalIP() (string, error) {
|
|
||||||
return getTrimmed("instance/network-interfaces/0/access-configs/0/external-ip")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hostname returns the instance's hostname. This will be of the form
|
|
||||||
// "<instanceID>.c.<projID>.internal".
|
|
||||||
func Hostname() (string, error) {
|
|
||||||
return getTrimmed("instance/hostname")
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstanceTags returns the list of user-defined instance tags,
|
|
||||||
// assigned when initially creating a GCE instance.
|
|
||||||
func InstanceTags() ([]string, error) {
|
|
||||||
var s []string
|
|
||||||
j, err := Get("instance/tags")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if err := json.NewDecoder(strings.NewReader(j)).Decode(&s); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return s, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstanceID returns the current VM's numeric instance ID.
|
|
||||||
func InstanceID() (string, error) {
|
|
||||||
return instID.get()
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstanceName returns the current VM's instance ID string.
|
|
||||||
func InstanceName() (string, error) {
|
|
||||||
host, err := Hostname()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return strings.Split(host, ".")[0], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Zone returns the current VM's zone, such as "us-central1-b".
|
|
||||||
func Zone() (string, error) {
|
|
||||||
zone, err := getTrimmed("instance/zone")
|
|
||||||
// zone is of the form "projects/<projNum>/zones/<zoneName>".
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return zone[strings.LastIndex(zone, "/")+1:], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstanceAttributes returns the list of user-defined attributes,
|
|
||||||
// assigned when initially creating a GCE VM instance. The value of an
|
|
||||||
// attribute can be obtained with InstanceAttributeValue.
|
|
||||||
func InstanceAttributes() ([]string, error) { return lines("instance/attributes/") }
|
|
||||||
|
|
||||||
// ProjectAttributes returns the list of user-defined attributes
|
|
||||||
// applying to the project as a whole, not just this VM. The value of
|
|
||||||
// an attribute can be obtained with ProjectAttributeValue.
|
|
||||||
func ProjectAttributes() ([]string, error) { return lines("project/attributes/") }
|
|
||||||
|
|
||||||
func lines(suffix string) ([]string, error) {
|
|
||||||
j, err := Get(suffix)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
s := strings.Split(strings.TrimSpace(j), "\n")
|
|
||||||
for i := range s {
|
|
||||||
s[i] = strings.TrimSpace(s[i])
|
|
||||||
}
|
|
||||||
return s, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstanceAttributeValue returns the value of the provided VM
|
|
||||||
// instance attribute.
|
|
||||||
//
|
|
||||||
// If the requested attribute is not defined, the returned error will
|
|
||||||
// be of type NotDefinedError.
|
|
||||||
//
|
|
||||||
// InstanceAttributeValue may return ("", nil) if the attribute was
|
|
||||||
// defined to be the empty string.
|
|
||||||
func InstanceAttributeValue(attr string) (string, error) {
|
|
||||||
return Get("instance/attributes/" + attr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ProjectAttributeValue returns the value of the provided
|
|
||||||
// project attribute.
|
|
||||||
//
|
|
||||||
// If the requested attribute is not defined, the returned error will
|
|
||||||
// be of type NotDefinedError.
|
|
||||||
//
|
|
||||||
// ProjectAttributeValue may return ("", nil) if the attribute was
|
|
||||||
// defined to be the empty string.
|
|
||||||
func ProjectAttributeValue(attr string) (string, error) {
|
|
||||||
return Get("project/attributes/" + attr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scopes returns the service account scopes for the given account.
|
|
||||||
// The account may be empty or the string "default" to use the instance's
|
|
||||||
// main account.
|
|
||||||
func Scopes(serviceAccount string) ([]string, error) {
|
|
||||||
if serviceAccount == "" {
|
|
||||||
serviceAccount = "default"
|
|
||||||
}
|
|
||||||
return lines("instance/service-accounts/" + serviceAccount + "/scopes")
|
|
||||||
}
|
|
||||||
|
|
||||||
func strsContains(ss []string, s string) bool {
|
|
||||||
for _, v := range ss {
|
|
||||||
if v == s {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
128
vendor/google.golang.org/cloud/internal/cloud.go
generated
vendored
128
vendor/google.golang.org/cloud/internal/cloud.go
generated
vendored
@ -1,128 +0,0 @@
|
|||||||
// Copyright 2014 Google Inc. All Rights Reserved.
|
|
||||||
//
|
|
||||||
// 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 internal provides support for the cloud packages.
|
|
||||||
//
|
|
||||||
// Users should not import this package directly.
|
|
||||||
package internal
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net/http"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
|
||||||
)
|
|
||||||
|
|
||||||
type contextKey struct{}
|
|
||||||
|
|
||||||
func WithContext(parent context.Context, projID string, c *http.Client) context.Context {
|
|
||||||
if c == nil {
|
|
||||||
panic("nil *http.Client passed to WithContext")
|
|
||||||
}
|
|
||||||
if projID == "" {
|
|
||||||
panic("empty project ID passed to WithContext")
|
|
||||||
}
|
|
||||||
return context.WithValue(parent, contextKey{}, &cloudContext{
|
|
||||||
ProjectID: projID,
|
|
||||||
HTTPClient: c,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const userAgent = "gcloud-golang/0.1"
|
|
||||||
|
|
||||||
type cloudContext struct {
|
|
||||||
ProjectID string
|
|
||||||
HTTPClient *http.Client
|
|
||||||
|
|
||||||
mu sync.Mutex // guards svc
|
|
||||||
svc map[string]interface{} // e.g. "storage" => *rawStorage.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// Service returns the result of the fill function if it's never been
|
|
||||||
// called before for the given name (which is assumed to be an API
|
|
||||||
// service name, like "datastore"). If it has already been cached, the fill
|
|
||||||
// func is not run.
|
|
||||||
// It's safe for concurrent use by multiple goroutines.
|
|
||||||
func Service(ctx context.Context, name string, fill func(*http.Client) interface{}) interface{} {
|
|
||||||
return cc(ctx).service(name, fill)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cloudContext) service(name string, fill func(*http.Client) interface{}) interface{} {
|
|
||||||
c.mu.Lock()
|
|
||||||
defer c.mu.Unlock()
|
|
||||||
|
|
||||||
if c.svc == nil {
|
|
||||||
c.svc = make(map[string]interface{})
|
|
||||||
} else if v, ok := c.svc[name]; ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
v := fill(c.HTTPClient)
|
|
||||||
c.svc[name] = v
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
|
|
||||||
// Transport is an http.RoundTripper that appends
|
|
||||||
// Google Cloud client's user-agent to the original
|
|
||||||
// request's user-agent header.
|
|
||||||
type Transport struct {
|
|
||||||
// Base is the actual http.RoundTripper
|
|
||||||
// requests will use. It must not be nil.
|
|
||||||
Base http.RoundTripper
|
|
||||||
}
|
|
||||||
|
|
||||||
// RoundTrip appends a user-agent to the existing user-agent
|
|
||||||
// header and delegates the request to the base http.RoundTripper.
|
|
||||||
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
||||||
req = cloneRequest(req)
|
|
||||||
ua := req.Header.Get("User-Agent")
|
|
||||||
if ua == "" {
|
|
||||||
ua = userAgent
|
|
||||||
} else {
|
|
||||||
ua = fmt.Sprintf("%s %s", ua, userAgent)
|
|
||||||
}
|
|
||||||
req.Header.Set("User-Agent", ua)
|
|
||||||
return t.Base.RoundTrip(req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// cloneRequest returns a clone of the provided *http.Request.
|
|
||||||
// The clone is a shallow copy of the struct and its Header map.
|
|
||||||
func cloneRequest(r *http.Request) *http.Request {
|
|
||||||
// shallow copy of the struct
|
|
||||||
r2 := new(http.Request)
|
|
||||||
*r2 = *r
|
|
||||||
// deep copy of the Header
|
|
||||||
r2.Header = make(http.Header)
|
|
||||||
for k, s := range r.Header {
|
|
||||||
r2.Header[k] = s
|
|
||||||
}
|
|
||||||
return r2
|
|
||||||
}
|
|
||||||
|
|
||||||
func ProjID(ctx context.Context) string {
|
|
||||||
return cc(ctx).ProjectID
|
|
||||||
}
|
|
||||||
|
|
||||||
func HTTPClient(ctx context.Context) *http.Client {
|
|
||||||
return cc(ctx).HTTPClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// cc returns the internal *cloudContext (cc) state for a context.Context.
|
|
||||||
// It panics if the user did it wrong.
|
|
||||||
func cc(ctx context.Context) *cloudContext {
|
|
||||||
if c, ok := ctx.Value(contextKey{}).(*cloudContext); ok {
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
panic("invalid context.Context type; it should be created with cloud.NewContext")
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user