mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 02:08:13 +00:00 
			
		
		
		
	Merge pull request #45056 from ericchiang/update-oauth2
Automatic merge from submit-queue bump(golang.org/x/oauth2): a6bd8cefa1811bd24b86f8902872e4e8225f74c4 As I tackle https://github.com/kubernetes/kubernetes/issues/42654 kubectl's OpenID Connect plugin will start using golang.org/x/oauth2 for refreshing, instead of go-oidc's own hand rolled oauth2 implementation. In preparation, update golang.org/x/oauth2 to include7374b3f1ecwhich fixes refreshing with Okta. We also somehow removed the dependency on `google.golang.org/appengine`. Maybe8cf58155e4? cc @kubernetes/sig-auth-pr-reviews
This commit is contained in:
		
							
								
								
									
										43
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										43
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							| @@ -2128,6 +2128,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/pelletier/go-buffruneio", | 			"ImportPath": "github.com/pelletier/go-buffruneio", | ||||||
|  | 			"Comment": "v0.1.0", | ||||||
| 			"Rev": "df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d" | 			"Rev": "df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| @@ -2604,23 +2605,23 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2", | 			"ImportPath": "golang.org/x/oauth2", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/google", | 			"ImportPath": "golang.org/x/oauth2/google", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/internal", | 			"ImportPath": "golang.org/x/oauth2/internal", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/jws", | 			"ImportPath": "golang.org/x/oauth2/jws", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/jwt", | 			"ImportPath": "golang.org/x/oauth2/jwt", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/sys/unix", | 			"ImportPath": "golang.org/x/sys/unix", | ||||||
| @@ -2730,38 +2731,6 @@ | |||||||
| 			"ImportPath": "google.golang.org/api/monitoring/v3", | 			"ImportPath": "google.golang.org/api/monitoring/v3", | ||||||
| 			"Rev": "64485db7e8c8be51e572801d06cdbcfadd3546c1" | 			"Rev": "64485db7e8c8be51e572801d06cdbcfadd3546c1" | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			"ImportPath": "google.golang.org/appengine", |  | ||||||
| 			"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05" |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			"ImportPath": "google.golang.org/appengine/internal", |  | ||||||
| 			"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", | ||||||
| 			"Comment": "v1.0.4", | 			"Comment": "v1.0.4", | ||||||
|   | |||||||
							
								
								
									
										1680
									
								
								Godeps/LICENSES
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1680
									
								
								Godeps/LICENSES
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -60,7 +60,7 @@ mJAYH8WU+UAy9pecUnDZj14LAGNVmYcse8HFX71MoshnvCTFEPVo4rZxIAGwMpeJ | |||||||
| 5jgQ3slYLpqrGlcbLgUXBUgzEO684Wk/UV9DFPlHALVqCfXQ9dpJPg== | 5jgQ3slYLpqrGlcbLgUXBUgzEO684Wk/UV9DFPlHALVqCfXQ9dpJPg== | ||||||
| -----END RSA PRIVATE KEY-----` | -----END RSA PRIVATE KEY-----` | ||||||
|  |  | ||||||
| 	jsonKey = fmt.Sprintf(`{"private_key":"%[1]s", "client_email":"%[2]s"}`, | 	jsonKey = fmt.Sprintf(`{"private_key":"%[1]s", "client_email":"%[2]s", "type": "service_account"}`, | ||||||
| 		strings.Replace(dummyPrivateKey, "\n", "\\n", -1), email) | 		strings.Replace(dummyPrivateKey, "\n", "\\n", -1), email) | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								staging/src/k8s.io/client-go/Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										46
									
								
								staging/src/k8s.io/client-go/Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							| @@ -122,10 +122,6 @@ | |||||||
| 			"ImportPath": "github.com/golang/groupcache/lru", | 			"ImportPath": "github.com/golang/groupcache/lru", | ||||||
| 			"Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" | 			"Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			"ImportPath": "github.com/golang/protobuf/proto", |  | ||||||
| 			"Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" |  | ||||||
| 		}, |  | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/google/gofuzz", | 			"ImportPath": "github.com/google/gofuzz", | ||||||
| 			"Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" | 			"Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" | ||||||
| @@ -204,23 +200,23 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2", | 			"ImportPath": "golang.org/x/oauth2", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/google", | 			"ImportPath": "golang.org/x/oauth2/google", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/internal", | 			"ImportPath": "golang.org/x/oauth2/internal", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/jws", | 			"ImportPath": "golang.org/x/oauth2/jws", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2/jwt", | 			"ImportPath": "golang.org/x/oauth2/jwt", | ||||||
| 			"Rev": "3c3a985cb79f52a3190fbc056984415ca6763d01" | 			"Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/sys/unix", | 			"ImportPath": "golang.org/x/sys/unix", | ||||||
| @@ -266,38 +262,6 @@ | |||||||
| 			"ImportPath": "golang.org/x/text/width", | 			"ImportPath": "golang.org/x/text/width", | ||||||
| 			"Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" | 			"Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			"ImportPath": "google.golang.org/appengine", |  | ||||||
| 			"Rev": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05" |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			"ImportPath": "google.golang.org/appengine/internal", |  | ||||||
| 			"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": "gopkg.in/inf.v0", | 			"ImportPath": "gopkg.in/inf.v0", | ||||||
| 			"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" | 			"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/BUILD
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/BUILD
									
									
									
									
										vendored
									
									
								
							| @@ -349,7 +349,6 @@ filegroup( | |||||||
|         "//vendor/google.golang.org/api/googleapi:all-srcs", |         "//vendor/google.golang.org/api/googleapi:all-srcs", | ||||||
|         "//vendor/google.golang.org/api/logging/v2beta1:all-srcs", |         "//vendor/google.golang.org/api/logging/v2beta1:all-srcs", | ||||||
|         "//vendor/google.golang.org/api/monitoring/v3:all-srcs", |         "//vendor/google.golang.org/api/monitoring/v3:all-srcs", | ||||||
|         "//vendor/google.golang.org/appengine:all-srcs", |  | ||||||
|         "//vendor/google.golang.org/grpc:all-srcs", |         "//vendor/google.golang.org/grpc:all-srcs", | ||||||
|         "//vendor/gopkg.in/gcfg.v1:all-srcs", |         "//vendor/gopkg.in/gcfg.v1:all-srcs", | ||||||
|         "//vendor/gopkg.in/inf.v0:all-srcs", |         "//vendor/gopkg.in/inf.v0:all-srcs", | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/oauth2/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/oauth2/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -63,3 +63,12 @@ with the `oauth2` package. | |||||||
| 		client.Get("...") | 		client.Get("...") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | ## Contributing | ||||||
|  |  | ||||||
|  | We appreciate your help! | ||||||
|  |  | ||||||
|  | To contribute, please read the contribution guidelines: | ||||||
|  | 	https://golang.org/doc/contribute.html | ||||||
|  |  | ||||||
|  | Note that the Go project does not use GitHub pull requests but | ||||||
|  | uses Gerrit for code reviews. See the contribution guide for details. | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								vendor/golang.org/x/oauth2/google/appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/golang.org/x/oauth2/google/appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,12 +14,15 @@ 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. | // appengineFlex is set at init time by appengineflex_hook.go. If true, we are on App Engine Flex. | ||||||
| var appengineVM bool | var appengineFlex 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) | ||||||
|  |  | ||||||
|  | // Set at init time by appengine_hook.go. If nil, we're not on App Engine. | ||||||
|  | var appengineAppIDFunc func(c context.Context) string | ||||||
|  |  | ||||||
| // AppEngineTokenSource returns a token source that fetches tokens | // AppEngineTokenSource returns a token source that fetches tokens | ||||||
| // issued to the current App Engine application's service account. | // issued to the current App Engine application's service account. | ||||||
| // If you are implementing a 3-legged OAuth 2.0 flow on App Engine | // If you are implementing a 3-legged OAuth 2.0 flow on App Engine | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/oauth2/google/appengine_hook.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/oauth2/google/appengine_hook.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,7 +2,7 @@ | |||||||
| // 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 | // +build appengine appenginevm | ||||||
|  |  | ||||||
| package google | package google | ||||||
|  |  | ||||||
| @@ -10,4 +10,5 @@ import "google.golang.org/appengine" | |||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	appengineTokenFunc = appengine.AccessToken | 	appengineTokenFunc = appengine.AccessToken | ||||||
|  | 	appengineAppIDFunc = appengine.AppID | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/oauth2/google/appengineflex_hook.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/oauth2/google/appengineflex_hook.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | // 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. | ||||||
|  |  | ||||||
|  | // +build appenginevm | ||||||
|  |  | ||||||
|  | package google | ||||||
|  |  | ||||||
|  | func init() { | ||||||
|  | 	appengineFlex = true // Flex doesn't support appengine.AccessToken; depend on metadata server. | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								vendor/golang.org/x/oauth2/google/appenginevm_hook.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/oauth2/google/appenginevm_hook.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,14 +0,0 @@ | |||||||
| // 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 |  | ||||||
| } |  | ||||||
							
								
								
									
										115
									
								
								vendor/golang.org/x/oauth2/google/default.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										115
									
								
								vendor/golang.org/x/oauth2/google/default.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,7 +6,6 @@ package google | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"errors" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| @@ -17,19 +16,18 @@ import ( | |||||||
| 	"cloud.google.com/go/compute/metadata" | 	"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" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | // DefaultCredentials holds "Application Default Credentials". | ||||||
|  | // For more details, see: | ||||||
|  | // https://developers.google.com/accounts/docs/application-default-credentials | ||||||
|  | type DefaultCredentials struct { | ||||||
|  | 	ProjectID   string // may be empty | ||||||
|  | 	TokenSource oauth2.TokenSource | ||||||
|  | } | ||||||
|  |  | ||||||
| // DefaultClient returns an HTTP Client that uses the | // DefaultClient returns an HTTP Client that uses the | ||||||
| // DefaultTokenSource to obtain authentication credentials. | // DefaultTokenSource to obtain authentication credentials. | ||||||
| // |  | ||||||
| // This client should be used when developing services |  | ||||||
| // that run on Google App Engine or Google Compute Engine |  | ||||||
| // and use "Application Default Credentials." |  | ||||||
| // |  | ||||||
| // For more details, see: |  | ||||||
| // https://developers.google.com/accounts/docs/application-default-credentials |  | ||||||
| // |  | ||||||
| func DefaultClient(ctx context.Context, scope ...string) (*http.Client, error) { | func DefaultClient(ctx context.Context, scope ...string) (*http.Client, error) { | ||||||
| 	ts, err := DefaultTokenSource(ctx, scope...) | 	ts, err := DefaultTokenSource(ctx, scope...) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -38,8 +36,18 @@ func DefaultClient(ctx context.Context, scope ...string) (*http.Client, error) { | |||||||
| 	return oauth2.NewClient(ctx, ts), nil | 	return oauth2.NewClient(ctx, ts), nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // DefaultTokenSource is a token source that uses | // DefaultTokenSource returns the token source for | ||||||
| // "Application Default Credentials". | // "Application Default Credentials". | ||||||
|  | // It is a shortcut for FindDefaultCredentials(ctx, scope).TokenSource. | ||||||
|  | func DefaultTokenSource(ctx context.Context, scope ...string) (oauth2.TokenSource, error) { | ||||||
|  | 	creds, err := FindDefaultCredentials(ctx, scope...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return creds.TokenSource, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // FindDefaultCredentials searches for "Application Default Credentials". | ||||||
| // | // | ||||||
| // It looks for credentials in the following places, | // It looks for credentials in the following places, | ||||||
| // preferring the first location found: | // preferring the first location found: | ||||||
| @@ -53,45 +61,40 @@ func DefaultClient(ctx context.Context, scope ...string) (*http.Client, error) { | |||||||
| //   4. On Google Compute Engine and Google App Engine Managed VMs, it fetches | //   4. On Google Compute Engine and Google App Engine Managed VMs, it fetches | ||||||
| //      credentials from the metadata server. | //      credentials from the metadata server. | ||||||
| //      (In this final case any provided scopes are ignored.) | //      (In this final case any provided scopes are ignored.) | ||||||
| // | func FindDefaultCredentials(ctx context.Context, scope ...string) (*DefaultCredentials, error) { | ||||||
| // For more details, see: |  | ||||||
| // https://developers.google.com/accounts/docs/application-default-credentials |  | ||||||
| // |  | ||||||
| func DefaultTokenSource(ctx context.Context, scope ...string) (oauth2.TokenSource, error) { |  | ||||||
| 	// First, try the environment variable. | 	// First, try the environment variable. | ||||||
| 	const envVar = "GOOGLE_APPLICATION_CREDENTIALS" | 	const envVar = "GOOGLE_APPLICATION_CREDENTIALS" | ||||||
| 	if filename := os.Getenv(envVar); filename != "" { | 	if filename := os.Getenv(envVar); filename != "" { | ||||||
| 		ts, err := tokenSourceFromFile(ctx, filename, scope) | 		creds, err := readCredentialsFile(ctx, filename, scope) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return nil, fmt.Errorf("google: error getting credentials using %v environment variable: %v", envVar, err) | 			return nil, fmt.Errorf("google: error getting credentials using %v environment variable: %v", envVar, err) | ||||||
| 		} | 		} | ||||||
| 		return ts, nil | 		return creds, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Second, try a well-known file. | 	// Second, try a well-known file. | ||||||
| 	filename := wellKnownFile() | 	filename := wellKnownFile() | ||||||
| 	_, err := os.Stat(filename) | 	if creds, err := readCredentialsFile(ctx, filename, scope); err == nil { | ||||||
| 	if err == nil { | 		return creds, nil | ||||||
| 		ts, err2 := tokenSourceFromFile(ctx, filename, scope) | 	} else if !os.IsNotExist(err) { | ||||||
| 		if err2 == nil { |  | ||||||
| 			return ts, nil |  | ||||||
| 		} |  | ||||||
| 		err = err2 |  | ||||||
| 	} else if os.IsNotExist(err) { |  | ||||||
| 		err = nil // ignore this error |  | ||||||
| 	} |  | ||||||
| 	if err != nil { |  | ||||||
| 		return nil, fmt.Errorf("google: error getting credentials using well-known file (%v): %v", filename, err) | 		return nil, fmt.Errorf("google: error getting credentials using well-known file (%v): %v", filename, err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// 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 && !appengineVM { | 	if appengineTokenFunc != nil && !appengineFlex { | ||||||
| 		return AppEngineTokenSource(ctx, scope...), nil | 		return &DefaultCredentials{ | ||||||
|  | 			ProjectID:   appengineAppIDFunc(ctx), | ||||||
|  | 			TokenSource: AppEngineTokenSource(ctx, scope...), | ||||||
|  | 		}, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Fourth, if we're on Google Compute Engine use the metadata server. | 	// Fourth, if we're on Google Compute Engine use the metadata server. | ||||||
| 	if metadata.OnGCE() { | 	if metadata.OnGCE() { | ||||||
| 		return ComputeTokenSource(""), nil | 		id, _ := metadata.ProjectID() | ||||||
|  | 		return &DefaultCredentials{ | ||||||
|  | 			ProjectID:   id, | ||||||
|  | 			TokenSource: ComputeTokenSource(""), | ||||||
|  | 		}, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// None are found; return helpful error. | 	// None are found; return helpful error. | ||||||
| @@ -107,49 +110,21 @@ func wellKnownFile() string { | |||||||
| 	return filepath.Join(guessUnixHomeDir(), ".config", "gcloud", f) | 	return filepath.Join(guessUnixHomeDir(), ".config", "gcloud", f) | ||||||
| } | } | ||||||
|  |  | ||||||
| func tokenSourceFromFile(ctx context.Context, filename string, scopes []string) (oauth2.TokenSource, error) { | func readCredentialsFile(ctx context.Context, filename string, scopes []string) (*DefaultCredentials, error) { | ||||||
| 	b, err := ioutil.ReadFile(filename) | 	b, err := ioutil.ReadFile(filename) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	var d struct { | 	var f credentialsFile | ||||||
| 		// Common fields | 	if err := json.Unmarshal(b, &f); err != nil { | ||||||
| 		Type     string |  | ||||||
| 		ClientID string `json:"client_id"` |  | ||||||
|  |  | ||||||
| 		// User Credential fields |  | ||||||
| 		ClientSecret string `json:"client_secret"` |  | ||||||
| 		RefreshToken string `json:"refresh_token"` |  | ||||||
|  |  | ||||||
| 		// Service Account fields |  | ||||||
| 		ClientEmail  string `json:"client_email"` |  | ||||||
| 		PrivateKeyID string `json:"private_key_id"` |  | ||||||
| 		PrivateKey   string `json:"private_key"` |  | ||||||
| 	} |  | ||||||
| 	if err := json.Unmarshal(b, &d); err != nil { |  | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	switch d.Type { | 	ts, err := f.tokenSource(ctx, append([]string(nil), scopes...)) | ||||||
| 	case "authorized_user": | 	if err != nil { | ||||||
| 		cfg := &oauth2.Config{ | 		return nil, err | ||||||
| 			ClientID:     d.ClientID, |  | ||||||
| 			ClientSecret: d.ClientSecret, |  | ||||||
| 			Scopes:       append([]string{}, scopes...), // copy |  | ||||||
| 			Endpoint:     Endpoint, |  | ||||||
| 		} |  | ||||||
| 		tok := &oauth2.Token{RefreshToken: d.RefreshToken} |  | ||||||
| 		return cfg.TokenSource(ctx, tok), nil |  | ||||||
| 	case "service_account": |  | ||||||
| 		cfg := &jwt.Config{ |  | ||||||
| 			Email:      d.ClientEmail, |  | ||||||
| 			PrivateKey: []byte(d.PrivateKey), |  | ||||||
| 			Scopes:     append([]string{}, scopes...), // copy |  | ||||||
| 			TokenURL:   JWTTokenURL, |  | ||||||
| 		} |  | ||||||
| 		return cfg.TokenSource(ctx), nil |  | ||||||
| 	case "": |  | ||||||
| 		return nil, errors.New("missing 'type' field in credentials") |  | ||||||
| 	default: |  | ||||||
| 		return nil, fmt.Errorf("unknown credential type: %q", d.Type) |  | ||||||
| 	} | 	} | ||||||
|  | 	return &DefaultCredentials{ | ||||||
|  | 		ProjectID:   f.ProjectID, | ||||||
|  | 		TokenSource: ts, | ||||||
|  | 	}, nil | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										81
									
								
								vendor/golang.org/x/oauth2/google/google.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								vendor/golang.org/x/oauth2/google/google.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -22,6 +22,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"cloud.google.com/go/compute/metadata" | 	"cloud.google.com/go/compute/metadata" | ||||||
|  | 	"golang.org/x/net/context" | ||||||
| 	"golang.org/x/oauth2" | 	"golang.org/x/oauth2" | ||||||
| 	"golang.org/x/oauth2/jwt" | 	"golang.org/x/oauth2/jwt" | ||||||
| ) | ) | ||||||
| @@ -85,26 +86,74 @@ func ConfigFromJSON(jsonKey []byte, scope ...string) (*oauth2.Config, error) { | |||||||
| // Create a service account on "Credentials" for your project at | // Create a service account on "Credentials" for your 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 f credentialsFile | ||||||
| 		Email        string `json:"client_email"` | 	if err := json.Unmarshal(jsonKey, &f); err != nil { | ||||||
| 		PrivateKey   string `json:"private_key"` |  | ||||||
| 		PrivateKeyID string `json:"private_key_id"` |  | ||||||
| 		TokenURL     string `json:"token_uri"` |  | ||||||
| 	} |  | ||||||
| 	if err := json.Unmarshal(jsonKey, &key); err != nil { |  | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	config := &jwt.Config{ | 	if f.Type != serviceAccountKey { | ||||||
| 		Email:        key.Email, | 		return nil, fmt.Errorf("google: read JWT from JSON credentials: 'type' field is %q (expected %q)", f.Type, serviceAccountKey) | ||||||
| 		PrivateKey:   []byte(key.PrivateKey), |  | ||||||
| 		PrivateKeyID: key.PrivateKeyID, |  | ||||||
| 		Scopes:       scope, |  | ||||||
| 		TokenURL:     key.TokenURL, |  | ||||||
| 	} | 	} | ||||||
| 	if config.TokenURL == "" { | 	scope = append([]string(nil), scope...) // copy | ||||||
| 		config.TokenURL = JWTTokenURL | 	return f.jwtConfig(scope), nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // JSON key file types. | ||||||
|  | const ( | ||||||
|  | 	serviceAccountKey  = "service_account" | ||||||
|  | 	userCredentialsKey = "authorized_user" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // credentialsFile is the unmarshalled representation of a credentials file. | ||||||
|  | type credentialsFile struct { | ||||||
|  | 	Type string `json:"type"` // serviceAccountKey or userCredentialsKey | ||||||
|  |  | ||||||
|  | 	// Service Account fields | ||||||
|  | 	ClientEmail  string `json:"client_email"` | ||||||
|  | 	PrivateKeyID string `json:"private_key_id"` | ||||||
|  | 	PrivateKey   string `json:"private_key"` | ||||||
|  | 	TokenURL     string `json:"token_uri"` | ||||||
|  | 	ProjectID    string `json:"project_id"` | ||||||
|  |  | ||||||
|  | 	// User Credential fields | ||||||
|  | 	// (These typically come from gcloud auth.) | ||||||
|  | 	ClientSecret string `json:"client_secret"` | ||||||
|  | 	ClientID     string `json:"client_id"` | ||||||
|  | 	RefreshToken string `json:"refresh_token"` | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (f *credentialsFile) jwtConfig(scopes []string) *jwt.Config { | ||||||
|  | 	cfg := &jwt.Config{ | ||||||
|  | 		Email:        f.ClientEmail, | ||||||
|  | 		PrivateKey:   []byte(f.PrivateKey), | ||||||
|  | 		PrivateKeyID: f.PrivateKeyID, | ||||||
|  | 		Scopes:       scopes, | ||||||
|  | 		TokenURL:     f.TokenURL, | ||||||
|  | 	} | ||||||
|  | 	if cfg.TokenURL == "" { | ||||||
|  | 		cfg.TokenURL = JWTTokenURL | ||||||
|  | 	} | ||||||
|  | 	return cfg | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (f *credentialsFile) tokenSource(ctx context.Context, scopes []string) (oauth2.TokenSource, error) { | ||||||
|  | 	switch f.Type { | ||||||
|  | 	case serviceAccountKey: | ||||||
|  | 		cfg := f.jwtConfig(scopes) | ||||||
|  | 		return cfg.TokenSource(ctx), nil | ||||||
|  | 	case userCredentialsKey: | ||||||
|  | 		cfg := &oauth2.Config{ | ||||||
|  | 			ClientID:     f.ClientID, | ||||||
|  | 			ClientSecret: f.ClientSecret, | ||||||
|  | 			Scopes:       scopes, | ||||||
|  | 			Endpoint:     Endpoint, | ||||||
|  | 		} | ||||||
|  | 		tok := &oauth2.Token{RefreshToken: f.RefreshToken} | ||||||
|  | 		return cfg.TokenSource(ctx, tok), nil | ||||||
|  | 	case "": | ||||||
|  | 		return nil, errors.New("missing 'type' field in credentials") | ||||||
|  | 	default: | ||||||
|  | 		return nil, fmt.Errorf("unknown credential type: %q", f.Type) | ||||||
| 	} | 	} | ||||||
| 	return config, nil |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // ComputeTokenSource returns a token source that fetches access tokens | // ComputeTokenSource returns a token source that fetches access tokens | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/oauth2/google/sdk.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/oauth2/google/sdk.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -160,9 +160,13 @@ var sdkConfigPath = func() (string, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func guessUnixHomeDir() string { | func guessUnixHomeDir() string { | ||||||
| 	usr, err := user.Current() | 	// Prefer $HOME over user.Current due to glibc bug: golang.org/issue/13470 | ||||||
| 	if err == nil { | 	if v := os.Getenv("HOME"); v != "" { | ||||||
| 		return usr.HomeDir | 		return v | ||||||
| 	} | 	} | ||||||
| 	return os.Getenv("HOME") | 	// Else, fall back to user.Current: | ||||||
|  | 	if u, err := user.Current(); err == nil { | ||||||
|  | 		return u.HomeDir | ||||||
|  | 	} | ||||||
|  | 	return "" | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/oauth2/internal/oauth2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/oauth2/internal/oauth2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -42,7 +42,7 @@ func ParseKey(key []byte) (*rsa.PrivateKey, error) { | |||||||
|  |  | ||||||
| func ParseINI(ini io.Reader) (map[string]map[string]string, error) { | func ParseINI(ini io.Reader) (map[string]map[string]string, error) { | ||||||
| 	result := map[string]map[string]string{ | 	result := map[string]map[string]string{ | ||||||
| 		"": map[string]string{}, // root section | 		"": {}, // root section | ||||||
| 	} | 	} | ||||||
| 	scanner := bufio.NewScanner(ini) | 	scanner := bufio.NewScanner(ini) | ||||||
| 	currentSection := "" | 	currentSection := "" | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								vendor/golang.org/x/oauth2/internal/token.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/golang.org/x/oauth2/internal/token.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -91,6 +91,7 @@ func (e *expirationTime) UnmarshalJSON(b []byte) error { | |||||||
|  |  | ||||||
| var brokenAuthHeaderProviders = []string{ | var brokenAuthHeaderProviders = []string{ | ||||||
| 	"https://accounts.google.com/", | 	"https://accounts.google.com/", | ||||||
|  | 	"https://api.codeswholesale.com/oauth/token", | ||||||
| 	"https://api.dropbox.com/", | 	"https://api.dropbox.com/", | ||||||
| 	"https://api.dropboxapi.com/", | 	"https://api.dropboxapi.com/", | ||||||
| 	"https://api.instagram.com/", | 	"https://api.instagram.com/", | ||||||
| @@ -101,6 +102,7 @@ var brokenAuthHeaderProviders = []string{ | |||||||
| 	"https://api.twitch.tv/", | 	"https://api.twitch.tv/", | ||||||
| 	"https://app.box.com/", | 	"https://app.box.com/", | ||||||
| 	"https://connect.stripe.com/", | 	"https://connect.stripe.com/", | ||||||
|  | 	"https://graph.facebook.com", // see https://github.com/golang/oauth2/issues/214 | ||||||
| 	"https://login.microsoftonline.com/", | 	"https://login.microsoftonline.com/", | ||||||
| 	"https://login.salesforce.com/", | 	"https://login.salesforce.com/", | ||||||
| 	"https://oauth.sandbox.trainingpeaks.com/", | 	"https://oauth.sandbox.trainingpeaks.com/", | ||||||
| @@ -117,6 +119,14 @@ var brokenAuthHeaderProviders = []string{ | |||||||
| 	"https://www.strava.com/oauth/", | 	"https://www.strava.com/oauth/", | ||||||
| 	"https://www.wunderlist.com/oauth/", | 	"https://www.wunderlist.com/oauth/", | ||||||
| 	"https://api.patreon.com/", | 	"https://api.patreon.com/", | ||||||
|  | 	"https://sandbox.codeswholesale.com/oauth/token", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // brokenAuthHeaderDomains lists broken providers that issue dynamic endpoints. | ||||||
|  | var brokenAuthHeaderDomains = []string{ | ||||||
|  | 	".force.com", | ||||||
|  | 	".okta.com", | ||||||
|  | 	".oktapreview.com", | ||||||
| } | } | ||||||
|  |  | ||||||
| func RegisterBrokenAuthHeaderProvider(tokenURL string) { | func RegisterBrokenAuthHeaderProvider(tokenURL string) { | ||||||
| @@ -139,6 +149,14 @@ func providerAuthHeaderWorks(tokenURL string) bool { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if u, err := url.Parse(tokenURL); err == nil { | ||||||
|  | 		for _, s := range brokenAuthHeaderDomains { | ||||||
|  | 			if strings.HasSuffix(u.Host, s) { | ||||||
|  | 				return false | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// Assume the provider implements the spec properly | 	// Assume the provider implements the spec properly | ||||||
| 	// otherwise. We can add more exceptions as they're | 	// otherwise. We can add more exceptions as they're | ||||||
| 	// discovered. We will _not_ be adding configurable hooks | 	// discovered. We will _not_ be adding configurable hooks | ||||||
| @@ -151,11 +169,15 @@ func RetrieveToken(ctx context.Context, clientID, clientSecret, tokenURL string, | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	v.Set("client_id", clientID) |  | ||||||
| 	bustedAuth := !providerAuthHeaderWorks(tokenURL) | 	bustedAuth := !providerAuthHeaderWorks(tokenURL) | ||||||
| 	if bustedAuth && clientSecret != "" { | 	if bustedAuth { | ||||||
|  | 		if clientID != "" { | ||||||
|  | 			v.Set("client_id", clientID) | ||||||
|  | 		} | ||||||
|  | 		if 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 | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/oauth2/jwt/jwt.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/oauth2/jwt/jwt.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -105,7 +105,9 @@ func (js jwtSource) Token() (*oauth2.Token, error) { | |||||||
| 	if t := js.conf.Expires; t > 0 { | 	if t := js.conf.Expires; t > 0 { | ||||||
| 		claimSet.Exp = time.Now().Add(t).Unix() | 		claimSet.Exp = time.Now().Add(t).Unix() | ||||||
| 	} | 	} | ||||||
| 	payload, err := jws.Encode(defaultHeader, claimSet, pk) | 	h := *defaultHeader | ||||||
|  | 	h.KeyID = js.conf.PrivateKeyID | ||||||
|  | 	payload, err := jws.Encode(&h, claimSet, pk) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/oauth2/oauth2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/oauth2/oauth2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -180,7 +180,6 @@ func (c *Config) Exchange(ctx context.Context, code string) (*Token, error) { | |||||||
| 		"grant_type":   {"authorization_code"}, | 		"grant_type":   {"authorization_code"}, | ||||||
| 		"code":         {code}, | 		"code":         {code}, | ||||||
| 		"redirect_uri": internal.CondVal(c.RedirectURL), | 		"redirect_uri": internal.CondVal(c.RedirectURL), | ||||||
| 		"scope":        internal.CondVal(strings.Join(c.Scopes, " ")), |  | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								vendor/google.golang.org/appengine/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/google.golang.org/appengine/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,18 +0,0 @@ | |||||||
| 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/... |  | ||||||
							
								
								
									
										44
									
								
								vendor/google.golang.org/appengine/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								vendor/google.golang.org/appengine/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,44 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = [ |  | ||||||
|         "appengine.go", |  | ||||||
|         "appengine_vm.go", |  | ||||||
|         "errors.go", |  | ||||||
|         "identity.go", |  | ||||||
|         "namespace.go", |  | ||||||
|         "timeout.go", |  | ||||||
|     ], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//vendor/github.com/golang/protobuf/proto:go_default_library", |  | ||||||
|         "//vendor/golang.org/x/net/context:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/app_identity:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/modules:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [ |  | ||||||
|         ":package-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal:all-srcs", |  | ||||||
|     ], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										202
									
								
								vendor/google.golang.org/appengine/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										202
									
								
								vendor/google.golang.org/appengine/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,202 +0,0 @@ | |||||||
|  |  | ||||||
|                                  Apache License |  | ||||||
|                            Version 2.0, January 2004 |  | ||||||
|                         http://www.apache.org/licenses/ |  | ||||||
|  |  | ||||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |  | ||||||
|  |  | ||||||
|    1. Definitions. |  | ||||||
|  |  | ||||||
|       "License" shall mean the terms and conditions for use, reproduction, |  | ||||||
|       and distribution as defined by Sections 1 through 9 of this document. |  | ||||||
|  |  | ||||||
|       "Licensor" shall mean the copyright owner or entity authorized by |  | ||||||
|       the copyright owner that is granting the License. |  | ||||||
|  |  | ||||||
|       "Legal Entity" shall mean the union of the acting entity and all |  | ||||||
|       other entities that control, are controlled by, or are under common |  | ||||||
|       control with that entity. For the purposes of this definition, |  | ||||||
|       "control" means (i) the power, direct or indirect, to cause the |  | ||||||
|       direction or management of such entity, whether by contract or |  | ||||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the |  | ||||||
|       outstanding shares, or (iii) beneficial ownership of such entity. |  | ||||||
|  |  | ||||||
|       "You" (or "Your") shall mean an individual or Legal Entity |  | ||||||
|       exercising permissions granted by this License. |  | ||||||
|  |  | ||||||
|       "Source" form shall mean the preferred form for making modifications, |  | ||||||
|       including but not limited to software source code, documentation |  | ||||||
|       source, and configuration files. |  | ||||||
|  |  | ||||||
|       "Object" form shall mean any form resulting from mechanical |  | ||||||
|       transformation or translation of a Source form, including but |  | ||||||
|       not limited to compiled object code, generated documentation, |  | ||||||
|       and conversions to other media types. |  | ||||||
|  |  | ||||||
|       "Work" shall mean the work of authorship, whether in Source or |  | ||||||
|       Object form, made available under the License, as indicated by a |  | ||||||
|       copyright notice that is included in or attached to the work |  | ||||||
|       (an example is provided in the Appendix below). |  | ||||||
|  |  | ||||||
|       "Derivative Works" shall mean any work, whether in Source or Object |  | ||||||
|       form, that is based on (or derived from) the Work and for which the |  | ||||||
|       editorial revisions, annotations, elaborations, or other modifications |  | ||||||
|       represent, as a whole, an original work of authorship. For the purposes |  | ||||||
|       of this License, Derivative Works shall not include works that remain |  | ||||||
|       separable from, or merely link (or bind by name) to the interfaces of, |  | ||||||
|       the Work and Derivative Works thereof. |  | ||||||
|  |  | ||||||
|       "Contribution" shall mean any work of authorship, including |  | ||||||
|       the original version of the Work and any modifications or additions |  | ||||||
|       to that Work or Derivative Works thereof, that is intentionally |  | ||||||
|       submitted to Licensor for inclusion in the Work by the copyright owner |  | ||||||
|       or by an individual or Legal Entity authorized to submit on behalf of |  | ||||||
|       the copyright owner. For the purposes of this definition, "submitted" |  | ||||||
|       means any form of electronic, verbal, or written communication sent |  | ||||||
|       to the Licensor or its representatives, including but not limited to |  | ||||||
|       communication on electronic mailing lists, source code control systems, |  | ||||||
|       and issue tracking systems that are managed by, or on behalf of, the |  | ||||||
|       Licensor for the purpose of discussing and improving the Work, but |  | ||||||
|       excluding communication that is conspicuously marked or otherwise |  | ||||||
|       designated in writing by the copyright owner as "Not a Contribution." |  | ||||||
|  |  | ||||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity |  | ||||||
|       on behalf of whom a Contribution has been received by Licensor and |  | ||||||
|       subsequently incorporated within the Work. |  | ||||||
|  |  | ||||||
|    2. Grant of Copyright License. Subject to the terms and conditions of |  | ||||||
|       this License, each Contributor hereby grants to You a perpetual, |  | ||||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable |  | ||||||
|       copyright license to reproduce, prepare Derivative Works of, |  | ||||||
|       publicly display, publicly perform, sublicense, and distribute the |  | ||||||
|       Work and such Derivative Works in Source or Object form. |  | ||||||
|  |  | ||||||
|    3. Grant of Patent License. Subject to the terms and conditions of |  | ||||||
|       this License, each Contributor hereby grants to You a perpetual, |  | ||||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable |  | ||||||
|       (except as stated in this section) patent license to make, have made, |  | ||||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, |  | ||||||
|       where such license applies only to those patent claims licensable |  | ||||||
|       by such Contributor that are necessarily infringed by their |  | ||||||
|       Contribution(s) alone or by combination of their Contribution(s) |  | ||||||
|       with the Work to which such Contribution(s) was submitted. If You |  | ||||||
|       institute patent litigation against any entity (including a |  | ||||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work |  | ||||||
|       or a Contribution incorporated within the Work constitutes direct |  | ||||||
|       or contributory patent infringement, then any patent licenses |  | ||||||
|       granted to You under this License for that Work shall terminate |  | ||||||
|       as of the date such litigation is filed. |  | ||||||
|  |  | ||||||
|    4. Redistribution. You may reproduce and distribute copies of the |  | ||||||
|       Work or Derivative Works thereof in any medium, with or without |  | ||||||
|       modifications, and in Source or Object form, provided that You |  | ||||||
|       meet the following conditions: |  | ||||||
|  |  | ||||||
|       (a) You must give any other recipients of the Work or |  | ||||||
|           Derivative Works a copy of this License; and |  | ||||||
|  |  | ||||||
|       (b) You must cause any modified files to carry prominent notices |  | ||||||
|           stating that You changed the files; and |  | ||||||
|  |  | ||||||
|       (c) You must retain, in the Source form of any Derivative Works |  | ||||||
|           that You distribute, all copyright, patent, trademark, and |  | ||||||
|           attribution notices from the Source form of the Work, |  | ||||||
|           excluding those notices that do not pertain to any part of |  | ||||||
|           the Derivative Works; and |  | ||||||
|  |  | ||||||
|       (d) If the Work includes a "NOTICE" text file as part of its |  | ||||||
|           distribution, then any Derivative Works that You distribute must |  | ||||||
|           include a readable copy of the attribution notices contained |  | ||||||
|           within such NOTICE file, excluding those notices that do not |  | ||||||
|           pertain to any part of the Derivative Works, in at least one |  | ||||||
|           of the following places: within a NOTICE text file distributed |  | ||||||
|           as part of the Derivative Works; within the Source form or |  | ||||||
|           documentation, if provided along with the Derivative Works; or, |  | ||||||
|           within a display generated by the Derivative Works, if and |  | ||||||
|           wherever such third-party notices normally appear. The contents |  | ||||||
|           of the NOTICE file are for informational purposes only and |  | ||||||
|           do not modify the License. You may add Your own attribution |  | ||||||
|           notices within Derivative Works that You distribute, alongside |  | ||||||
|           or as an addendum to the NOTICE text from the Work, provided |  | ||||||
|           that such additional attribution notices cannot be construed |  | ||||||
|           as modifying the License. |  | ||||||
|  |  | ||||||
|       You may add Your own copyright statement to Your modifications and |  | ||||||
|       may provide additional or different license terms and conditions |  | ||||||
|       for use, reproduction, or distribution of Your modifications, or |  | ||||||
|       for any such Derivative Works as a whole, provided Your use, |  | ||||||
|       reproduction, and distribution of the Work otherwise complies with |  | ||||||
|       the conditions stated in this License. |  | ||||||
|  |  | ||||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, |  | ||||||
|       any Contribution intentionally submitted for inclusion in the Work |  | ||||||
|       by You to the Licensor shall be under the terms and conditions of |  | ||||||
|       this License, without any additional terms or conditions. |  | ||||||
|       Notwithstanding the above, nothing herein shall supersede or modify |  | ||||||
|       the terms of any separate license agreement you may have executed |  | ||||||
|       with Licensor regarding such Contributions. |  | ||||||
|  |  | ||||||
|    6. Trademarks. This License does not grant permission to use the trade |  | ||||||
|       names, trademarks, service marks, or product names of the Licensor, |  | ||||||
|       except as required for reasonable and customary use in describing the |  | ||||||
|       origin of the Work and reproducing the content of the NOTICE file. |  | ||||||
|  |  | ||||||
|    7. Disclaimer of Warranty. Unless required by applicable law or |  | ||||||
|       agreed to in writing, Licensor provides the Work (and each |  | ||||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, |  | ||||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |  | ||||||
|       implied, including, without limitation, any warranties or conditions |  | ||||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |  | ||||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the |  | ||||||
|       appropriateness of using or redistributing the Work and assume any |  | ||||||
|       risks associated with Your exercise of permissions under this License. |  | ||||||
|  |  | ||||||
|    8. Limitation of Liability. In no event and under no legal theory, |  | ||||||
|       whether in tort (including negligence), contract, or otherwise, |  | ||||||
|       unless required by applicable law (such as deliberate and grossly |  | ||||||
|       negligent acts) or agreed to in writing, shall any Contributor be |  | ||||||
|       liable to You for damages, including any direct, indirect, special, |  | ||||||
|       incidental, or consequential damages of any character arising as a |  | ||||||
|       result of this License or out of the use or inability to use the |  | ||||||
|       Work (including but not limited to damages for loss of goodwill, |  | ||||||
|       work stoppage, computer failure or malfunction, or any and all |  | ||||||
|       other commercial damages or losses), even if such Contributor |  | ||||||
|       has been advised of the possibility of such damages. |  | ||||||
|  |  | ||||||
|    9. Accepting Warranty or Additional Liability. While redistributing |  | ||||||
|       the Work or Derivative Works thereof, You may choose to offer, |  | ||||||
|       and charge a fee for, acceptance of support, warranty, indemnity, |  | ||||||
|       or other liability obligations and/or rights consistent with this |  | ||||||
|       License. However, in accepting such obligations, You may act only |  | ||||||
|       on Your own behalf and on Your sole responsibility, not on behalf |  | ||||||
|       of any other Contributor, and only if You agree to indemnify, |  | ||||||
|       defend, and hold each Contributor harmless for any liability |  | ||||||
|       incurred by, or claims asserted against, such Contributor by reason |  | ||||||
|       of your accepting any such warranty or additional liability. |  | ||||||
|  |  | ||||||
|    END OF TERMS AND CONDITIONS |  | ||||||
|  |  | ||||||
|    APPENDIX: How to apply the Apache License to your work. |  | ||||||
|  |  | ||||||
|       To apply the Apache License to your work, attach the following |  | ||||||
|       boilerplate notice, with the fields enclosed by brackets "[]" |  | ||||||
|       replaced with your own identifying information. (Don't include |  | ||||||
|       the brackets!)  The text should be enclosed in the appropriate |  | ||||||
|       comment syntax for the file format. We also recommend that a |  | ||||||
|       file or class name and description of purpose be included on the |  | ||||||
|       same "printed page" as the copyright notice for easier |  | ||||||
|       identification within third-party archives. |  | ||||||
|  |  | ||||||
|    Copyright [yyyy] [name of copyright owner] |  | ||||||
|  |  | ||||||
|    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. |  | ||||||
							
								
								
									
										71
									
								
								vendor/google.golang.org/appengine/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								vendor/google.golang.org/appengine/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,71 +0,0 @@ | |||||||
| # 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
									
									
								
							
							
						
						
									
										112
									
								
								vendor/google.golang.org/appengine/appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,112 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										20
									
								
								vendor/google.golang.org/appengine/appengine_vm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,20 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										46
									
								
								vendor/google.golang.org/appengine/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,46 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										142
									
								
								vendor/google.golang.org/appengine/identity.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,142 +0,0 @@ | |||||||
| // 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) |  | ||||||
| } |  | ||||||
							
								
								
									
										54
									
								
								vendor/google.golang.org/appengine/internal/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/google.golang.org/appengine/internal/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,54 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = [ |  | ||||||
|         "api.go", |  | ||||||
|         "api_common.go", |  | ||||||
|         "app_id.go", |  | ||||||
|         "identity.go", |  | ||||||
|         "identity_vm.go", |  | ||||||
|         "internal.go", |  | ||||||
|         "main_vm.go", |  | ||||||
|         "metadata.go", |  | ||||||
|         "net.go", |  | ||||||
|         "transaction.go", |  | ||||||
|     ], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//vendor/github.com/golang/protobuf/proto:go_default_library", |  | ||||||
|         "//vendor/golang.org/x/net/context:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/base:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/datastore:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/log:go_default_library", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/remote_api:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [ |  | ||||||
|         ":package-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/app_identity:all-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/base:all-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/datastore:all-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/log:all-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/modules:all-srcs", |  | ||||||
|         "//vendor/google.golang.org/appengine/internal/remote_api:all-srcs", |  | ||||||
|     ], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										646
									
								
								vendor/google.golang.org/appengine/internal/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										646
									
								
								vendor/google.golang.org/appengine/internal/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,646 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										159
									
								
								vendor/google.golang.org/appengine/internal/api_classic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,159 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										86
									
								
								vendor/google.golang.org/appengine/internal/api_common.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,86 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/app_id.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| // 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 |  | ||||||
| } |  | ||||||
							
								
								
									
										28
									
								
								vendor/google.golang.org/appengine/internal/app_identity/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/app_identity/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = ["app_identity_service.pb.go"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [":package-srcs"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										296
									
								
								vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										296
									
								
								vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,296 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										64
									
								
								vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,64 +0,0 @@ | |||||||
| 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; |  | ||||||
| } |  | ||||||
							
								
								
									
										28
									
								
								vendor/google.golang.org/appengine/internal/base/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/base/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = ["api_base.pb.go"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [":package-srcs"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										133
									
								
								vendor/google.golang.org/appengine/internal/base/api_base.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										133
									
								
								vendor/google.golang.org/appengine/internal/base/api_base.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,133 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										33
									
								
								vendor/google.golang.org/appengine/internal/base/api_base.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,33 +0,0 @@ | |||||||
| // 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 { |  | ||||||
| } |  | ||||||
							
								
								
									
										28
									
								
								vendor/google.golang.org/appengine/internal/datastore/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/datastore/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = ["datastore_v3.pb.go"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [":package-srcs"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										2778
									
								
								vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2778
									
								
								vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										541
									
								
								vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										541
									
								
								vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,541 +0,0 @@ | |||||||
| 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
									
									
								
							
							
						
						
									
										14
									
								
								vendor/google.golang.org/appengine/internal/identity.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,14 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										27
									
								
								vendor/google.golang.org/appengine/internal/identity_classic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,27 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										97
									
								
								vendor/google.golang.org/appengine/internal/identity_vm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,97 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										110
									
								
								vendor/google.golang.org/appengine/internal/internal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,110 +0,0 @@ | |||||||
| // 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)) |  | ||||||
							
								
								
									
										28
									
								
								vendor/google.golang.org/appengine/internal/log/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/log/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = ["log_service.pb.go"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [":package-srcs"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										899
									
								
								vendor/google.golang.org/appengine/internal/log/log_service.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										899
									
								
								vendor/google.golang.org/appengine/internal/log/log_service.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,899 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										150
									
								
								vendor/google.golang.org/appengine/internal/log/log_service.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,150 +0,0 @@ | |||||||
| 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
									
									
								
							
							
						
						
									
										15
									
								
								vendor/google.golang.org/appengine/internal/main.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,15 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										44
									
								
								vendor/google.golang.org/appengine/internal/main_vm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,44 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										61
									
								
								vendor/google.golang.org/appengine/internal/metadata.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,61 +0,0 @@ | |||||||
| // 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) |  | ||||||
| } |  | ||||||
							
								
								
									
										28
									
								
								vendor/google.golang.org/appengine/internal/modules/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/modules/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = ["modules_service.pb.go"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [":package-srcs"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										375
									
								
								vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										375
									
								
								vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,375 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										80
									
								
								vendor/google.golang.org/appengine/internal/modules/modules_service.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,80 +0,0 @@ | |||||||
| 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
									
									
								
							
							
						
						
									
										56
									
								
								vendor/google.golang.org/appengine/internal/net.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,56 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										40
									
								
								vendor/google.golang.org/appengine/internal/regen.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,40 +0,0 @@ | |||||||
| #!/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 |  | ||||||
							
								
								
									
										28
									
								
								vendor/google.golang.org/appengine/internal/remote_api/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/google.golang.org/appengine/internal/remote_api/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package(default_visibility = ["//visibility:public"]) |  | ||||||
|  |  | ||||||
| licenses(["notice"]) |  | ||||||
|  |  | ||||||
| load( |  | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |  | ||||||
|     "go_library", |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| go_library( |  | ||||||
|     name = "go_default_library", |  | ||||||
|     srcs = ["remote_api.pb.go"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "package-srcs", |  | ||||||
|     srcs = glob(["**"]), |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     visibility = ["//visibility:private"], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( |  | ||||||
|     name = "all-srcs", |  | ||||||
|     srcs = [":package-srcs"], |  | ||||||
|     tags = ["automanaged"], |  | ||||||
| ) |  | ||||||
							
								
								
									
										231
									
								
								vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										231
									
								
								vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,231 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										44
									
								
								vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,44 +0,0 @@ | |||||||
| 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
									
									
								
							
							
						
						
									
										107
									
								
								vendor/google.golang.org/appengine/internal/transaction.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,107 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										25
									
								
								vendor/google.golang.org/appengine/namespace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,25 +0,0 @@ | |||||||
| // 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
									
									
								
							
							
						
						
									
										20
									
								
								vendor/google.golang.org/appengine/timeout.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,20 +0,0 @@ | |||||||
| // 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 |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Submit Queue
					Kubernetes Submit Queue