aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/google.golang.org/appengine
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/google.golang.org/appengine')
-rw-r--r--vendor/google.golang.org/appengine/.travis.yml20
-rw-r--r--vendor/google.golang.org/appengine/CONTRIBUTING.md90
-rw-r--r--vendor/google.golang.org/appengine/LICENSE202
-rw-r--r--vendor/google.golang.org/appengine/README.md73
-rw-r--r--vendor/google.golang.org/appengine/appengine.go137
-rw-r--r--vendor/google.golang.org/appengine/appengine_vm.go20
-rw-r--r--vendor/google.golang.org/appengine/datastore/datastore.go407
-rw-r--r--vendor/google.golang.org/appengine/datastore/doc.go361
-rw-r--r--vendor/google.golang.org/appengine/datastore/key.go396
-rw-r--r--vendor/google.golang.org/appengine/datastore/load.go429
-rw-r--r--vendor/google.golang.org/appengine/datastore/metadata.go78
-rw-r--r--vendor/google.golang.org/appengine/datastore/prop.go330
-rw-r--r--vendor/google.golang.org/appengine/datastore/query.go757
-rw-r--r--vendor/google.golang.org/appengine/datastore/save.go333
-rw-r--r--vendor/google.golang.org/appengine/datastore/transaction.go96
-rw-r--r--vendor/google.golang.org/appengine/errors.go46
-rw-r--r--vendor/google.golang.org/appengine/go.mod7
-rw-r--r--vendor/google.golang.org/appengine/go.sum6
-rw-r--r--vendor/google.golang.org/appengine/identity.go142
-rw-r--r--vendor/google.golang.org/appengine/internal/api.go671
-rw-r--r--vendor/google.golang.org/appengine/internal/api_classic.go169
-rw-r--r--vendor/google.golang.org/appengine/internal/api_common.go123
-rw-r--r--vendor/google.golang.org/appengine/internal/app_id.go28
-rw-r--r--vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go611
-rw-r--r--vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto64
-rw-r--r--vendor/google.golang.org/appengine/internal/base/api_base.pb.go308
-rw-r--r--vendor/google.golang.org/appengine/internal/base/api_base.proto33
-rw-r--r--vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go4367
-rw-r--r--vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto551
-rw-r--r--vendor/google.golang.org/appengine/internal/identity.go55
-rw-r--r--vendor/google.golang.org/appengine/internal/identity_classic.go61
-rw-r--r--vendor/google.golang.org/appengine/internal/identity_flex.go11
-rw-r--r--vendor/google.golang.org/appengine/internal/identity_vm.go134
-rw-r--r--vendor/google.golang.org/appengine/internal/internal.go110
-rw-r--r--vendor/google.golang.org/appengine/internal/log/log_service.pb.go1313
-rw-r--r--vendor/google.golang.org/appengine/internal/log/log_service.proto150
-rw-r--r--vendor/google.golang.org/appengine/internal/main.go16
-rw-r--r--vendor/google.golang.org/appengine/internal/main_common.go7
-rw-r--r--vendor/google.golang.org/appengine/internal/main_vm.go69
-rw-r--r--vendor/google.golang.org/appengine/internal/metadata.go60
-rw-r--r--vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go786
-rw-r--r--vendor/google.golang.org/appengine/internal/modules/modules_service.proto80
-rw-r--r--vendor/google.golang.org/appengine/internal/net.go56
-rw-r--r--vendor/google.golang.org/appengine/internal/regen.sh40
-rw-r--r--vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go361
-rw-r--r--vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto44
-rw-r--r--vendor/google.golang.org/appengine/internal/transaction.go115
-rw-r--r--vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go527
-rw-r--r--vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto64
-rw-r--r--vendor/google.golang.org/appengine/namespace.go25
-rw-r--r--vendor/google.golang.org/appengine/timeout.go20
-rw-r--r--vendor/google.golang.org/appengine/travis_install.sh18
-rw-r--r--vendor/google.golang.org/appengine/travis_test.sh12
-rw-r--r--vendor/google.golang.org/appengine/urlfetch/urlfetch.go210
54 files changed, 15199 insertions, 0 deletions
diff --git a/vendor/google.golang.org/appengine/.travis.yml b/vendor/google.golang.org/appengine/.travis.yml
new file mode 100644
index 0000000..70ffe89
--- /dev/null
+++ b/vendor/google.golang.org/appengine/.travis.yml
@@ -0,0 +1,20 @@
1language: go
2
3go_import_path: google.golang.org/appengine
4
5install:
6 - ./travis_install.sh
7
8script:
9 - ./travis_test.sh
10
11matrix:
12 include:
13 - go: 1.8.x
14 env: GOAPP=true
15 - go: 1.9.x
16 env: GOAPP=true
17 - go: 1.10.x
18 env: GOAPP=false
19 - go: 1.11.x
20 env: GO111MODULE=on
diff --git a/vendor/google.golang.org/appengine/CONTRIBUTING.md b/vendor/google.golang.org/appengine/CONTRIBUTING.md
new file mode 100644
index 0000000..ffc2985
--- /dev/null
+++ b/vendor/google.golang.org/appengine/CONTRIBUTING.md
@@ -0,0 +1,90 @@
1# Contributing
2
31. Sign one of the contributor license agreements below.
41. Get the package:
5
6 `go get -d google.golang.org/appengine`
71. Change into the checked out source:
8
9 `cd $GOPATH/src/google.golang.org/appengine`
101. Fork the repo.
111. Set your fork as a remote:
12
13 `git remote add fork git@github.com:GITHUB_USERNAME/appengine.git`
141. Make changes, commit to your fork.
151. Send a pull request with your changes.
16 The first line of your commit message is conventionally a one-line summary of the change, prefixed by the primary affected package, and is used as the title of your pull request.
17
18# Testing
19
20## Running system tests
21
22Download and install the [Go App Engine SDK](https://cloud.google.com/appengine/docs/go/download). Make sure the `go_appengine` dir is in your `PATH`.
23
24Set the `APPENGINE_DEV_APPSERVER` environment variable to `/path/to/go_appengine/dev_appserver.py`.
25
26Run tests with `goapp test`:
27
28```
29goapp test -v google.golang.org/appengine/...
30```
31
32## Contributor License Agreements
33
34Before we can accept your pull requests you'll need to sign a Contributor
35License Agreement (CLA):
36
37- **If you are an individual writing original source code** and **you own the
38intellectual property**, then you'll need to sign an [individual CLA][indvcla].
39- **If you work for a company that wants to allow you to contribute your work**,
40then you'll need to sign a [corporate CLA][corpcla].
41
42You can sign these electronically (just scroll to the bottom). After that,
43we'll be able to accept your pull requests.
44
45## Contributor Code of Conduct
46
47As contributors and maintainers of this project,
48and in the interest of fostering an open and welcoming community,
49we pledge to respect all people who contribute through reporting issues,
50posting feature requests, updating documentation,
51submitting pull requests or patches, and other activities.
52
53We are committed to making participation in this project
54a harassment-free experience for everyone,
55regardless of level of experience, gender, gender identity and expression,
56sexual orientation, disability, personal appearance,
57body size, race, ethnicity, age, religion, or nationality.
58
59Examples of unacceptable behavior by participants include:
60
61* The use of sexualized language or imagery
62* Personal attacks
63* Trolling or insulting/derogatory comments
64* Public or private harassment
65* Publishing other's private information,
66such as physical or electronic
67addresses, without explicit permission
68* Other unethical or unprofessional conduct.
69
70Project maintainers have the right and responsibility to remove, edit, or reject
71comments, commits, code, wiki edits, issues, and other contributions
72that are not aligned to this Code of Conduct.
73By adopting this Code of Conduct,
74project maintainers commit themselves to fairly and consistently
75applying these principles to every aspect of managing this project.
76Project maintainers who do not follow or enforce the Code of Conduct
77may be permanently removed from the project team.
78
79This code of conduct applies both within project spaces and in public spaces
80when an individual is representing the project or its community.
81
82Instances of abusive, harassing, or otherwise unacceptable behavior
83may be reported by opening an issue
84or contacting one or more of the project maintainers.
85
86This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
87available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
88
89[indvcla]: https://developers.google.com/open-source/cla/individual
90[corpcla]: https://developers.google.com/open-source/cla/corporate
diff --git a/vendor/google.golang.org/appengine/LICENSE b/vendor/google.golang.org/appengine/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/vendor/google.golang.org/appengine/LICENSE
@@ -0,0 +1,202 @@
1
2 Apache License
3 Version 2.0, January 2004
4 http://www.apache.org/licenses/
5
6 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
8 1. Definitions.
9
10 "License" shall mean the terms and conditions for use, reproduction,
11 and distribution as defined by Sections 1 through 9 of this document.
12
13 "Licensor" shall mean the copyright owner or entity authorized by
14 the copyright owner that is granting the License.
15
16 "Legal Entity" shall mean the union of the acting entity and all
17 other entities that control, are controlled by, or are under common
18 control with that entity. For the purposes of this definition,
19 "control" means (i) the power, direct or indirect, to cause the
20 direction or management of such entity, whether by contract or
21 otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 outstanding shares, or (iii) beneficial ownership of such entity.
23
24 "You" (or "Your") shall mean an individual or Legal Entity
25 exercising permissions granted by this License.
26
27 "Source" form shall mean the preferred form for making modifications,
28 including but not limited to software source code, documentation
29 source, and configuration files.
30
31 "Object" form shall mean any form resulting from mechanical
32 transformation or translation of a Source form, including but
33 not limited to compiled object code, generated documentation,
34 and conversions to other media types.
35
36 "Work" shall mean the work of authorship, whether in Source or
37 Object form, made available under the License, as indicated by a
38 copyright notice that is included in or attached to the work
39 (an example is provided in the Appendix below).
40
41 "Derivative Works" shall mean any work, whether in Source or Object
42 form, that is based on (or derived from) the Work and for which the
43 editorial revisions, annotations, elaborations, or other modifications
44 represent, as a whole, an original work of authorship. For the purposes
45 of this License, Derivative Works shall not include works that remain
46 separable from, or merely link (or bind by name) to the interfaces of,
47 the Work and Derivative Works thereof.
48
49 "Contribution" shall mean any work of authorship, including
50 the original version of the Work and any modifications or additions
51 to that Work or Derivative Works thereof, that is intentionally
52 submitted to Licensor for inclusion in the Work by the copyright owner
53 or by an individual or Legal Entity authorized to submit on behalf of
54 the copyright owner. For the purposes of this definition, "submitted"
55 means any form of electronic, verbal, or written communication sent
56 to the Licensor or its representatives, including but not limited to
57 communication on electronic mailing lists, source code control systems,
58 and issue tracking systems that are managed by, or on behalf of, the
59 Licensor for the purpose of discussing and improving the Work, but
60 excluding communication that is conspicuously marked or otherwise
61 designated in writing by the copyright owner as "Not a Contribution."
62
63 "Contributor" shall mean Licensor and any individual or Legal Entity
64 on behalf of whom a Contribution has been received by Licensor and
65 subsequently incorporated within the Work.
66
67 2. Grant of Copyright License. Subject to the terms and conditions of
68 this License, each Contributor hereby grants to You a perpetual,
69 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 copyright license to reproduce, prepare Derivative Works of,
71 publicly display, publicly perform, sublicense, and distribute the
72 Work and such Derivative Works in Source or Object form.
73
74 3. Grant of Patent License. Subject to the terms and conditions of
75 this License, each Contributor hereby grants to You a perpetual,
76 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 (except as stated in this section) patent license to make, have made,
78 use, offer to sell, sell, import, and otherwise transfer the Work,
79 where such license applies only to those patent claims licensable
80 by such Contributor that are necessarily infringed by their
81 Contribution(s) alone or by combination of their Contribution(s)
82 with the Work to which such Contribution(s) was submitted. If You
83 institute patent litigation against any entity (including a
84 cross-claim or counterclaim in a lawsuit) alleging that the Work
85 or a Contribution incorporated within the Work constitutes direct
86 or contributory patent infringement, then any patent licenses
87 granted to You under this License for that Work shall terminate
88 as of the date such litigation is filed.
89
90 4. Redistribution. You may reproduce and distribute copies of the
91 Work or Derivative Works thereof in any medium, with or without
92 modifications, and in Source or Object form, provided that You
93 meet the following conditions:
94
95 (a) You must give any other recipients of the Work or
96 Derivative Works a copy of this License; and
97
98 (b) You must cause any modified files to carry prominent notices
99 stating that You changed the files; and
100
101 (c) You must retain, in the Source form of any Derivative Works
102 that You distribute, all copyright, patent, trademark, and
103 attribution notices from the Source form of the Work,
104 excluding those notices that do not pertain to any part of
105 the Derivative Works; and
106
107 (d) If the Work includes a "NOTICE" text file as part of its
108 distribution, then any Derivative Works that You distribute must
109 include a readable copy of the attribution notices contained
110 within such NOTICE file, excluding those notices that do not
111 pertain to any part of the Derivative Works, in at least one
112 of the following places: within a NOTICE text file distributed
113 as part of the Derivative Works; within the Source form or
114 documentation, if provided along with the Derivative Works; or,
115 within a display generated by the Derivative Works, if and
116 wherever such third-party notices normally appear. The contents
117 of the NOTICE file are for informational purposes only and
118 do not modify the License. You may add Your own attribution
119 notices within Derivative Works that You distribute, alongside
120 or as an addendum to the NOTICE text from the Work, provided
121 that such additional attribution notices cannot be construed
122 as modifying the License.
123
124 You may add Your own copyright statement to Your modifications and
125 may provide additional or different license terms and conditions
126 for use, reproduction, or distribution of Your modifications, or
127 for any such Derivative Works as a whole, provided Your use,
128 reproduction, and distribution of the Work otherwise complies with
129 the conditions stated in this License.
130
131 5. Submission of Contributions. Unless You explicitly state otherwise,
132 any Contribution intentionally submitted for inclusion in the Work
133 by You to the Licensor shall be under the terms and conditions of
134 this License, without any additional terms or conditions.
135 Notwithstanding the above, nothing herein shall supersede or modify
136 the terms of any separate license agreement you may have executed
137 with Licensor regarding such Contributions.
138
139 6. Trademarks. This License does not grant permission to use the trade
140 names, trademarks, service marks, or product names of the Licensor,
141 except as required for reasonable and customary use in describing the
142 origin of the Work and reproducing the content of the NOTICE file.
143
144 7. Disclaimer of Warranty. Unless required by applicable law or
145 agreed to in writing, Licensor provides the Work (and each
146 Contributor provides its Contributions) on an "AS IS" BASIS,
147 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 implied, including, without limitation, any warranties or conditions
149 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 PARTICULAR PURPOSE. You are solely responsible for determining the
151 appropriateness of using or redistributing the Work and assume any
152 risks associated with Your exercise of permissions under this License.
153
154 8. Limitation of Liability. In no event and under no legal theory,
155 whether in tort (including negligence), contract, or otherwise,
156 unless required by applicable law (such as deliberate and grossly
157 negligent acts) or agreed to in writing, shall any Contributor be
158 liable to You for damages, including any direct, indirect, special,
159 incidental, or consequential damages of any character arising as a
160 result of this License or out of the use or inability to use the
161 Work (including but not limited to damages for loss of goodwill,
162 work stoppage, computer failure or malfunction, or any and all
163 other commercial damages or losses), even if such Contributor
164 has been advised of the possibility of such damages.
165
166 9. Accepting Warranty or Additional Liability. While redistributing
167 the Work or Derivative Works thereof, You may choose to offer,
168 and charge a fee for, acceptance of support, warranty, indemnity,
169 or other liability obligations and/or rights consistent with this
170 License. However, in accepting such obligations, You may act only
171 on Your own behalf and on Your sole responsibility, not on behalf
172 of any other Contributor, and only if You agree to indemnify,
173 defend, and hold each Contributor harmless for any liability
174 incurred by, or claims asserted against, such Contributor by reason
175 of your accepting any such warranty or additional liability.
176
177 END OF TERMS AND CONDITIONS
178
179 APPENDIX: How to apply the Apache License to your work.
180
181 To apply the Apache License to your work, attach the following
182 boilerplate notice, with the fields enclosed by brackets "[]"
183 replaced with your own identifying information. (Don't include
184 the brackets!) The text should be enclosed in the appropriate
185 comment syntax for the file format. We also recommend that a
186 file or class name and description of purpose be included on the
187 same "printed page" as the copyright notice for easier
188 identification within third-party archives.
189
190 Copyright [yyyy] [name of copyright owner]
191
192 Licensed under the Apache License, Version 2.0 (the "License");
193 you may not use this file except in compliance with the License.
194 You may obtain a copy of the License at
195
196 http://www.apache.org/licenses/LICENSE-2.0
197
198 Unless required by applicable law or agreed to in writing, software
199 distributed under the License is distributed on an "AS IS" BASIS,
200 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 See the License for the specific language governing permissions and
202 limitations under the License.
diff --git a/vendor/google.golang.org/appengine/README.md b/vendor/google.golang.org/appengine/README.md
new file mode 100644
index 0000000..d86768a
--- /dev/null
+++ b/vendor/google.golang.org/appengine/README.md
@@ -0,0 +1,73 @@
1# Go App Engine packages
2
3[![Build Status](https://travis-ci.org/golang/appengine.svg)](https://travis-ci.org/golang/appengine)
4
5This repository supports the Go runtime on *App Engine standard*.
6It provides APIs for interacting with App Engine services.
7Its canonical import path is `google.golang.org/appengine`.
8
9See https://cloud.google.com/appengine/docs/go/
10for more information.
11
12File issue reports and feature requests on the [GitHub's issue
13tracker](https://github.com/golang/appengine/issues).
14
15## Upgrading an App Engine app to the flexible environment
16
17This package does not work on *App Engine flexible*.
18
19There are many differences between the App Engine standard environment and
20the flexible environment.
21
22See the [documentation on upgrading to the flexible environment](https://cloud.google.com/appengine/docs/flexible/go/upgrading).
23
24## Directory structure
25
26The top level directory of this repository is the `appengine` package. It
27contains the
28basic APIs (e.g. `appengine.NewContext`) that apply across APIs. Specific API
29packages are in subdirectories (e.g. `datastore`).
30
31There is an `internal` subdirectory that contains service protocol buffers,
32plus packages required for connectivity to make API calls. App Engine apps
33should not directly import any package under `internal`.
34
35## Updating from legacy (`import "appengine"`) packages
36
37If you're currently using the bare `appengine` packages
38(that is, not these ones, imported via `google.golang.org/appengine`),
39then you can use the `aefix` tool to help automate an upgrade to these packages.
40
41Run `go get google.golang.org/appengine/cmd/aefix` to install it.
42
43### 1. Update import paths
44
45The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`.
46You will need to update your code to use import paths starting with that; for instance,
47code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`.
48
49### 2. Update code using deprecated, removed or modified APIs
50
51Most App Engine services are available with exactly the same API.
52A few APIs were cleaned up, and there are some differences:
53
54* `appengine.Context` has been replaced with the `Context` type from `golang.org/x/net/context`.
55* Logging methods that were on `appengine.Context` are now functions in `google.golang.org/appengine/log`.
56* `appengine.Timeout` has been removed. Use `context.WithTimeout` instead.
57* `appengine.Datacenter` now takes a `context.Context` argument.
58* `datastore.PropertyLoadSaver` has been simplified to use slices in place of channels.
59* `delay.Call` now returns an error.
60* `search.FieldLoadSaver` now handles document metadata.
61* `urlfetch.Transport` no longer has a Deadline field; set a deadline on the
62 `context.Context` instead.
63* `aetest` no longer declares its own Context type, and uses the standard one instead.
64* `taskqueue.QueueStats` no longer takes a maxTasks argument. That argument has been
65 deprecated and unused for a long time.
66* `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature.
67 Use `appengine.ModuleHostname`and `appengine.ModuleName` instead.
68* Most of `appengine/file` and parts of `appengine/blobstore` are deprecated.
69 Use [Google Cloud Storage](https://godoc.org/cloud.google.com/go/storage) if the
70 feature you require is not present in the new
71 [blobstore package](https://google.golang.org/appengine/blobstore).
72* `appengine/socket` is not required on App Engine flexible environment / Managed VMs.
73 Use the standard `net` package instead.
diff --git a/vendor/google.golang.org/appengine/appengine.go b/vendor/google.golang.org/appengine/appengine.go
new file mode 100644
index 0000000..0cca033
--- /dev/null
+++ b/vendor/google.golang.org/appengine/appengine.go
@@ -0,0 +1,137 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// Package appengine provides basic functionality for Google App Engine.
6//
7// For more information on how to write Go apps for Google App Engine, see:
8// https://cloud.google.com/appengine/docs/go/
9package appengine // import "google.golang.org/appengine"
10
11import (
12 "net/http"
13
14 "github.com/golang/protobuf/proto"
15 "golang.org/x/net/context"
16
17 "google.golang.org/appengine/internal"
18)
19
20// The gophers party all night; the rabbits provide the beats.
21
22// Main is the principal entry point for an app running in App Engine.
23//
24// On App Engine Flexible it installs a trivial health checker if one isn't
25// already registered, and starts listening on port 8080 (overridden by the
26// $PORT environment variable).
27//
28// See https://cloud.google.com/appengine/docs/flexible/custom-runtimes#health_check_requests
29// for details on how to do your own health checking.
30//
31// On App Engine Standard it ensures the server has started and is prepared to
32// receive requests.
33//
34// Main never returns.
35//
36// Main is designed so that the app's main package looks like this:
37//
38// package main
39//
40// import (
41// "google.golang.org/appengine"
42//
43// _ "myapp/package0"
44// _ "myapp/package1"
45// )
46//
47// func main() {
48// appengine.Main()
49// }
50//
51// The "myapp/packageX" packages are expected to register HTTP handlers
52// in their init functions.
53func Main() {
54 internal.Main()
55}
56
57// IsDevAppServer reports whether the App Engine app is running in the
58// development App Server.
59func IsDevAppServer() bool {
60 return internal.IsDevAppServer()
61}
62
63// IsStandard reports whether the App Engine app is running in the standard
64// environment. This includes both the first generation runtimes (<= Go 1.9)
65// and the second generation runtimes (>= Go 1.11).
66func IsStandard() bool {
67 return internal.IsStandard()
68}
69
70// IsFlex reports whether the App Engine app is running in the flexible environment.
71func IsFlex() bool {
72 return internal.IsFlex()
73}
74
75// IsAppEngine reports whether the App Engine app is running on App Engine, in either
76// the standard or flexible environment.
77func IsAppEngine() bool {
78 return internal.IsAppEngine()
79}
80
81// IsSecondGen reports whether the App Engine app is running on the second generation
82// runtimes (>= Go 1.11).
83func IsSecondGen() bool {
84 return internal.IsSecondGen()
85}
86
87// NewContext returns a context for an in-flight HTTP request.
88// This function is cheap.
89func NewContext(req *http.Request) context.Context {
90 return internal.ReqContext(req)
91}
92
93// WithContext returns a copy of the parent context
94// and associates it with an in-flight HTTP request.
95// This function is cheap.
96func WithContext(parent context.Context, req *http.Request) context.Context {
97 return internal.WithContext(parent, req)
98}
99
100// TODO(dsymonds): Add a Call function here? Otherwise other packages can't access internal.Call.
101
102// BlobKey is a key for a blobstore blob.
103//
104// Conceptually, this type belongs in the blobstore package, but it lives in
105// the appengine package to avoid a circular dependency: blobstore depends on
106// datastore, and datastore needs to refer to the BlobKey type.
107type BlobKey string
108
109// GeoPoint represents a location as latitude/longitude in degrees.
110type GeoPoint struct {
111 Lat, Lng float64
112}
113
114// Valid returns whether a GeoPoint is within [-90, 90] latitude and [-180, 180] longitude.
115func (g GeoPoint) Valid() bool {
116 return -90 <= g.Lat && g.Lat <= 90 && -180 <= g.Lng && g.Lng <= 180
117}
118
119// APICallFunc defines a function type for handling an API call.
120// See WithCallOverride.
121type APICallFunc func(ctx context.Context, service, method string, in, out proto.Message) error
122
123// WithAPICallFunc returns a copy of the parent context
124// that will cause API calls to invoke f instead of their normal operation.
125//
126// This is intended for advanced users only.
127func WithAPICallFunc(ctx context.Context, f APICallFunc) context.Context {
128 return internal.WithCallOverride(ctx, internal.CallOverrideFunc(f))
129}
130
131// APICall performs an API call.
132//
133// This is not intended for general use; it is exported for use in conjunction
134// with WithAPICallFunc.
135func APICall(ctx context.Context, service, method string, in, out proto.Message) error {
136 return internal.Call(ctx, service, method, in, out)
137}
diff --git a/vendor/google.golang.org/appengine/appengine_vm.go b/vendor/google.golang.org/appengine/appengine_vm.go
new file mode 100644
index 0000000..f4b645a
--- /dev/null
+++ b/vendor/google.golang.org/appengine/appengine_vm.go
@@ -0,0 +1,20 @@
1// Copyright 2015 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build !appengine
6
7package appengine
8
9import (
10 "golang.org/x/net/context"
11
12 "google.golang.org/appengine/internal"
13)
14
15// BackgroundContext returns a context not associated with a request.
16// This should only be used when not servicing a request.
17// This only works in App Engine "flexible environment".
18func BackgroundContext() context.Context {
19 return internal.BackgroundContext()
20}
diff --git a/vendor/google.golang.org/appengine/datastore/datastore.go b/vendor/google.golang.org/appengine/datastore/datastore.go
new file mode 100644
index 0000000..576bc50
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/datastore.go
@@ -0,0 +1,407 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "errors"
9 "fmt"
10 "reflect"
11
12 "github.com/golang/protobuf/proto"
13 "golang.org/x/net/context"
14
15 "google.golang.org/appengine"
16 "google.golang.org/appengine/internal"
17 pb "google.golang.org/appengine/internal/datastore"
18)
19
20var (
21 // ErrInvalidEntityType is returned when functions like Get or Next are
22 // passed a dst or src argument of invalid type.
23 ErrInvalidEntityType = errors.New("datastore: invalid entity type")
24 // ErrInvalidKey is returned when an invalid key is presented.
25 ErrInvalidKey = errors.New("datastore: invalid key")
26 // ErrNoSuchEntity is returned when no entity was found for a given key.
27 ErrNoSuchEntity = errors.New("datastore: no such entity")
28)
29
30// ErrFieldMismatch is returned when a field is to be loaded into a different
31// type than the one it was stored from, or when a field is missing or
32// unexported in the destination struct.
33// StructType is the type of the struct pointed to by the destination argument
34// passed to Get or to Iterator.Next.
35type ErrFieldMismatch struct {
36 StructType reflect.Type
37 FieldName string
38 Reason string
39}
40
41func (e *ErrFieldMismatch) Error() string {
42 return fmt.Sprintf("datastore: cannot load field %q into a %q: %s",
43 e.FieldName, e.StructType, e.Reason)
44}
45
46// protoToKey converts a Reference proto to a *Key. If the key is invalid,
47// protoToKey will return the invalid key along with ErrInvalidKey.
48func protoToKey(r *pb.Reference) (k *Key, err error) {
49 appID := r.GetApp()
50 namespace := r.GetNameSpace()
51 for _, e := range r.Path.Element {
52 k = &Key{
53 kind: e.GetType(),
54 stringID: e.GetName(),
55 intID: e.GetId(),
56 parent: k,
57 appID: appID,
58 namespace: namespace,
59 }
60 if !k.valid() {
61 return k, ErrInvalidKey
62 }
63 }
64 return
65}
66
67// keyToProto converts a *Key to a Reference proto.
68func keyToProto(defaultAppID string, k *Key) *pb.Reference {
69 appID := k.appID
70 if appID == "" {
71 appID = defaultAppID
72 }
73 n := 0
74 for i := k; i != nil; i = i.parent {
75 n++
76 }
77 e := make([]*pb.Path_Element, n)
78 for i := k; i != nil; i = i.parent {
79 n--
80 e[n] = &pb.Path_Element{
81 Type: &i.kind,
82 }
83 // At most one of {Name,Id} should be set.
84 // Neither will be set for incomplete keys.
85 if i.stringID != "" {
86 e[n].Name = &i.stringID
87 } else if i.intID != 0 {
88 e[n].Id = &i.intID
89 }
90 }
91 var namespace *string
92 if k.namespace != "" {
93 namespace = proto.String(k.namespace)
94 }
95 return &pb.Reference{
96 App: proto.String(appID),
97 NameSpace: namespace,
98 Path: &pb.Path{
99 Element: e,
100 },
101 }
102}
103
104// multiKeyToProto is a batch version of keyToProto.
105func multiKeyToProto(appID string, key []*Key) []*pb.Reference {
106 ret := make([]*pb.Reference, len(key))
107 for i, k := range key {
108 ret[i] = keyToProto(appID, k)
109 }
110 return ret
111}
112
113// multiValid is a batch version of Key.valid. It returns an error, not a
114// []bool.
115func multiValid(key []*Key) error {
116 invalid := false
117 for _, k := range key {
118 if !k.valid() {
119 invalid = true
120 break
121 }
122 }
123 if !invalid {
124 return nil
125 }
126 err := make(appengine.MultiError, len(key))
127 for i, k := range key {
128 if !k.valid() {
129 err[i] = ErrInvalidKey
130 }
131 }
132 return err
133}
134
135// It's unfortunate that the two semantically equivalent concepts pb.Reference
136// and pb.PropertyValue_ReferenceValue aren't the same type. For example, the
137// two have different protobuf field numbers.
138
139// referenceValueToKey is the same as protoToKey except the input is a
140// PropertyValue_ReferenceValue instead of a Reference.
141func referenceValueToKey(r *pb.PropertyValue_ReferenceValue) (k *Key, err error) {
142 appID := r.GetApp()
143 namespace := r.GetNameSpace()
144 for _, e := range r.Pathelement {
145 k = &Key{
146 kind: e.GetType(),
147 stringID: e.GetName(),
148 intID: e.GetId(),
149 parent: k,
150 appID: appID,
151 namespace: namespace,
152 }
153 if !k.valid() {
154 return nil, ErrInvalidKey
155 }
156 }
157 return
158}
159
160// keyToReferenceValue is the same as keyToProto except the output is a
161// PropertyValue_ReferenceValue instead of a Reference.
162func keyToReferenceValue(defaultAppID string, k *Key) *pb.PropertyValue_ReferenceValue {
163 ref := keyToProto(defaultAppID, k)
164 pe := make([]*pb.PropertyValue_ReferenceValue_PathElement, len(ref.Path.Element))
165 for i, e := range ref.Path.Element {
166 pe[i] = &pb.PropertyValue_ReferenceValue_PathElement{
167 Type: e.Type,
168 Id: e.Id,
169 Name: e.Name,
170 }
171 }
172 return &pb.PropertyValue_ReferenceValue{
173 App: ref.App,
174 NameSpace: ref.NameSpace,
175 Pathelement: pe,
176 }
177}
178
179type multiArgType int
180
181const (
182 multiArgTypeInvalid multiArgType = iota
183 multiArgTypePropertyLoadSaver
184 multiArgTypeStruct
185 multiArgTypeStructPtr
186 multiArgTypeInterface
187)
188
189// checkMultiArg checks that v has type []S, []*S, []I, or []P, for some struct
190// type S, for some interface type I, or some non-interface non-pointer type P
191// such that P or *P implements PropertyLoadSaver.
192//
193// It returns what category the slice's elements are, and the reflect.Type
194// that represents S, I or P.
195//
196// As a special case, PropertyList is an invalid type for v.
197func checkMultiArg(v reflect.Value) (m multiArgType, elemType reflect.Type) {
198 if v.Kind() != reflect.Slice {
199 return multiArgTypeInvalid, nil
200 }
201 if v.Type() == typeOfPropertyList {
202 return multiArgTypeInvalid, nil
203 }
204 elemType = v.Type().Elem()
205 if reflect.PtrTo(elemType).Implements(typeOfPropertyLoadSaver) {
206 return multiArgTypePropertyLoadSaver, elemType
207 }
208 switch elemType.Kind() {
209 case reflect.Struct:
210 return multiArgTypeStruct, elemType
211 case reflect.Interface:
212 return multiArgTypeInterface, elemType
213 case reflect.Ptr:
214 elemType = elemType.Elem()
215 if elemType.Kind() == reflect.Struct {
216 return multiArgTypeStructPtr, elemType
217 }
218 }
219 return multiArgTypeInvalid, nil
220}
221
222// Get loads the entity stored for k into dst, which must be a struct pointer
223// or implement PropertyLoadSaver. If there is no such entity for the key, Get
224// returns ErrNoSuchEntity.
225//
226// The values of dst's unmatched struct fields are not modified, and matching
227// slice-typed fields are not reset before appending to them. In particular, it
228// is recommended to pass a pointer to a zero valued struct on each Get call.
229//
230// ErrFieldMismatch is returned when a field is to be loaded into a different
231// type than the one it was stored from, or when a field is missing or
232// unexported in the destination struct. ErrFieldMismatch is only returned if
233// dst is a struct pointer.
234func Get(c context.Context, key *Key, dst interface{}) error {
235 if dst == nil { // GetMulti catches nil interface; we need to catch nil ptr here
236 return ErrInvalidEntityType
237 }
238 err := GetMulti(c, []*Key{key}, []interface{}{dst})
239 if me, ok := err.(appengine.MultiError); ok {
240 return me[0]
241 }
242 return err
243}
244
245// GetMulti is a batch version of Get.
246//
247// dst must be a []S, []*S, []I or []P, for some struct type S, some interface
248// type I, or some non-interface non-pointer type P such that P or *P
249// implements PropertyLoadSaver. If an []I, each element must be a valid dst
250// for Get: it must be a struct pointer or implement PropertyLoadSaver.
251//
252// As a special case, PropertyList is an invalid type for dst, even though a
253// PropertyList is a slice of structs. It is treated as invalid to avoid being
254// mistakenly passed when []PropertyList was intended.
255func GetMulti(c context.Context, key []*Key, dst interface{}) error {
256 v := reflect.ValueOf(dst)
257 multiArgType, _ := checkMultiArg(v)
258 if multiArgType == multiArgTypeInvalid {
259 return errors.New("datastore: dst has invalid type")
260 }
261 if len(key) != v.Len() {
262 return errors.New("datastore: key and dst slices have different length")
263 }
264 if len(key) == 0 {
265 return nil
266 }
267 if err := multiValid(key); err != nil {
268 return err
269 }
270 req := &pb.GetRequest{
271 Key: multiKeyToProto(internal.FullyQualifiedAppID(c), key),
272 }
273 res := &pb.GetResponse{}
274 if err := internal.Call(c, "datastore_v3", "Get", req, res); err != nil {
275 return err
276 }
277 if len(key) != len(res.Entity) {
278 return errors.New("datastore: internal error: server returned the wrong number of entities")
279 }
280 multiErr, any := make(appengine.MultiError, len(key)), false
281 for i, e := range res.Entity {
282 if e.Entity == nil {
283 multiErr[i] = ErrNoSuchEntity
284 } else {
285 elem := v.Index(i)
286 if multiArgType == multiArgTypePropertyLoadSaver || multiArgType == multiArgTypeStruct {
287 elem = elem.Addr()
288 }
289 if multiArgType == multiArgTypeStructPtr && elem.IsNil() {
290 elem.Set(reflect.New(elem.Type().Elem()))
291 }
292 multiErr[i] = loadEntity(elem.Interface(), e.Entity)
293 }
294 if multiErr[i] != nil {
295 any = true
296 }
297 }
298 if any {
299 return multiErr
300 }
301 return nil
302}
303
304// Put saves the entity src into the datastore with key k. src must be a struct
305// pointer or implement PropertyLoadSaver; if a struct pointer then any
306// unexported fields of that struct will be skipped. If k is an incomplete key,
307// the returned key will be a unique key generated by the datastore.
308func Put(c context.Context, key *Key, src interface{}) (*Key, error) {
309 k, err := PutMulti(c, []*Key{key}, []interface{}{src})
310 if err != nil {
311 if me, ok := err.(appengine.MultiError); ok {
312 return nil, me[0]
313 }
314 return nil, err
315 }
316 return k[0], nil
317}
318
319// PutMulti is a batch version of Put.
320//
321// src must satisfy the same conditions as the dst argument to GetMulti.
322func PutMulti(c context.Context, key []*Key, src interface{}) ([]*Key, error) {
323 v := reflect.ValueOf(src)
324 multiArgType, _ := checkMultiArg(v)
325 if multiArgType == multiArgTypeInvalid {
326 return nil, errors.New("datastore: src has invalid type")
327 }
328 if len(key) != v.Len() {
329 return nil, errors.New("datastore: key and src slices have different length")
330 }
331 if len(key) == 0 {
332 return nil, nil
333 }
334 appID := internal.FullyQualifiedAppID(c)
335 if err := multiValid(key); err != nil {
336 return nil, err
337 }
338 req := &pb.PutRequest{}
339 for i := range key {
340 elem := v.Index(i)
341 if multiArgType == multiArgTypePropertyLoadSaver || multiArgType == multiArgTypeStruct {
342 elem = elem.Addr()
343 }
344 sProto, err := saveEntity(appID, key[i], elem.Interface())
345 if err != nil {
346 return nil, err
347 }
348 req.Entity = append(req.Entity, sProto)
349 }
350 res := &pb.PutResponse{}
351 if err := internal.Call(c, "datastore_v3", "Put", req, res); err != nil {
352 return nil, err
353 }
354 if len(key) != len(res.Key) {
355 return nil, errors.New("datastore: internal error: server returned the wrong number of keys")
356 }
357 ret := make([]*Key, len(key))
358 for i := range ret {
359 var err error
360 ret[i], err = protoToKey(res.Key[i])
361 if err != nil || ret[i].Incomplete() {
362 return nil, errors.New("datastore: internal error: server returned an invalid key")
363 }
364 }
365 return ret, nil
366}
367
368// Delete deletes the entity for the given key.
369func Delete(c context.Context, key *Key) error {
370 err := DeleteMulti(c, []*Key{key})
371 if me, ok := err.(appengine.MultiError); ok {
372 return me[0]
373 }
374 return err
375}
376
377// DeleteMulti is a batch version of Delete.
378func DeleteMulti(c context.Context, key []*Key) error {
379 if len(key) == 0 {
380 return nil
381 }
382 if err := multiValid(key); err != nil {
383 return err
384 }
385 req := &pb.DeleteRequest{
386 Key: multiKeyToProto(internal.FullyQualifiedAppID(c), key),
387 }
388 res := &pb.DeleteResponse{}
389 return internal.Call(c, "datastore_v3", "Delete", req, res)
390}
391
392func namespaceMod(m proto.Message, namespace string) {
393 // pb.Query is the only type that has a name_space field.
394 // All other namespace support in datastore is in the keys.
395 switch m := m.(type) {
396 case *pb.Query:
397 if m.NameSpace == nil {
398 m.NameSpace = &namespace
399 }
400 }
401}
402
403func init() {
404 internal.NamespaceMods["datastore_v3"] = namespaceMod
405 internal.RegisterErrorCodeMap("datastore_v3", pb.Error_ErrorCode_name)
406 internal.RegisterTimeoutErrorCode("datastore_v3", int32(pb.Error_TIMEOUT))
407}
diff --git a/vendor/google.golang.org/appengine/datastore/doc.go b/vendor/google.golang.org/appengine/datastore/doc.go
new file mode 100644
index 0000000..85616cf
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/doc.go
@@ -0,0 +1,361 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5/*
6Package datastore provides a client for App Engine's datastore service.
7
8
9Basic Operations
10
11Entities are the unit of storage and are associated with a key. A key
12consists of an optional parent key, a string application ID, a string kind
13(also known as an entity type), and either a StringID or an IntID. A
14StringID is also known as an entity name or key name.
15
16It is valid to create a key with a zero StringID and a zero IntID; this is
17called an incomplete key, and does not refer to any saved entity. Putting an
18entity into the datastore under an incomplete key will cause a unique key
19to be generated for that entity, with a non-zero IntID.
20
21An entity's contents are a mapping from case-sensitive field names to values.
22Valid value types are:
23 - signed integers (int, int8, int16, int32 and int64),
24 - bool,
25 - string,
26 - float32 and float64,
27 - []byte (up to 1 megabyte in length),
28 - any type whose underlying type is one of the above predeclared types,
29 - ByteString,
30 - *Key,
31 - time.Time (stored with microsecond precision),
32 - appengine.BlobKey,
33 - appengine.GeoPoint,
34 - structs whose fields are all valid value types,
35 - slices of any of the above.
36
37Slices of structs are valid, as are structs that contain slices. However, if
38one struct contains another, then at most one of those can be repeated. This
39disqualifies recursively defined struct types: any struct T that (directly or
40indirectly) contains a []T.
41
42The Get and Put functions load and save an entity's contents. An entity's
43contents are typically represented by a struct pointer.
44
45Example code:
46
47 type Entity struct {
48 Value string
49 }
50
51 func handle(w http.ResponseWriter, r *http.Request) {
52 ctx := appengine.NewContext(r)
53
54 k := datastore.NewKey(ctx, "Entity", "stringID", 0, nil)
55 e := new(Entity)
56 if err := datastore.Get(ctx, k, e); err != nil {
57 http.Error(w, err.Error(), 500)
58 return
59 }
60
61 old := e.Value
62 e.Value = r.URL.Path
63
64 if _, err := datastore.Put(ctx, k, e); err != nil {
65 http.Error(w, err.Error(), 500)
66 return
67 }
68
69 w.Header().Set("Content-Type", "text/plain; charset=utf-8")
70 fmt.Fprintf(w, "old=%q\nnew=%q\n", old, e.Value)
71 }
72
73GetMulti, PutMulti and DeleteMulti are batch versions of the Get, Put and
74Delete functions. They take a []*Key instead of a *Key, and may return an
75appengine.MultiError when encountering partial failure.
76
77
78Properties
79
80An entity's contents can be represented by a variety of types. These are
81typically struct pointers, but can also be any type that implements the
82PropertyLoadSaver interface. If using a struct pointer, you do not have to
83explicitly implement the PropertyLoadSaver interface; the datastore will
84automatically convert via reflection. If a struct pointer does implement that
85interface then those methods will be used in preference to the default
86behavior for struct pointers. Struct pointers are more strongly typed and are
87easier to use; PropertyLoadSavers are more flexible.
88
89The actual types passed do not have to match between Get and Put calls or even
90across different calls to datastore. It is valid to put a *PropertyList and
91get that same entity as a *myStruct, or put a *myStruct0 and get a *myStruct1.
92Conceptually, any entity is saved as a sequence of properties, and is loaded
93into the destination value on a property-by-property basis. When loading into
94a struct pointer, an entity that cannot be completely represented (such as a
95missing field) will result in an ErrFieldMismatch error but it is up to the
96caller whether this error is fatal, recoverable or ignorable.
97
98By default, for struct pointers, all properties are potentially indexed, and
99the property name is the same as the field name (and hence must start with an
100upper case letter).
101
102Fields may have a `datastore:"name,options"` tag. The tag name is the
103property name, which must be one or more valid Go identifiers joined by ".",
104but may start with a lower case letter. An empty tag name means to just use the
105field name. A "-" tag name means that the datastore will ignore that field.
106
107The only valid options are "omitempty" and "noindex".
108
109If the options include "omitempty" and the value of the field is empty, then the field will be omitted on Save.
110The empty values are false, 0, any nil interface value, and any array, slice, map, or string of length zero.
111Struct field values will never be empty.
112
113If options include "noindex" then the field will not be indexed. All fields are indexed
114by default. Strings or byte slices longer than 1500 bytes cannot be indexed;
115fields used to store long strings and byte slices must be tagged with "noindex"
116or they will cause Put operations to fail.
117
118To use multiple options together, separate them by a comma.
119The order does not matter.
120
121If the options is "" then the comma may be omitted.
122
123Example code:
124
125 // A and B are renamed to a and b.
126 // A, C and J are not indexed.
127 // D's tag is equivalent to having no tag at all (E).
128 // I is ignored entirely by the datastore.
129 // J has tag information for both the datastore and json packages.
130 type TaggedStruct struct {
131 A int `datastore:"a,noindex"`
132 B int `datastore:"b"`
133 C int `datastore:",noindex"`
134 D int `datastore:""`
135 E int
136 I int `datastore:"-"`
137 J int `datastore:",noindex" json:"j"`
138 }
139
140
141Structured Properties
142
143If the struct pointed to contains other structs, then the nested or embedded
144structs are flattened. For example, given these definitions:
145
146 type Inner1 struct {
147 W int32
148 X string
149 }
150
151 type Inner2 struct {
152 Y float64
153 }
154
155 type Inner3 struct {
156 Z bool
157 }
158
159 type Outer struct {
160 A int16
161 I []Inner1
162 J Inner2
163 Inner3
164 }
165
166then an Outer's properties would be equivalent to those of:
167
168 type OuterEquivalent struct {
169 A int16
170 IDotW []int32 `datastore:"I.W"`
171 IDotX []string `datastore:"I.X"`
172 JDotY float64 `datastore:"J.Y"`
173 Z bool
174 }
175
176If Outer's embedded Inner3 field was tagged as `datastore:"Foo"` then the
177equivalent field would instead be: FooDotZ bool `datastore:"Foo.Z"`.
178
179If an outer struct is tagged "noindex" then all of its implicit flattened
180fields are effectively "noindex".
181
182
183The PropertyLoadSaver Interface
184
185An entity's contents can also be represented by any type that implements the
186PropertyLoadSaver interface. This type may be a struct pointer, but it does
187not have to be. The datastore package will call Load when getting the entity's
188contents, and Save when putting the entity's contents.
189Possible uses include deriving non-stored fields, verifying fields, or indexing
190a field only if its value is positive.
191
192Example code:
193
194 type CustomPropsExample struct {
195 I, J int
196 // Sum is not stored, but should always be equal to I + J.
197 Sum int `datastore:"-"`
198 }
199
200 func (x *CustomPropsExample) Load(ps []datastore.Property) error {
201 // Load I and J as usual.
202 if err := datastore.LoadStruct(x, ps); err != nil {
203 return err
204 }
205 // Derive the Sum field.
206 x.Sum = x.I + x.J
207 return nil
208 }
209
210 func (x *CustomPropsExample) Save() ([]datastore.Property, error) {
211 // Validate the Sum field.
212 if x.Sum != x.I + x.J {
213 return nil, errors.New("CustomPropsExample has inconsistent sum")
214 }
215 // Save I and J as usual. The code below is equivalent to calling
216 // "return datastore.SaveStruct(x)", but is done manually for
217 // demonstration purposes.
218 return []datastore.Property{
219 {
220 Name: "I",
221 Value: int64(x.I),
222 },
223 {
224 Name: "J",
225 Value: int64(x.J),
226 },
227 }, nil
228 }
229
230The *PropertyList type implements PropertyLoadSaver, and can therefore hold an
231arbitrary entity's contents.
232
233
234Queries
235
236Queries retrieve entities based on their properties or key's ancestry. Running
237a query yields an iterator of results: either keys or (key, entity) pairs.
238Queries are re-usable and it is safe to call Query.Run from concurrent
239goroutines. Iterators are not safe for concurrent use.
240
241Queries are immutable, and are either created by calling NewQuery, or derived
242from an existing query by calling a method like Filter or Order that returns a
243new query value. A query is typically constructed by calling NewQuery followed
244by a chain of zero or more such methods. These methods are:
245 - Ancestor and Filter constrain the entities returned by running a query.
246 - Order affects the order in which they are returned.
247 - Project constrains the fields returned.
248 - Distinct de-duplicates projected entities.
249 - KeysOnly makes the iterator return only keys, not (key, entity) pairs.
250 - Start, End, Offset and Limit define which sub-sequence of matching entities
251 to return. Start and End take cursors, Offset and Limit take integers. Start
252 and Offset affect the first result, End and Limit affect the last result.
253 If both Start and Offset are set, then the offset is relative to Start.
254 If both End and Limit are set, then the earliest constraint wins. Limit is
255 relative to Start+Offset, not relative to End. As a special case, a
256 negative limit means unlimited.
257
258Example code:
259
260 type Widget struct {
261 Description string
262 Price int
263 }
264
265 func handle(w http.ResponseWriter, r *http.Request) {
266 ctx := appengine.NewContext(r)
267 q := datastore.NewQuery("Widget").
268 Filter("Price <", 1000).
269 Order("-Price")
270 b := new(bytes.Buffer)
271 for t := q.Run(ctx); ; {
272 var x Widget
273 key, err := t.Next(&x)
274 if err == datastore.Done {
275 break
276 }
277 if err != nil {
278 serveError(ctx, w, err)
279 return
280 }
281 fmt.Fprintf(b, "Key=%v\nWidget=%#v\n\n", key, x)
282 }
283 w.Header().Set("Content-Type", "text/plain; charset=utf-8")
284 io.Copy(w, b)
285 }
286
287
288Transactions
289
290RunInTransaction runs a function in a transaction.
291
292Example code:
293
294 type Counter struct {
295 Count int
296 }
297
298 func inc(ctx context.Context, key *datastore.Key) (int, error) {
299 var x Counter
300 if err := datastore.Get(ctx, key, &x); err != nil && err != datastore.ErrNoSuchEntity {
301 return 0, err
302 }
303 x.Count++
304 if _, err := datastore.Put(ctx, key, &x); err != nil {
305 return 0, err
306 }
307 return x.Count, nil
308 }
309
310 func handle(w http.ResponseWriter, r *http.Request) {
311 ctx := appengine.NewContext(r)
312 var count int
313 err := datastore.RunInTransaction(ctx, func(ctx context.Context) error {
314 var err1 error
315 count, err1 = inc(ctx, datastore.NewKey(ctx, "Counter", "singleton", 0, nil))
316 return err1
317 }, nil)
318 if err != nil {
319 serveError(ctx, w, err)
320 return
321 }
322 w.Header().Set("Content-Type", "text/plain; charset=utf-8")
323 fmt.Fprintf(w, "Count=%d", count)
324 }
325
326
327Metadata
328
329The datastore package provides access to some of App Engine's datastore
330metadata. This metadata includes information about the entity groups,
331namespaces, entity kinds, and properties in the datastore, as well as the
332property representations for each property.
333
334Example code:
335
336 func handle(w http.ResponseWriter, r *http.Request) {
337 // Print all the kinds in the datastore, with all the indexed
338 // properties (and their representations) for each.
339 ctx := appengine.NewContext(r)
340
341 kinds, err := datastore.Kinds(ctx)
342 if err != nil {
343 serveError(ctx, w, err)
344 return
345 }
346
347 w.Header().Set("Content-Type", "text/plain; charset=utf-8")
348 for _, kind := range kinds {
349 fmt.Fprintf(w, "%s:\n", kind)
350 props, err := datastore.KindProperties(ctx, kind)
351 if err != nil {
352 fmt.Fprintln(w, "\t(unable to retrieve properties)")
353 continue
354 }
355 for p, rep := range props {
356 fmt.Fprintf(w, "\t-%s (%s)\n", p, strings.Join(rep, ", "))
357 }
358 }
359 }
360*/
361package datastore // import "google.golang.org/appengine/datastore"
diff --git a/vendor/google.golang.org/appengine/datastore/key.go b/vendor/google.golang.org/appengine/datastore/key.go
new file mode 100644
index 0000000..6ab83ea
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/key.go
@@ -0,0 +1,396 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "bytes"
9 "encoding/base64"
10 "encoding/gob"
11 "errors"
12 "fmt"
13 "strconv"
14 "strings"
15
16 "github.com/golang/protobuf/proto"
17 "golang.org/x/net/context"
18
19 "google.golang.org/appengine/internal"
20 pb "google.golang.org/appengine/internal/datastore"
21)
22
23type KeyRangeCollisionError struct {
24 start int64
25 end int64
26}
27
28func (e *KeyRangeCollisionError) Error() string {
29 return fmt.Sprintf("datastore: Collision when attempting to allocate range [%d, %d]",
30 e.start, e.end)
31}
32
33type KeyRangeContentionError struct {
34 start int64
35 end int64
36}
37
38func (e *KeyRangeContentionError) Error() string {
39 return fmt.Sprintf("datastore: Contention when attempting to allocate range [%d, %d]",
40 e.start, e.end)
41}
42
43// Key represents the datastore key for a stored entity, and is immutable.
44type Key struct {
45 kind string
46 stringID string
47 intID int64
48 parent *Key
49 appID string
50 namespace string
51}
52
53// Kind returns the key's kind (also known as entity type).
54func (k *Key) Kind() string {
55 return k.kind
56}
57
58// StringID returns the key's string ID (also known as an entity name or key
59// name), which may be "".
60func (k *Key) StringID() string {
61 return k.stringID
62}
63
64// IntID returns the key's integer ID, which may be 0.
65func (k *Key) IntID() int64 {
66 return k.intID
67}
68
69// Parent returns the key's parent key, which may be nil.
70func (k *Key) Parent() *Key {
71 return k.parent
72}
73
74// AppID returns the key's application ID.
75func (k *Key) AppID() string {
76 return k.appID
77}
78
79// Namespace returns the key's namespace.
80func (k *Key) Namespace() string {
81 return k.namespace
82}
83
84// Incomplete returns whether the key does not refer to a stored entity.
85// In particular, whether the key has a zero StringID and a zero IntID.
86func (k *Key) Incomplete() bool {
87 return k.stringID == "" && k.intID == 0
88}
89
90// valid returns whether the key is valid.
91func (k *Key) valid() bool {
92 if k == nil {
93 return false
94 }
95 for ; k != nil; k = k.parent {
96 if k.kind == "" || k.appID == "" {
97 return false
98 }
99 if k.stringID != "" && k.intID != 0 {
100 return false
101 }
102 if k.parent != nil {
103 if k.parent.Incomplete() {
104 return false
105 }
106 if k.parent.appID != k.appID || k.parent.namespace != k.namespace {
107 return false
108 }
109 }
110 }
111 return true
112}
113
114// Equal returns whether two keys are equal.
115func (k *Key) Equal(o *Key) bool {
116 for k != nil && o != nil {
117 if k.kind != o.kind || k.stringID != o.stringID || k.intID != o.intID || k.appID != o.appID || k.namespace != o.namespace {
118 return false
119 }
120 k, o = k.parent, o.parent
121 }
122 return k == o
123}
124
125// root returns the furthest ancestor of a key, which may be itself.
126func (k *Key) root() *Key {
127 for k.parent != nil {
128 k = k.parent
129 }
130 return k
131}
132
133// marshal marshals the key's string representation to the buffer.
134func (k *Key) marshal(b *bytes.Buffer) {
135 if k.parent != nil {
136 k.parent.marshal(b)
137 }
138 b.WriteByte('/')
139 b.WriteString(k.kind)
140 b.WriteByte(',')
141 if k.stringID != "" {
142 b.WriteString(k.stringID)
143 } else {
144 b.WriteString(strconv.FormatInt(k.intID, 10))
145 }
146}
147
148// String returns a string representation of the key.
149func (k *Key) String() string {
150 if k == nil {
151 return ""
152 }
153 b := bytes.NewBuffer(make([]byte, 0, 512))
154 k.marshal(b)
155 return b.String()
156}
157
158type gobKey struct {
159 Kind string
160 StringID string
161 IntID int64
162 Parent *gobKey
163 AppID string
164 Namespace string
165}
166
167func keyToGobKey(k *Key) *gobKey {
168 if k == nil {
169 return nil
170 }
171 return &gobKey{
172 Kind: k.kind,
173 StringID: k.stringID,
174 IntID: k.intID,
175 Parent: keyToGobKey(k.parent),
176 AppID: k.appID,
177 Namespace: k.namespace,
178 }
179}
180
181func gobKeyToKey(gk *gobKey) *Key {
182 if gk == nil {
183 return nil
184 }
185 return &Key{
186 kind: gk.Kind,
187 stringID: gk.StringID,
188 intID: gk.IntID,
189 parent: gobKeyToKey(gk.Parent),
190 appID: gk.AppID,
191 namespace: gk.Namespace,
192 }
193}
194
195func (k *Key) GobEncode() ([]byte, error) {
196 buf := new(bytes.Buffer)
197 if err := gob.NewEncoder(buf).Encode(keyToGobKey(k)); err != nil {
198 return nil, err
199 }
200 return buf.Bytes(), nil
201}
202
203func (k *Key) GobDecode(buf []byte) error {
204 gk := new(gobKey)
205 if err := gob.NewDecoder(bytes.NewBuffer(buf)).Decode(gk); err != nil {
206 return err
207 }
208 *k = *gobKeyToKey(gk)
209 return nil
210}
211
212func (k *Key) MarshalJSON() ([]byte, error) {
213 return []byte(`"` + k.Encode() + `"`), nil
214}
215
216func (k *Key) UnmarshalJSON(buf []byte) error {
217 if len(buf) < 2 || buf[0] != '"' || buf[len(buf)-1] != '"' {
218 return errors.New("datastore: bad JSON key")
219 }
220 k2, err := DecodeKey(string(buf[1 : len(buf)-1]))
221 if err != nil {
222 return err
223 }
224 *k = *k2
225 return nil
226}
227
228// Encode returns an opaque representation of the key
229// suitable for use in HTML and URLs.
230// This is compatible with the Python and Java runtimes.
231func (k *Key) Encode() string {
232 ref := keyToProto("", k)
233
234 b, err := proto.Marshal(ref)
235 if err != nil {
236 panic(err)
237 }
238
239 // Trailing padding is stripped.
240 return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=")
241}
242
243// DecodeKey decodes a key from the opaque representation returned by Encode.
244func DecodeKey(encoded string) (*Key, error) {
245 // Re-add padding.
246 if m := len(encoded) % 4; m != 0 {
247 encoded += strings.Repeat("=", 4-m)
248 }
249
250 b, err := base64.URLEncoding.DecodeString(encoded)
251 if err != nil {
252 return nil, err
253 }
254
255 ref := new(pb.Reference)
256 if err := proto.Unmarshal(b, ref); err != nil {
257 return nil, err
258 }
259
260 return protoToKey(ref)
261}
262
263// NewIncompleteKey creates a new incomplete key.
264// kind cannot be empty.
265func NewIncompleteKey(c context.Context, kind string, parent *Key) *Key {
266 return NewKey(c, kind, "", 0, parent)
267}
268
269// NewKey creates a new key.
270// kind cannot be empty.
271// Either one or both of stringID and intID must be zero. If both are zero,
272// the key returned is incomplete.
273// parent must either be a complete key or nil.
274func NewKey(c context.Context, kind, stringID string, intID int64, parent *Key) *Key {
275 // If there's a parent key, use its namespace.
276 // Otherwise, use any namespace attached to the context.
277 var namespace string
278 if parent != nil {
279 namespace = parent.namespace
280 } else {
281 namespace = internal.NamespaceFromContext(c)
282 }
283
284 return &Key{
285 kind: kind,
286 stringID: stringID,
287 intID: intID,
288 parent: parent,
289 appID: internal.FullyQualifiedAppID(c),
290 namespace: namespace,
291 }
292}
293
294// AllocateIDs returns a range of n integer IDs with the given kind and parent
295// combination. kind cannot be empty; parent may be nil. The IDs in the range
296// returned will not be used by the datastore's automatic ID sequence generator
297// and may be used with NewKey without conflict.
298//
299// The range is inclusive at the low end and exclusive at the high end. In
300// other words, valid intIDs x satisfy low <= x && x < high.
301//
302// If no error is returned, low + n == high.
303func AllocateIDs(c context.Context, kind string, parent *Key, n int) (low, high int64, err error) {
304 if kind == "" {
305 return 0, 0, errors.New("datastore: AllocateIDs given an empty kind")
306 }
307 if n < 0 {
308 return 0, 0, fmt.Errorf("datastore: AllocateIDs given a negative count: %d", n)
309 }
310 if n == 0 {
311 return 0, 0, nil
312 }
313 req := &pb.AllocateIdsRequest{
314 ModelKey: keyToProto("", NewIncompleteKey(c, kind, parent)),
315 Size: proto.Int64(int64(n)),
316 }
317 res := &pb.AllocateIdsResponse{}
318 if err := internal.Call(c, "datastore_v3", "AllocateIds", req, res); err != nil {
319 return 0, 0, err
320 }
321 // The protobuf is inclusive at both ends. Idiomatic Go (e.g. slices, for loops)
322 // is inclusive at the low end and exclusive at the high end, so we add 1.
323 low = res.GetStart()
324 high = res.GetEnd() + 1
325 if low+int64(n) != high {
326 return 0, 0, fmt.Errorf("datastore: internal error: could not allocate %d IDs", n)
327 }
328 return low, high, nil
329}
330
331// AllocateIDRange allocates a range of IDs with specific endpoints.
332// The range is inclusive at both the low and high end. Once these IDs have been
333// allocated, you can manually assign them to newly created entities.
334//
335// The Datastore's automatic ID allocator never assigns a key that has already
336// been allocated (either through automatic ID allocation or through an explicit
337// AllocateIDs call). As a result, entities written to the given key range will
338// never be overwritten. However, writing entities with manually assigned keys in
339// this range may overwrite existing entities (or new entities written by a separate
340// request), depending on the error returned.
341//
342// Use this only if you have an existing numeric ID range that you want to reserve
343// (for example, bulk loading entities that already have IDs). If you don't care
344// about which IDs you receive, use AllocateIDs instead.
345//
346// AllocateIDRange returns nil if the range is successfully allocated. If one or more
347// entities with an ID in the given range already exist, it returns a KeyRangeCollisionError.
348// If the Datastore has already cached IDs in this range (e.g. from a previous call to
349// AllocateIDRange), it returns a KeyRangeContentionError. Errors of other types indicate
350// problems with arguments or an error returned directly from the Datastore.
351func AllocateIDRange(c context.Context, kind string, parent *Key, start, end int64) (err error) {
352 if kind == "" {
353 return errors.New("datastore: AllocateIDRange given an empty kind")
354 }
355
356 if start < 1 || end < 1 {
357 return errors.New("datastore: AllocateIDRange start and end must both be greater than 0")
358 }
359
360 if start > end {
361 return errors.New("datastore: AllocateIDRange start must be before end")
362 }
363
364 req := &pb.AllocateIdsRequest{
365 ModelKey: keyToProto("", NewIncompleteKey(c, kind, parent)),
366 Max: proto.Int64(end),
367 }
368 res := &pb.AllocateIdsResponse{}
369 if err := internal.Call(c, "datastore_v3", "AllocateIds", req, res); err != nil {
370 return err
371 }
372
373 // Check for collisions, i.e. existing entities with IDs in this range.
374 // We could do this before the allocation, but we'd still have to do it
375 // afterward as well to catch the race condition where an entity is inserted
376 // after that initial check but before the allocation. Skip the up-front check
377 // and just do it once.
378 q := NewQuery(kind).Filter("__key__ >=", NewKey(c, kind, "", start, parent)).
379 Filter("__key__ <=", NewKey(c, kind, "", end, parent)).KeysOnly().Limit(1)
380
381 keys, err := q.GetAll(c, nil)
382 if err != nil {
383 return err
384 }
385 if len(keys) != 0 {
386 return &KeyRangeCollisionError{start: start, end: end}
387 }
388
389 // Check for a race condition, i.e. cases where the datastore may have
390 // cached ID batches that contain IDs in this range.
391 if start < res.GetStart() {
392 return &KeyRangeContentionError{start: start, end: end}
393 }
394
395 return nil
396}
diff --git a/vendor/google.golang.org/appengine/datastore/load.go b/vendor/google.golang.org/appengine/datastore/load.go
new file mode 100644
index 0000000..38a6365
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/load.go
@@ -0,0 +1,429 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "fmt"
9 "reflect"
10 "strings"
11 "time"
12
13 "github.com/golang/protobuf/proto"
14 "google.golang.org/appengine"
15 pb "google.golang.org/appengine/internal/datastore"
16)
17
18var (
19 typeOfBlobKey = reflect.TypeOf(appengine.BlobKey(""))
20 typeOfByteSlice = reflect.TypeOf([]byte(nil))
21 typeOfByteString = reflect.TypeOf(ByteString(nil))
22 typeOfGeoPoint = reflect.TypeOf(appengine.GeoPoint{})
23 typeOfTime = reflect.TypeOf(time.Time{})
24 typeOfKeyPtr = reflect.TypeOf(&Key{})
25 typeOfEntityPtr = reflect.TypeOf(&Entity{})
26)
27
28// typeMismatchReason returns a string explaining why the property p could not
29// be stored in an entity field of type v.Type().
30func typeMismatchReason(pValue interface{}, v reflect.Value) string {
31 entityType := "empty"
32 switch pValue.(type) {
33 case int64:
34 entityType = "int"
35 case bool:
36 entityType = "bool"
37 case string:
38 entityType = "string"
39 case float64:
40 entityType = "float"
41 case *Key:
42 entityType = "*datastore.Key"
43 case time.Time:
44 entityType = "time.Time"
45 case appengine.BlobKey:
46 entityType = "appengine.BlobKey"
47 case appengine.GeoPoint:
48 entityType = "appengine.GeoPoint"
49 case ByteString:
50 entityType = "datastore.ByteString"
51 case []byte:
52 entityType = "[]byte"
53 }
54 return fmt.Sprintf("type mismatch: %s versus %v", entityType, v.Type())
55}
56
57type propertyLoader struct {
58 // m holds the number of times a substruct field like "Foo.Bar.Baz" has
59 // been seen so far. The map is constructed lazily.
60 m map[string]int
61}
62
63func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p Property, requireSlice bool) string {
64 var v reflect.Value
65 var sliceIndex int
66
67 name := p.Name
68
69 // If name ends with a '.', the last field is anonymous.
70 // In this case, strings.Split will give us "" as the
71 // last element of our fields slice, which will match the ""
72 // field name in the substruct codec.
73 fields := strings.Split(name, ".")
74
75 for len(fields) > 0 {
76 var decoder fieldCodec
77 var ok bool
78
79 // Cut off the last field (delimited by ".") and find its parent
80 // in the codec.
81 // eg. for name "A.B.C.D", split off "A.B.C" and try to
82 // find a field in the codec with this name.
83 // Loop again with "A.B", etc.
84 for i := len(fields); i > 0; i-- {
85 parent := strings.Join(fields[:i], ".")
86 decoder, ok = codec.fields[parent]
87 if ok {
88 fields = fields[i:]
89 break
90 }
91 }
92
93 // If we never found a matching field in the codec, return
94 // error message.
95 if !ok {
96 return "no such struct field"
97 }
98
99 v = initField(structValue, decoder.path)
100 if !v.IsValid() {
101 return "no such struct field"
102 }
103 if !v.CanSet() {
104 return "cannot set struct field"
105 }
106
107 if decoder.structCodec != nil {
108 codec = decoder.structCodec
109 structValue = v
110 }
111
112 if v.Kind() == reflect.Slice && v.Type() != typeOfByteSlice {
113 if l.m == nil {
114 l.m = make(map[string]int)
115 }
116 sliceIndex = l.m[p.Name]
117 l.m[p.Name] = sliceIndex + 1
118 for v.Len() <= sliceIndex {
119 v.Set(reflect.Append(v, reflect.New(v.Type().Elem()).Elem()))
120 }
121 structValue = v.Index(sliceIndex)
122 requireSlice = false
123 }
124 }
125
126 var slice reflect.Value
127 if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 {
128 slice = v
129 v = reflect.New(v.Type().Elem()).Elem()
130 } else if requireSlice {
131 return "multiple-valued property requires a slice field type"
132 }
133
134 // Convert indexValues to a Go value with a meaning derived from the
135 // destination type.
136 pValue := p.Value
137 if iv, ok := pValue.(indexValue); ok {
138 meaning := pb.Property_NO_MEANING
139 switch v.Type() {
140 case typeOfBlobKey:
141 meaning = pb.Property_BLOBKEY
142 case typeOfByteSlice:
143 meaning = pb.Property_BLOB
144 case typeOfByteString:
145 meaning = pb.Property_BYTESTRING
146 case typeOfGeoPoint:
147 meaning = pb.Property_GEORSS_POINT
148 case typeOfTime:
149 meaning = pb.Property_GD_WHEN
150 case typeOfEntityPtr:
151 meaning = pb.Property_ENTITY_PROTO
152 }
153 var err error
154 pValue, err = propValue(iv.value, meaning)
155 if err != nil {
156 return err.Error()
157 }
158 }
159
160 if errReason := setVal(v, pValue); errReason != "" {
161 // Set the slice back to its zero value.
162 if slice.IsValid() {
163 slice.Set(reflect.Zero(slice.Type()))
164 }
165 return errReason
166 }
167
168 if slice.IsValid() {
169 slice.Index(sliceIndex).Set(v)
170 }
171
172 return ""
173}
174
175// setVal sets v to the value pValue.
176func setVal(v reflect.Value, pValue interface{}) string {
177 switch v.Kind() {
178 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
179 x, ok := pValue.(int64)
180 if !ok && pValue != nil {
181 return typeMismatchReason(pValue, v)
182 }
183 if v.OverflowInt(x) {
184 return fmt.Sprintf("value %v overflows struct field of type %v", x, v.Type())
185 }
186 v.SetInt(x)
187 case reflect.Bool:
188 x, ok := pValue.(bool)
189 if !ok && pValue != nil {
190 return typeMismatchReason(pValue, v)
191 }
192 v.SetBool(x)
193 case reflect.String:
194 switch x := pValue.(type) {
195 case appengine.BlobKey:
196 v.SetString(string(x))
197 case ByteString:
198 v.SetString(string(x))
199 case string:
200 v.SetString(x)
201 default:
202 if pValue != nil {
203 return typeMismatchReason(pValue, v)
204 }
205 }
206 case reflect.Float32, reflect.Float64:
207 x, ok := pValue.(float64)
208 if !ok && pValue != nil {
209 return typeMismatchReason(pValue, v)
210 }
211 if v.OverflowFloat(x) {
212 return fmt.Sprintf("value %v overflows struct field of type %v", x, v.Type())
213 }
214 v.SetFloat(x)
215 case reflect.Ptr:
216 x, ok := pValue.(*Key)
217 if !ok && pValue != nil {
218 return typeMismatchReason(pValue, v)
219 }
220 if _, ok := v.Interface().(*Key); !ok {
221 return typeMismatchReason(pValue, v)
222 }
223 v.Set(reflect.ValueOf(x))
224 case reflect.Struct:
225 switch v.Type() {
226 case typeOfTime:
227 x, ok := pValue.(time.Time)
228 if !ok && pValue != nil {
229 return typeMismatchReason(pValue, v)
230 }
231 v.Set(reflect.ValueOf(x))
232 case typeOfGeoPoint:
233 x, ok := pValue.(appengine.GeoPoint)
234 if !ok && pValue != nil {
235 return typeMismatchReason(pValue, v)
236 }
237 v.Set(reflect.ValueOf(x))
238 default:
239 ent, ok := pValue.(*Entity)
240 if !ok {
241 return typeMismatchReason(pValue, v)
242 }
243
244 // Recursively load nested struct
245 pls, err := newStructPLS(v.Addr().Interface())
246 if err != nil {
247 return err.Error()
248 }
249
250 // if ent has a Key value and our struct has a Key field,
251 // load the Entity's Key value into the Key field on the struct.
252 if ent.Key != nil && pls.codec.keyField != -1 {
253
254 pls.v.Field(pls.codec.keyField).Set(reflect.ValueOf(ent.Key))
255 }
256
257 err = pls.Load(ent.Properties)
258 if err != nil {
259 return err.Error()
260 }
261 }
262 case reflect.Slice:
263 x, ok := pValue.([]byte)
264 if !ok {
265 if y, yok := pValue.(ByteString); yok {
266 x, ok = []byte(y), true
267 }
268 }
269 if !ok && pValue != nil {
270 return typeMismatchReason(pValue, v)
271 }
272 if v.Type().Elem().Kind() != reflect.Uint8 {
273 return typeMismatchReason(pValue, v)
274 }
275 v.SetBytes(x)
276 default:
277 return typeMismatchReason(pValue, v)
278 }
279 return ""
280}
281
282// initField is similar to reflect's Value.FieldByIndex, in that it
283// returns the nested struct field corresponding to index, but it
284// initialises any nil pointers encountered when traversing the structure.
285func initField(val reflect.Value, index []int) reflect.Value {
286 for _, i := range index[:len(index)-1] {
287 val = val.Field(i)
288 if val.Kind() == reflect.Ptr {
289 if val.IsNil() {
290 val.Set(reflect.New(val.Type().Elem()))
291 }
292 val = val.Elem()
293 }
294 }
295 return val.Field(index[len(index)-1])
296}
297
298// loadEntity loads an EntityProto into PropertyLoadSaver or struct pointer.
299func loadEntity(dst interface{}, src *pb.EntityProto) (err error) {
300 ent, err := protoToEntity(src)
301 if err != nil {
302 return err
303 }
304 if e, ok := dst.(PropertyLoadSaver); ok {
305 return e.Load(ent.Properties)
306 }
307 return LoadStruct(dst, ent.Properties)
308}
309
310func (s structPLS) Load(props []Property) error {
311 var fieldName, reason string
312 var l propertyLoader
313 for _, p := range props {
314 if errStr := l.load(s.codec, s.v, p, p.Multiple); errStr != "" {
315 // We don't return early, as we try to load as many properties as possible.
316 // It is valid to load an entity into a struct that cannot fully represent it.
317 // That case returns an error, but the caller is free to ignore it.
318 fieldName, reason = p.Name, errStr
319 }
320 }
321 if reason != "" {
322 return &ErrFieldMismatch{
323 StructType: s.v.Type(),
324 FieldName: fieldName,
325 Reason: reason,
326 }
327 }
328 return nil
329}
330
331func protoToEntity(src *pb.EntityProto) (*Entity, error) {
332 props, rawProps := src.Property, src.RawProperty
333 outProps := make([]Property, 0, len(props)+len(rawProps))
334 for {
335 var (
336 x *pb.Property
337 noIndex bool
338 )
339 if len(props) > 0 {
340 x, props = props[0], props[1:]
341 } else if len(rawProps) > 0 {
342 x, rawProps = rawProps[0], rawProps[1:]
343 noIndex = true
344 } else {
345 break
346 }
347
348 var value interface{}
349 if x.Meaning != nil && *x.Meaning == pb.Property_INDEX_VALUE {
350 value = indexValue{x.Value}
351 } else {
352 var err error
353 value, err = propValue(x.Value, x.GetMeaning())
354 if err != nil {
355 return nil, err
356 }
357 }
358 outProps = append(outProps, Property{
359 Name: x.GetName(),
360 Value: value,
361 NoIndex: noIndex,
362 Multiple: x.GetMultiple(),
363 })
364 }
365
366 var key *Key
367 if src.Key != nil {
368 // Ignore any error, since nested entity values
369 // are allowed to have an invalid key.
370 key, _ = protoToKey(src.Key)
371 }
372 return &Entity{key, outProps}, nil
373}
374
375// propValue returns a Go value that combines the raw PropertyValue with a
376// meaning. For example, an Int64Value with GD_WHEN becomes a time.Time.
377func propValue(v *pb.PropertyValue, m pb.Property_Meaning) (interface{}, error) {
378 switch {
379 case v.Int64Value != nil:
380 if m == pb.Property_GD_WHEN {
381 return fromUnixMicro(*v.Int64Value), nil
382 } else {
383 return *v.Int64Value, nil
384 }
385 case v.BooleanValue != nil:
386 return *v.BooleanValue, nil
387 case v.StringValue != nil:
388 if m == pb.Property_BLOB {
389 return []byte(*v.StringValue), nil
390 } else if m == pb.Property_BLOBKEY {
391 return appengine.BlobKey(*v.StringValue), nil
392 } else if m == pb.Property_BYTESTRING {
393 return ByteString(*v.StringValue), nil
394 } else if m == pb.Property_ENTITY_PROTO {
395 var ent pb.EntityProto
396 err := proto.Unmarshal([]byte(*v.StringValue), &ent)
397 if err != nil {
398 return nil, err
399 }
400 return protoToEntity(&ent)
401 } else {
402 return *v.StringValue, nil
403 }
404 case v.DoubleValue != nil:
405 return *v.DoubleValue, nil
406 case v.Referencevalue != nil:
407 key, err := referenceValueToKey(v.Referencevalue)
408 if err != nil {
409 return nil, err
410 }
411 return key, nil
412 case v.Pointvalue != nil:
413 // NOTE: Strangely, latitude maps to X, longitude to Y.
414 return appengine.GeoPoint{Lat: v.Pointvalue.GetX(), Lng: v.Pointvalue.GetY()}, nil
415 }
416 return nil, nil
417}
418
419// indexValue is a Property value that is created when entities are loaded from
420// an index, such as from a projection query.
421//
422// Such Property values do not contain all of the metadata required to be
423// faithfully represented as a Go value, and are instead represented as an
424// opaque indexValue. Load the properties into a concrete struct type (e.g. by
425// passing a struct pointer to Iterator.Next) to reconstruct actual Go values
426// of type int, string, time.Time, etc.
427type indexValue struct {
428 value *pb.PropertyValue
429}
diff --git a/vendor/google.golang.org/appengine/datastore/metadata.go b/vendor/google.golang.org/appengine/datastore/metadata.go
new file mode 100644
index 0000000..6acacc3
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/metadata.go
@@ -0,0 +1,78 @@
1// Copyright 2016 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import "golang.org/x/net/context"
8
9// Datastore kinds for the metadata entities.
10const (
11 namespaceKind = "__namespace__"
12 kindKind = "__kind__"
13 propertyKind = "__property__"
14)
15
16// Namespaces returns all the datastore namespaces.
17func Namespaces(ctx context.Context) ([]string, error) {
18 // TODO(djd): Support range queries.
19 q := NewQuery(namespaceKind).KeysOnly()
20 keys, err := q.GetAll(ctx, nil)
21 if err != nil {
22 return nil, err
23 }
24 // The empty namespace key uses a numeric ID (==1), but luckily
25 // the string ID defaults to "" for numeric IDs anyway.
26 return keyNames(keys), nil
27}
28
29// Kinds returns the names of all the kinds in the current namespace.
30func Kinds(ctx context.Context) ([]string, error) {
31 // TODO(djd): Support range queries.
32 q := NewQuery(kindKind).KeysOnly()
33 keys, err := q.GetAll(ctx, nil)
34 if err != nil {
35 return nil, err
36 }
37 return keyNames(keys), nil
38}
39
40// keyNames returns a slice of the provided keys' names (string IDs).
41func keyNames(keys []*Key) []string {
42 n := make([]string, 0, len(keys))
43 for _, k := range keys {
44 n = append(n, k.StringID())
45 }
46 return n
47}
48
49// KindProperties returns all the indexed properties for the given kind.
50// The properties are returned as a map of property names to a slice of the
51// representation types. The representation types for the supported Go property
52// types are:
53// "INT64": signed integers and time.Time
54// "DOUBLE": float32 and float64
55// "BOOLEAN": bool
56// "STRING": string, []byte and ByteString
57// "POINT": appengine.GeoPoint
58// "REFERENCE": *Key
59// "USER": (not used in the Go runtime)
60func KindProperties(ctx context.Context, kind string) (map[string][]string, error) {
61 // TODO(djd): Support range queries.
62 kindKey := NewKey(ctx, kindKind, kind, 0, nil)
63 q := NewQuery(propertyKind).Ancestor(kindKey)
64
65 propMap := map[string][]string{}
66 props := []struct {
67 Repr []string `datastore:"property_representation"`
68 }{}
69
70 keys, err := q.GetAll(ctx, &props)
71 if err != nil {
72 return nil, err
73 }
74 for i, p := range props {
75 propMap[keys[i].StringID()] = p.Repr
76 }
77 return propMap, nil
78}
diff --git a/vendor/google.golang.org/appengine/datastore/prop.go b/vendor/google.golang.org/appengine/datastore/prop.go
new file mode 100644
index 0000000..5cb2079
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/prop.go
@@ -0,0 +1,330 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "fmt"
9 "reflect"
10 "strings"
11 "sync"
12 "unicode"
13)
14
15// Entities with more than this many indexed properties will not be saved.
16const maxIndexedProperties = 20000
17
18// []byte fields more than 1 megabyte long will not be loaded or saved.
19const maxBlobLen = 1 << 20
20
21// Property is a name/value pair plus some metadata. A datastore entity's
22// contents are loaded and saved as a sequence of Properties. An entity can
23// have multiple Properties with the same name, provided that p.Multiple is
24// true on all of that entity's Properties with that name.
25type Property struct {
26 // Name is the property name.
27 Name string
28 // Value is the property value. The valid types are:
29 // - int64
30 // - bool
31 // - string
32 // - float64
33 // - ByteString
34 // - *Key
35 // - time.Time
36 // - appengine.BlobKey
37 // - appengine.GeoPoint
38 // - []byte (up to 1 megabyte in length)
39 // - *Entity (representing a nested struct)
40 // This set is smaller than the set of valid struct field types that the
41 // datastore can load and save. A Property Value cannot be a slice (apart
42 // from []byte); use multiple Properties instead. Also, a Value's type
43 // must be explicitly on the list above; it is not sufficient for the
44 // underlying type to be on that list. For example, a Value of "type
45 // myInt64 int64" is invalid. Smaller-width integers and floats are also
46 // invalid. Again, this is more restrictive than the set of valid struct
47 // field types.
48 //
49 // A Value will have an opaque type when loading entities from an index,
50 // such as via a projection query. Load entities into a struct instead
51 // of a PropertyLoadSaver when using a projection query.
52 //
53 // A Value may also be the nil interface value; this is equivalent to
54 // Python's None but not directly representable by a Go struct. Loading
55 // a nil-valued property into a struct will set that field to the zero
56 // value.
57 Value interface{}
58 // NoIndex is whether the datastore cannot index this property.
59 NoIndex bool
60 // Multiple is whether the entity can have multiple properties with
61 // the same name. Even if a particular instance only has one property with
62 // a certain name, Multiple should be true if a struct would best represent
63 // it as a field of type []T instead of type T.
64 Multiple bool
65}
66
67// An Entity is the value type for a nested struct.
68// This type is only used for a Property's Value.
69type Entity struct {
70 Key *Key
71 Properties []Property
72}
73
74// ByteString is a short byte slice (up to 1500 bytes) that can be indexed.
75type ByteString []byte
76
77// PropertyLoadSaver can be converted from and to a slice of Properties.
78type PropertyLoadSaver interface {
79 Load([]Property) error
80 Save() ([]Property, error)
81}
82
83// PropertyList converts a []Property to implement PropertyLoadSaver.
84type PropertyList []Property
85
86var (
87 typeOfPropertyLoadSaver = reflect.TypeOf((*PropertyLoadSaver)(nil)).Elem()
88 typeOfPropertyList = reflect.TypeOf(PropertyList(nil))
89)
90
91// Load loads all of the provided properties into l.
92// It does not first reset *l to an empty slice.
93func (l *PropertyList) Load(p []Property) error {
94 *l = append(*l, p...)
95 return nil
96}
97
98// Save saves all of l's properties as a slice or Properties.
99func (l *PropertyList) Save() ([]Property, error) {
100 return *l, nil
101}
102
103// validPropertyName returns whether name consists of one or more valid Go
104// identifiers joined by ".".
105func validPropertyName(name string) bool {
106 if name == "" {
107 return false
108 }
109 for _, s := range strings.Split(name, ".") {
110 if s == "" {
111 return false
112 }
113 first := true
114 for _, c := range s {
115 if first {
116 first = false
117 if c != '_' && !unicode.IsLetter(c) {
118 return false
119 }
120 } else {
121 if c != '_' && !unicode.IsLetter(c) && !unicode.IsDigit(c) {
122 return false
123 }
124 }
125 }
126 }
127 return true
128}
129
130// structCodec describes how to convert a struct to and from a sequence of
131// properties.
132type structCodec struct {
133 // fields gives the field codec for the structTag with the given name.
134 fields map[string]fieldCodec
135 // hasSlice is whether a struct or any of its nested or embedded structs
136 // has a slice-typed field (other than []byte).
137 hasSlice bool
138 // keyField is the index of a *Key field with structTag __key__.
139 // This field is not relevant for the top level struct, only for
140 // nested structs.
141 keyField int
142 // complete is whether the structCodec is complete. An incomplete
143 // structCodec may be encountered when walking a recursive struct.
144 complete bool
145}
146
147// fieldCodec is a struct field's index and, if that struct field's type is
148// itself a struct, that substruct's structCodec.
149type fieldCodec struct {
150 // path is the index path to the field
151 path []int
152 noIndex bool
153 // omitEmpty indicates that the field should be omitted on save
154 // if empty.
155 omitEmpty bool
156 // structCodec is the codec fot the struct field at index 'path',
157 // or nil if the field is not a struct.
158 structCodec *structCodec
159}
160
161// structCodecs collects the structCodecs that have already been calculated.
162var (
163 structCodecsMutex sync.Mutex
164 structCodecs = make(map[reflect.Type]*structCodec)
165)
166
167// getStructCodec returns the structCodec for the given struct type.
168func getStructCodec(t reflect.Type) (*structCodec, error) {
169 structCodecsMutex.Lock()
170 defer structCodecsMutex.Unlock()
171 return getStructCodecLocked(t)
172}
173
174// getStructCodecLocked implements getStructCodec. The structCodecsMutex must
175// be held when calling this function.
176func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr error) {
177 c, ok := structCodecs[t]
178 if ok {
179 return c, nil
180 }
181 c = &structCodec{
182 fields: make(map[string]fieldCodec),
183 // We initialize keyField to -1 so that the zero-value is not
184 // misinterpreted as index 0.
185 keyField: -1,
186 }
187
188 // Add c to the structCodecs map before we are sure it is good. If t is
189 // a recursive type, it needs to find the incomplete entry for itself in
190 // the map.
191 structCodecs[t] = c
192 defer func() {
193 if retErr != nil {
194 delete(structCodecs, t)
195 }
196 }()
197
198 for i := 0; i < t.NumField(); i++ {
199 f := t.Field(i)
200 // Skip unexported fields.
201 // Note that if f is an anonymous, unexported struct field,
202 // we will promote its fields.
203 if f.PkgPath != "" && !f.Anonymous {
204 continue
205 }
206
207 tags := strings.Split(f.Tag.Get("datastore"), ",")
208 name := tags[0]
209 opts := make(map[string]bool)
210 for _, t := range tags[1:] {
211 opts[t] = true
212 }
213 switch {
214 case name == "":
215 if !f.Anonymous {
216 name = f.Name
217 }
218 case name == "-":
219 continue
220 case name == "__key__":
221 if f.Type != typeOfKeyPtr {
222 return nil, fmt.Errorf("datastore: __key__ field on struct %v is not a *datastore.Key", t)
223 }
224 c.keyField = i
225 case !validPropertyName(name):
226 return nil, fmt.Errorf("datastore: struct tag has invalid property name: %q", name)
227 }
228
229 substructType, fIsSlice := reflect.Type(nil), false
230 switch f.Type.Kind() {
231 case reflect.Struct:
232 substructType = f.Type
233 case reflect.Slice:
234 if f.Type.Elem().Kind() == reflect.Struct {
235 substructType = f.Type.Elem()
236 }
237 fIsSlice = f.Type != typeOfByteSlice
238 c.hasSlice = c.hasSlice || fIsSlice
239 }
240
241 var sub *structCodec
242 if substructType != nil && substructType != typeOfTime && substructType != typeOfGeoPoint {
243 var err error
244 sub, err = getStructCodecLocked(substructType)
245 if err != nil {
246 return nil, err
247 }
248 if !sub.complete {
249 return nil, fmt.Errorf("datastore: recursive struct: field %q", f.Name)
250 }
251 if fIsSlice && sub.hasSlice {
252 return nil, fmt.Errorf(
253 "datastore: flattening nested structs leads to a slice of slices: field %q", f.Name)
254 }
255 c.hasSlice = c.hasSlice || sub.hasSlice
256 // If f is an anonymous struct field, we promote the substruct's fields up to this level
257 // in the linked list of struct codecs.
258 if f.Anonymous {
259 for subname, subfield := range sub.fields {
260 if name != "" {
261 subname = name + "." + subname
262 }
263 if _, ok := c.fields[subname]; ok {
264 return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", subname)
265 }
266 c.fields[subname] = fieldCodec{
267 path: append([]int{i}, subfield.path...),
268 noIndex: subfield.noIndex || opts["noindex"],
269 omitEmpty: subfield.omitEmpty,
270 structCodec: subfield.structCodec,
271 }
272 }
273 continue
274 }
275 }
276
277 if _, ok := c.fields[name]; ok {
278 return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", name)
279 }
280 c.fields[name] = fieldCodec{
281 path: []int{i},
282 noIndex: opts["noindex"],
283 omitEmpty: opts["omitempty"],
284 structCodec: sub,
285 }
286 }
287 c.complete = true
288 return c, nil
289}
290
291// structPLS adapts a struct to be a PropertyLoadSaver.
292type structPLS struct {
293 v reflect.Value
294 codec *structCodec
295}
296
297// newStructPLS returns a structPLS, which implements the
298// PropertyLoadSaver interface, for the struct pointer p.
299func newStructPLS(p interface{}) (*structPLS, error) {
300 v := reflect.ValueOf(p)
301 if v.Kind() != reflect.Ptr || v.Elem().Kind() != reflect.Struct {
302 return nil, ErrInvalidEntityType
303 }
304 v = v.Elem()
305 codec, err := getStructCodec(v.Type())
306 if err != nil {
307 return nil, err
308 }
309 return &structPLS{v, codec}, nil
310}
311
312// LoadStruct loads the properties from p to dst.
313// dst must be a struct pointer.
314func LoadStruct(dst interface{}, p []Property) error {
315 x, err := newStructPLS(dst)
316 if err != nil {
317 return err
318 }
319 return x.Load(p)
320}
321
322// SaveStruct returns the properties from src as a slice of Properties.
323// src must be a struct pointer.
324func SaveStruct(src interface{}) ([]Property, error) {
325 x, err := newStructPLS(src)
326 if err != nil {
327 return nil, err
328 }
329 return x.Save()
330}
diff --git a/vendor/google.golang.org/appengine/datastore/query.go b/vendor/google.golang.org/appengine/datastore/query.go
new file mode 100644
index 0000000..c1ea4ad
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/query.go
@@ -0,0 +1,757 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "encoding/base64"
9 "errors"
10 "fmt"
11 "math"
12 "reflect"
13 "strings"
14
15 "github.com/golang/protobuf/proto"
16 "golang.org/x/net/context"
17
18 "google.golang.org/appengine/internal"
19 pb "google.golang.org/appengine/internal/datastore"
20)
21
22type operator int
23
24const (
25 lessThan operator = iota
26 lessEq
27 equal
28 greaterEq
29 greaterThan
30)
31
32var operatorToProto = map[operator]*pb.Query_Filter_Operator{
33 lessThan: pb.Query_Filter_LESS_THAN.Enum(),
34 lessEq: pb.Query_Filter_LESS_THAN_OR_EQUAL.Enum(),
35 equal: pb.Query_Filter_EQUAL.Enum(),
36 greaterEq: pb.Query_Filter_GREATER_THAN_OR_EQUAL.Enum(),
37 greaterThan: pb.Query_Filter_GREATER_THAN.Enum(),
38}
39
40// filter is a conditional filter on query results.
41type filter struct {
42 FieldName string
43 Op operator
44 Value interface{}
45}
46
47type sortDirection int
48
49const (
50 ascending sortDirection = iota
51 descending
52)
53
54var sortDirectionToProto = map[sortDirection]*pb.Query_Order_Direction{
55 ascending: pb.Query_Order_ASCENDING.Enum(),
56 descending: pb.Query_Order_DESCENDING.Enum(),
57}
58
59// order is a sort order on query results.
60type order struct {
61 FieldName string
62 Direction sortDirection
63}
64
65// NewQuery creates a new Query for a specific entity kind.
66//
67// An empty kind means to return all entities, including entities created and
68// managed by other App Engine features, and is called a kindless query.
69// Kindless queries cannot include filters or sort orders on property values.
70func NewQuery(kind string) *Query {
71 return &Query{
72 kind: kind,
73 limit: -1,
74 }
75}
76
77// Query represents a datastore query.
78type Query struct {
79 kind string
80 ancestor *Key
81 filter []filter
82 order []order
83 projection []string
84
85 distinct bool
86 keysOnly bool
87 eventual bool
88 limit int32
89 offset int32
90 count int32
91 start *pb.CompiledCursor
92 end *pb.CompiledCursor
93
94 err error
95}
96
97func (q *Query) clone() *Query {
98 x := *q
99 // Copy the contents of the slice-typed fields to a new backing store.
100 if len(q.filter) > 0 {
101 x.filter = make([]filter, len(q.filter))
102 copy(x.filter, q.filter)
103 }
104 if len(q.order) > 0 {
105 x.order = make([]order, len(q.order))
106 copy(x.order, q.order)
107 }
108 return &x
109}
110
111// Ancestor returns a derivative query with an ancestor filter.
112// The ancestor should not be nil.
113func (q *Query) Ancestor(ancestor *Key) *Query {
114 q = q.clone()
115 if ancestor == nil {
116 q.err = errors.New("datastore: nil query ancestor")
117 return q
118 }
119 q.ancestor = ancestor
120 return q
121}
122
123// EventualConsistency returns a derivative query that returns eventually
124// consistent results.
125// It only has an effect on ancestor queries.
126func (q *Query) EventualConsistency() *Query {
127 q = q.clone()
128 q.eventual = true
129 return q
130}
131
132// Filter returns a derivative query with a field-based filter.
133// The filterStr argument must be a field name followed by optional space,
134// followed by an operator, one of ">", "<", ">=", "<=", or "=".
135// Fields are compared against the provided value using the operator.
136// Multiple filters are AND'ed together.
137func (q *Query) Filter(filterStr string, value interface{}) *Query {
138 q = q.clone()
139 filterStr = strings.TrimSpace(filterStr)
140 if len(filterStr) < 1 {
141 q.err = errors.New("datastore: invalid filter: " + filterStr)
142 return q
143 }
144 f := filter{
145 FieldName: strings.TrimRight(filterStr, " ><=!"),
146 Value: value,
147 }
148 switch op := strings.TrimSpace(filterStr[len(f.FieldName):]); op {
149 case "<=":
150 f.Op = lessEq
151 case ">=":
152 f.Op = greaterEq
153 case "<":
154 f.Op = lessThan
155 case ">":
156 f.Op = greaterThan
157 case "=":
158 f.Op = equal
159 default:
160 q.err = fmt.Errorf("datastore: invalid operator %q in filter %q", op, filterStr)
161 return q
162 }
163 q.filter = append(q.filter, f)
164 return q
165}
166
167// Order returns a derivative query with a field-based sort order. Orders are
168// applied in the order they are added. The default order is ascending; to sort
169// in descending order prefix the fieldName with a minus sign (-).
170func (q *Query) Order(fieldName string) *Query {
171 q = q.clone()
172 fieldName = strings.TrimSpace(fieldName)
173 o := order{
174 Direction: ascending,
175 FieldName: fieldName,
176 }
177 if strings.HasPrefix(fieldName, "-") {
178 o.Direction = descending
179 o.FieldName = strings.TrimSpace(fieldName[1:])
180 } else if strings.HasPrefix(fieldName, "+") {
181 q.err = fmt.Errorf("datastore: invalid order: %q", fieldName)
182 return q
183 }
184 if len(o.FieldName) == 0 {
185 q.err = errors.New("datastore: empty order")
186 return q
187 }
188 q.order = append(q.order, o)
189 return q
190}
191
192// Project returns a derivative query that yields only the given fields. It
193// cannot be used with KeysOnly.
194func (q *Query) Project(fieldNames ...string) *Query {
195 q = q.clone()
196 q.projection = append([]string(nil), fieldNames...)
197 return q
198}
199
200// Distinct returns a derivative query that yields de-duplicated entities with
201// respect to the set of projected fields. It is only used for projection
202// queries.
203func (q *Query) Distinct() *Query {
204 q = q.clone()
205 q.distinct = true
206 return q
207}
208
209// KeysOnly returns a derivative query that yields only keys, not keys and
210// entities. It cannot be used with projection queries.
211func (q *Query) KeysOnly() *Query {
212 q = q.clone()
213 q.keysOnly = true
214 return q
215}
216
217// Limit returns a derivative query that has a limit on the number of results
218// returned. A negative value means unlimited.
219func (q *Query) Limit(limit int) *Query {
220 q = q.clone()
221 if limit < math.MinInt32 || limit > math.MaxInt32 {
222 q.err = errors.New("datastore: query limit overflow")
223 return q
224 }
225 q.limit = int32(limit)
226 return q
227}
228
229// Offset returns a derivative query that has an offset of how many keys to
230// skip over before returning results. A negative value is invalid.
231func (q *Query) Offset(offset int) *Query {
232 q = q.clone()
233 if offset < 0 {
234 q.err = errors.New("datastore: negative query offset")
235 return q
236 }
237 if offset > math.MaxInt32 {
238 q.err = errors.New("datastore: query offset overflow")
239 return q
240 }
241 q.offset = int32(offset)
242 return q
243}
244
245// BatchSize returns a derivative query to fetch the supplied number of results
246// at once. This value should be greater than zero, and equal to or less than
247// the Limit.
248func (q *Query) BatchSize(size int) *Query {
249 q = q.clone()
250 if size <= 0 || size > math.MaxInt32 {
251 q.err = errors.New("datastore: query batch size overflow")
252 return q
253 }
254 q.count = int32(size)
255 return q
256}
257
258// Start returns a derivative query with the given start point.
259func (q *Query) Start(c Cursor) *Query {
260 q = q.clone()
261 if c.cc == nil {
262 q.err = errors.New("datastore: invalid cursor")
263 return q
264 }
265 q.start = c.cc
266 return q
267}
268
269// End returns a derivative query with the given end point.
270func (q *Query) End(c Cursor) *Query {
271 q = q.clone()
272 if c.cc == nil {
273 q.err = errors.New("datastore: invalid cursor")
274 return q
275 }
276 q.end = c.cc
277 return q
278}
279
280// toProto converts the query to a protocol buffer.
281func (q *Query) toProto(dst *pb.Query, appID string) error {
282 if len(q.projection) != 0 && q.keysOnly {
283 return errors.New("datastore: query cannot both project and be keys-only")
284 }
285 dst.Reset()
286 dst.App = proto.String(appID)
287 if q.kind != "" {
288 dst.Kind = proto.String(q.kind)
289 }
290 if q.ancestor != nil {
291 dst.Ancestor = keyToProto(appID, q.ancestor)
292 if q.eventual {
293 dst.Strong = proto.Bool(false)
294 }
295 }
296 if q.projection != nil {
297 dst.PropertyName = q.projection
298 if q.distinct {
299 dst.GroupByPropertyName = q.projection
300 }
301 }
302 if q.keysOnly {
303 dst.KeysOnly = proto.Bool(true)
304 dst.RequirePerfectPlan = proto.Bool(true)
305 }
306 for _, qf := range q.filter {
307 if qf.FieldName == "" {
308 return errors.New("datastore: empty query filter field name")
309 }
310 p, errStr := valueToProto(appID, qf.FieldName, reflect.ValueOf(qf.Value), false)
311 if errStr != "" {
312 return errors.New("datastore: bad query filter value type: " + errStr)
313 }
314 xf := &pb.Query_Filter{
315 Op: operatorToProto[qf.Op],
316 Property: []*pb.Property{p},
317 }
318 if xf.Op == nil {
319 return errors.New("datastore: unknown query filter operator")
320 }
321 dst.Filter = append(dst.Filter, xf)
322 }
323 for _, qo := range q.order {
324 if qo.FieldName == "" {
325 return errors.New("datastore: empty query order field name")
326 }
327 xo := &pb.Query_Order{
328 Property: proto.String(qo.FieldName),
329 Direction: sortDirectionToProto[qo.Direction],
330 }
331 if xo.Direction == nil {
332 return errors.New("datastore: unknown query order direction")
333 }
334 dst.Order = append(dst.Order, xo)
335 }
336 if q.limit >= 0 {
337 dst.Limit = proto.Int32(q.limit)
338 }
339 if q.offset != 0 {
340 dst.Offset = proto.Int32(q.offset)
341 }
342 if q.count != 0 {
343 dst.Count = proto.Int32(q.count)
344 }
345 dst.CompiledCursor = q.start
346 dst.EndCompiledCursor = q.end
347 dst.Compile = proto.Bool(true)
348 return nil
349}
350
351// Count returns the number of results for the query.
352//
353// The running time and number of API calls made by Count scale linearly with
354// the sum of the query's offset and limit. Unless the result count is
355// expected to be small, it is best to specify a limit; otherwise Count will
356// continue until it finishes counting or the provided context expires.
357func (q *Query) Count(c context.Context) (int, error) {
358 // Check that the query is well-formed.
359 if q.err != nil {
360 return 0, q.err
361 }
362
363 // Run a copy of the query, with keysOnly true (if we're not a projection,
364 // since the two are incompatible), and an adjusted offset. We also set the
365 // limit to zero, as we don't want any actual entity data, just the number
366 // of skipped results.
367 newQ := q.clone()
368 newQ.keysOnly = len(newQ.projection) == 0
369 newQ.limit = 0
370 if q.limit < 0 {
371 // If the original query was unlimited, set the new query's offset to maximum.
372 newQ.offset = math.MaxInt32
373 } else {
374 newQ.offset = q.offset + q.limit
375 if newQ.offset < 0 {
376 // Do the best we can, in the presence of overflow.
377 newQ.offset = math.MaxInt32
378 }
379 }
380 req := &pb.Query{}
381 if err := newQ.toProto(req, internal.FullyQualifiedAppID(c)); err != nil {
382 return 0, err
383 }
384 res := &pb.QueryResult{}
385 if err := internal.Call(c, "datastore_v3", "RunQuery", req, res); err != nil {
386 return 0, err
387 }
388
389 // n is the count we will return. For example, suppose that our original
390 // query had an offset of 4 and a limit of 2008: the count will be 2008,
391 // provided that there are at least 2012 matching entities. However, the
392 // RPCs will only skip 1000 results at a time. The RPC sequence is:
393 // call RunQuery with (offset, limit) = (2012, 0) // 2012 == newQ.offset
394 // response has (skippedResults, moreResults) = (1000, true)
395 // n += 1000 // n == 1000
396 // call Next with (offset, limit) = (1012, 0) // 1012 == newQ.offset - n
397 // response has (skippedResults, moreResults) = (1000, true)
398 // n += 1000 // n == 2000
399 // call Next with (offset, limit) = (12, 0) // 12 == newQ.offset - n
400 // response has (skippedResults, moreResults) = (12, false)
401 // n += 12 // n == 2012
402 // // exit the loop
403 // n -= 4 // n == 2008
404 var n int32
405 for {
406 // The QueryResult should have no actual entity data, just skipped results.
407 if len(res.Result) != 0 {
408 return 0, errors.New("datastore: internal error: Count request returned too much data")
409 }
410 n += res.GetSkippedResults()
411 if !res.GetMoreResults() {
412 break
413 }
414 if err := callNext(c, res, newQ.offset-n, q.count); err != nil {
415 return 0, err
416 }
417 }
418 n -= q.offset
419 if n < 0 {
420 // If the offset was greater than the number of matching entities,
421 // return 0 instead of negative.
422 n = 0
423 }
424 return int(n), nil
425}
426
427// callNext issues a datastore_v3/Next RPC to advance a cursor, such as that
428// returned by a query with more results.
429func callNext(c context.Context, res *pb.QueryResult, offset, count int32) error {
430 if res.Cursor == nil {
431 return errors.New("datastore: internal error: server did not return a cursor")
432 }
433 req := &pb.NextRequest{
434 Cursor: res.Cursor,
435 }
436 if count >= 0 {
437 req.Count = proto.Int32(count)
438 }
439 if offset != 0 {
440 req.Offset = proto.Int32(offset)
441 }
442 if res.CompiledCursor != nil {
443 req.Compile = proto.Bool(true)
444 }
445 res.Reset()
446 return internal.Call(c, "datastore_v3", "Next", req, res)
447}
448
449// GetAll runs the query in the given context and returns all keys that match
450// that query, as well as appending the values to dst.
451//
452// dst must have type *[]S or *[]*S or *[]P, for some struct type S or some non-
453// interface, non-pointer type P such that P or *P implements PropertyLoadSaver.
454//
455// As a special case, *PropertyList is an invalid type for dst, even though a
456// PropertyList is a slice of structs. It is treated as invalid to avoid being
457// mistakenly passed when *[]PropertyList was intended.
458//
459// The keys returned by GetAll will be in a 1-1 correspondence with the entities
460// added to dst.
461//
462// If q is a ``keys-only'' query, GetAll ignores dst and only returns the keys.
463//
464// The running time and number of API calls made by GetAll scale linearly with
465// the sum of the query's offset and limit. Unless the result count is
466// expected to be small, it is best to specify a limit; otherwise GetAll will
467// continue until it finishes collecting results or the provided context
468// expires.
469func (q *Query) GetAll(c context.Context, dst interface{}) ([]*Key, error) {
470 var (
471 dv reflect.Value
472 mat multiArgType
473 elemType reflect.Type
474 errFieldMismatch error
475 )
476 if !q.keysOnly {
477 dv = reflect.ValueOf(dst)
478 if dv.Kind() != reflect.Ptr || dv.IsNil() {
479 return nil, ErrInvalidEntityType
480 }
481 dv = dv.Elem()
482 mat, elemType = checkMultiArg(dv)
483 if mat == multiArgTypeInvalid || mat == multiArgTypeInterface {
484 return nil, ErrInvalidEntityType
485 }
486 }
487
488 var keys []*Key
489 for t := q.Run(c); ; {
490 k, e, err := t.next()
491 if err == Done {
492 break
493 }
494 if err != nil {
495 return keys, err
496 }
497 if !q.keysOnly {
498 ev := reflect.New(elemType)
499 if elemType.Kind() == reflect.Map {
500 // This is a special case. The zero values of a map type are
501 // not immediately useful; they have to be make'd.
502 //
503 // Funcs and channels are similar, in that a zero value is not useful,
504 // but even a freshly make'd channel isn't useful: there's no fixed
505 // channel buffer size that is always going to be large enough, and
506 // there's no goroutine to drain the other end. Theoretically, these
507 // types could be supported, for example by sniffing for a constructor
508 // method or requiring prior registration, but for now it's not a
509 // frequent enough concern to be worth it. Programmers can work around
510 // it by explicitly using Iterator.Next instead of the Query.GetAll
511 // convenience method.
512 x := reflect.MakeMap(elemType)
513 ev.Elem().Set(x)
514 }
515 if err = loadEntity(ev.Interface(), e); err != nil {
516 if _, ok := err.(*ErrFieldMismatch); ok {
517 // We continue loading entities even in the face of field mismatch errors.
518 // If we encounter any other error, that other error is returned. Otherwise,
519 // an ErrFieldMismatch is returned.
520 errFieldMismatch = err
521 } else {
522 return keys, err
523 }
524 }
525 if mat != multiArgTypeStructPtr {
526 ev = ev.Elem()
527 }
528 dv.Set(reflect.Append(dv, ev))
529 }
530 keys = append(keys, k)
531 }
532 return keys, errFieldMismatch
533}
534
535// Run runs the query in the given context.
536func (q *Query) Run(c context.Context) *Iterator {
537 if q.err != nil {
538 return &Iterator{err: q.err}
539 }
540 t := &Iterator{
541 c: c,
542 limit: q.limit,
543 count: q.count,
544 q: q,
545 prevCC: q.start,
546 }
547 var req pb.Query
548 if err := q.toProto(&req, internal.FullyQualifiedAppID(c)); err != nil {
549 t.err = err
550 return t
551 }
552 if err := internal.Call(c, "datastore_v3", "RunQuery", &req, &t.res); err != nil {
553 t.err = err
554 return t
555 }
556 offset := q.offset - t.res.GetSkippedResults()
557 var count int32
558 if t.count > 0 && (t.limit < 0 || t.count < t.limit) {
559 count = t.count
560 } else {
561 count = t.limit
562 }
563 for offset > 0 && t.res.GetMoreResults() {
564 t.prevCC = t.res.CompiledCursor
565 if err := callNext(t.c, &t.res, offset, count); err != nil {
566 t.err = err
567 break
568 }
569 skip := t.res.GetSkippedResults()
570 if skip < 0 {
571 t.err = errors.New("datastore: internal error: negative number of skipped_results")
572 break
573 }
574 offset -= skip
575 }
576 if offset < 0 {
577 t.err = errors.New("datastore: internal error: query offset was overshot")
578 }
579 return t
580}
581
582// Iterator is the result of running a query.
583type Iterator struct {
584 c context.Context
585 err error
586 // res is the result of the most recent RunQuery or Next API call.
587 res pb.QueryResult
588 // i is how many elements of res.Result we have iterated over.
589 i int
590 // limit is the limit on the number of results this iterator should return.
591 // A negative value means unlimited.
592 limit int32
593 // count is the number of results this iterator should fetch at once. This
594 // should be equal to or greater than zero.
595 count int32
596 // q is the original query which yielded this iterator.
597 q *Query
598 // prevCC is the compiled cursor that marks the end of the previous batch
599 // of results.
600 prevCC *pb.CompiledCursor
601}
602
603// Done is returned when a query iteration has completed.
604var Done = errors.New("datastore: query has no more results")
605
606// Next returns the key of the next result. When there are no more results,
607// Done is returned as the error.
608//
609// If the query is not keys only and dst is non-nil, it also loads the entity
610// stored for that key into the struct pointer or PropertyLoadSaver dst, with
611// the same semantics and possible errors as for the Get function.
612func (t *Iterator) Next(dst interface{}) (*Key, error) {
613 k, e, err := t.next()
614 if err != nil {
615 return nil, err
616 }
617 if dst != nil && !t.q.keysOnly {
618 err = loadEntity(dst, e)
619 }
620 return k, err
621}
622
623func (t *Iterator) next() (*Key, *pb.EntityProto, error) {
624 if t.err != nil {
625 return nil, nil, t.err
626 }
627
628 // Issue datastore_v3/Next RPCs as necessary.
629 for t.i == len(t.res.Result) {
630 if !t.res.GetMoreResults() {
631 t.err = Done
632 return nil, nil, t.err
633 }
634 t.prevCC = t.res.CompiledCursor
635 var count int32
636 if t.count > 0 && (t.limit < 0 || t.count < t.limit) {
637 count = t.count
638 } else {
639 count = t.limit
640 }
641 if err := callNext(t.c, &t.res, 0, count); err != nil {
642 t.err = err
643 return nil, nil, t.err
644 }
645 if t.res.GetSkippedResults() != 0 {
646 t.err = errors.New("datastore: internal error: iterator has skipped results")
647 return nil, nil, t.err
648 }
649 t.i = 0
650 if t.limit >= 0 {
651 t.limit -= int32(len(t.res.Result))
652 if t.limit < 0 {
653 t.err = errors.New("datastore: internal error: query returned more results than the limit")
654 return nil, nil, t.err
655 }
656 }
657 }
658
659 // Extract the key from the t.i'th element of t.res.Result.
660 e := t.res.Result[t.i]
661 t.i++
662 if e.Key == nil {
663 return nil, nil, errors.New("datastore: internal error: server did not return a key")
664 }
665 k, err := protoToKey(e.Key)
666 if err != nil || k.Incomplete() {
667 return nil, nil, errors.New("datastore: internal error: server returned an invalid key")
668 }
669 return k, e, nil
670}
671
672// Cursor returns a cursor for the iterator's current location.
673func (t *Iterator) Cursor() (Cursor, error) {
674 if t.err != nil && t.err != Done {
675 return Cursor{}, t.err
676 }
677 // If we are at either end of the current batch of results,
678 // return the compiled cursor at that end.
679 skipped := t.res.GetSkippedResults()
680 if t.i == 0 && skipped == 0 {
681 if t.prevCC == nil {
682 // A nil pointer (of type *pb.CompiledCursor) means no constraint:
683 // passing it as the end cursor of a new query means unlimited results
684 // (glossing over the integer limit parameter for now).
685 // A non-nil pointer to an empty pb.CompiledCursor means the start:
686 // passing it as the end cursor of a new query means 0 results.
687 // If prevCC was nil, then the original query had no start cursor, but
688 // Iterator.Cursor should return "the start" instead of unlimited.
689 return Cursor{&zeroCC}, nil
690 }
691 return Cursor{t.prevCC}, nil
692 }
693 if t.i == len(t.res.Result) {
694 return Cursor{t.res.CompiledCursor}, nil
695 }
696 // Otherwise, re-run the query offset to this iterator's position, starting from
697 // the most recent compiled cursor. This is done on a best-effort basis, as it
698 // is racy; if a concurrent process has added or removed entities, then the
699 // cursor returned may be inconsistent.
700 q := t.q.clone()
701 q.start = t.prevCC
702 q.offset = skipped + int32(t.i)
703 q.limit = 0
704 q.keysOnly = len(q.projection) == 0
705 t1 := q.Run(t.c)
706 _, _, err := t1.next()
707 if err != Done {
708 if err == nil {
709 err = fmt.Errorf("datastore: internal error: zero-limit query did not have zero results")
710 }
711 return Cursor{}, err
712 }
713 return Cursor{t1.res.CompiledCursor}, nil
714}
715
716var zeroCC pb.CompiledCursor
717
718// Cursor is an iterator's position. It can be converted to and from an opaque
719// string. A cursor can be used from different HTTP requests, but only with a
720// query with the same kind, ancestor, filter and order constraints.
721type Cursor struct {
722 cc *pb.CompiledCursor
723}
724
725// String returns a base-64 string representation of a cursor.
726func (c Cursor) String() string {
727 if c.cc == nil {
728 return ""
729 }
730 b, err := proto.Marshal(c.cc)
731 if err != nil {
732 // The only way to construct a Cursor with a non-nil cc field is to
733 // unmarshal from the byte representation. We panic if the unmarshal
734 // succeeds but the marshaling of the unchanged protobuf value fails.
735 panic(fmt.Sprintf("datastore: internal error: malformed cursor: %v", err))
736 }
737 return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=")
738}
739
740// Decode decodes a cursor from its base-64 string representation.
741func DecodeCursor(s string) (Cursor, error) {
742 if s == "" {
743 return Cursor{&zeroCC}, nil
744 }
745 if n := len(s) % 4; n != 0 {
746 s += strings.Repeat("=", 4-n)
747 }
748 b, err := base64.URLEncoding.DecodeString(s)
749 if err != nil {
750 return Cursor{}, err
751 }
752 cc := &pb.CompiledCursor{}
753 if err := proto.Unmarshal(b, cc); err != nil {
754 return Cursor{}, err
755 }
756 return Cursor{cc}, nil
757}
diff --git a/vendor/google.golang.org/appengine/datastore/save.go b/vendor/google.golang.org/appengine/datastore/save.go
new file mode 100644
index 0000000..7b045a5
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/save.go
@@ -0,0 +1,333 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "errors"
9 "fmt"
10 "math"
11 "reflect"
12 "time"
13
14 "github.com/golang/protobuf/proto"
15
16 "google.golang.org/appengine"
17 pb "google.golang.org/appengine/internal/datastore"
18)
19
20func toUnixMicro(t time.Time) int64 {
21 // We cannot use t.UnixNano() / 1e3 because we want to handle times more than
22 // 2^63 nanoseconds (which is about 292 years) away from 1970, and those cannot
23 // be represented in the numerator of a single int64 divide.
24 return t.Unix()*1e6 + int64(t.Nanosecond()/1e3)
25}
26
27func fromUnixMicro(t int64) time.Time {
28 return time.Unix(t/1e6, (t%1e6)*1e3).UTC()
29}
30
31var (
32 minTime = time.Unix(int64(math.MinInt64)/1e6, (int64(math.MinInt64)%1e6)*1e3)
33 maxTime = time.Unix(int64(math.MaxInt64)/1e6, (int64(math.MaxInt64)%1e6)*1e3)
34)
35
36// valueToProto converts a named value to a newly allocated Property.
37// The returned error string is empty on success.
38func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p *pb.Property, errStr string) {
39 var (
40 pv pb.PropertyValue
41 unsupported bool
42 )
43 switch v.Kind() {
44 case reflect.Invalid:
45 // No-op.
46 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
47 pv.Int64Value = proto.Int64(v.Int())
48 case reflect.Bool:
49 pv.BooleanValue = proto.Bool(v.Bool())
50 case reflect.String:
51 pv.StringValue = proto.String(v.String())
52 case reflect.Float32, reflect.Float64:
53 pv.DoubleValue = proto.Float64(v.Float())
54 case reflect.Ptr:
55 if k, ok := v.Interface().(*Key); ok {
56 if k != nil {
57 pv.Referencevalue = keyToReferenceValue(defaultAppID, k)
58 }
59 } else {
60 unsupported = true
61 }
62 case reflect.Struct:
63 switch t := v.Interface().(type) {
64 case time.Time:
65 if t.Before(minTime) || t.After(maxTime) {
66 return nil, "time value out of range"
67 }
68 pv.Int64Value = proto.Int64(toUnixMicro(t))
69 case appengine.GeoPoint:
70 if !t.Valid() {
71 return nil, "invalid GeoPoint value"
72 }
73 // NOTE: Strangely, latitude maps to X, longitude to Y.
74 pv.Pointvalue = &pb.PropertyValue_PointValue{X: &t.Lat, Y: &t.Lng}
75 default:
76 unsupported = true
77 }
78 case reflect.Slice:
79 if b, ok := v.Interface().([]byte); ok {
80 pv.StringValue = proto.String(string(b))
81 } else {
82 // nvToProto should already catch slice values.
83 // If we get here, we have a slice of slice values.
84 unsupported = true
85 }
86 default:
87 unsupported = true
88 }
89 if unsupported {
90 return nil, "unsupported datastore value type: " + v.Type().String()
91 }
92 p = &pb.Property{
93 Name: proto.String(name),
94 Value: &pv,
95 Multiple: proto.Bool(multiple),
96 }
97 if v.IsValid() {
98 switch v.Interface().(type) {
99 case []byte:
100 p.Meaning = pb.Property_BLOB.Enum()
101 case ByteString:
102 p.Meaning = pb.Property_BYTESTRING.Enum()
103 case appengine.BlobKey:
104 p.Meaning = pb.Property_BLOBKEY.Enum()
105 case time.Time:
106 p.Meaning = pb.Property_GD_WHEN.Enum()
107 case appengine.GeoPoint:
108 p.Meaning = pb.Property_GEORSS_POINT.Enum()
109 }
110 }
111 return p, ""
112}
113
114type saveOpts struct {
115 noIndex bool
116 multiple bool
117 omitEmpty bool
118}
119
120// saveEntity saves an EntityProto into a PropertyLoadSaver or struct pointer.
121func saveEntity(defaultAppID string, key *Key, src interface{}) (*pb.EntityProto, error) {
122 var err error
123 var props []Property
124 if e, ok := src.(PropertyLoadSaver); ok {
125 props, err = e.Save()
126 } else {
127 props, err = SaveStruct(src)
128 }
129 if err != nil {
130 return nil, err
131 }
132 return propertiesToProto(defaultAppID, key, props)
133}
134
135func saveStructProperty(props *[]Property, name string, opts saveOpts, v reflect.Value) error {
136 if opts.omitEmpty && isEmptyValue(v) {
137 return nil
138 }
139 p := Property{
140 Name: name,
141 NoIndex: opts.noIndex,
142 Multiple: opts.multiple,
143 }
144 switch x := v.Interface().(type) {
145 case *Key:
146 p.Value = x
147 case time.Time:
148 p.Value = x
149 case appengine.BlobKey:
150 p.Value = x
151 case appengine.GeoPoint:
152 p.Value = x
153 case ByteString:
154 p.Value = x
155 default:
156 switch v.Kind() {
157 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
158 p.Value = v.Int()
159 case reflect.Bool:
160 p.Value = v.Bool()
161 case reflect.String:
162 p.Value = v.String()
163 case reflect.Float32, reflect.Float64:
164 p.Value = v.Float()
165 case reflect.Slice:
166 if v.Type().Elem().Kind() == reflect.Uint8 {
167 p.NoIndex = true
168 p.Value = v.Bytes()
169 }
170 case reflect.Struct:
171 if !v.CanAddr() {
172 return fmt.Errorf("datastore: unsupported struct field: value is unaddressable")
173 }
174 sub, err := newStructPLS(v.Addr().Interface())
175 if err != nil {
176 return fmt.Errorf("datastore: unsupported struct field: %v", err)
177 }
178 return sub.save(props, name+".", opts)
179 }
180 }
181 if p.Value == nil {
182 return fmt.Errorf("datastore: unsupported struct field type: %v", v.Type())
183 }
184 *props = append(*props, p)
185 return nil
186}
187
188func (s structPLS) Save() ([]Property, error) {
189 var props []Property
190 if err := s.save(&props, "", saveOpts{}); err != nil {
191 return nil, err
192 }
193 return props, nil
194}
195
196func (s structPLS) save(props *[]Property, prefix string, opts saveOpts) error {
197 for name, f := range s.codec.fields {
198 name = prefix + name
199 v := s.v.FieldByIndex(f.path)
200 if !v.IsValid() || !v.CanSet() {
201 continue
202 }
203 var opts1 saveOpts
204 opts1.noIndex = opts.noIndex || f.noIndex
205 opts1.multiple = opts.multiple
206 opts1.omitEmpty = f.omitEmpty // don't propagate
207 // For slice fields that aren't []byte, save each element.
208 if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 {
209 opts1.multiple = true
210 for j := 0; j < v.Len(); j++ {
211 if err := saveStructProperty(props, name, opts1, v.Index(j)); err != nil {
212 return err
213 }
214 }
215 continue
216 }
217 // Otherwise, save the field itself.
218 if err := saveStructProperty(props, name, opts1, v); err != nil {
219 return err
220 }
221 }
222 return nil
223}
224
225func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.EntityProto, error) {
226 e := &pb.EntityProto{
227 Key: keyToProto(defaultAppID, key),
228 }
229 if key.parent == nil {
230 e.EntityGroup = &pb.Path{}
231 } else {
232 e.EntityGroup = keyToProto(defaultAppID, key.root()).Path
233 }
234 prevMultiple := make(map[string]bool)
235
236 for _, p := range props {
237 if pm, ok := prevMultiple[p.Name]; ok {
238 if !pm || !p.Multiple {
239 return nil, fmt.Errorf("datastore: multiple Properties with Name %q, but Multiple is false", p.Name)
240 }
241 } else {
242 prevMultiple[p.Name] = p.Multiple
243 }
244
245 x := &pb.Property{
246 Name: proto.String(p.Name),
247 Value: new(pb.PropertyValue),
248 Multiple: proto.Bool(p.Multiple),
249 }
250 switch v := p.Value.(type) {
251 case int64:
252 x.Value.Int64Value = proto.Int64(v)
253 case bool:
254 x.Value.BooleanValue = proto.Bool(v)
255 case string:
256 x.Value.StringValue = proto.String(v)
257 if p.NoIndex {
258 x.Meaning = pb.Property_TEXT.Enum()
259 }
260 case float64:
261 x.Value.DoubleValue = proto.Float64(v)
262 case *Key:
263 if v != nil {
264 x.Value.Referencevalue = keyToReferenceValue(defaultAppID, v)
265 }
266 case time.Time:
267 if v.Before(minTime) || v.After(maxTime) {
268 return nil, fmt.Errorf("datastore: time value out of range")
269 }
270 x.Value.Int64Value = proto.Int64(toUnixMicro(v))
271 x.Meaning = pb.Property_GD_WHEN.Enum()
272 case appengine.BlobKey:
273 x.Value.StringValue = proto.String(string(v))
274 x.Meaning = pb.Property_BLOBKEY.Enum()
275 case appengine.GeoPoint:
276 if !v.Valid() {
277 return nil, fmt.Errorf("datastore: invalid GeoPoint value")
278 }
279 // NOTE: Strangely, latitude maps to X, longitude to Y.
280 x.Value.Pointvalue = &pb.PropertyValue_PointValue{X: &v.Lat, Y: &v.Lng}
281 x.Meaning = pb.Property_GEORSS_POINT.Enum()
282 case []byte:
283 x.Value.StringValue = proto.String(string(v))
284 x.Meaning = pb.Property_BLOB.Enum()
285 if !p.NoIndex {
286 return nil, fmt.Errorf("datastore: cannot index a []byte valued Property with Name %q", p.Name)
287 }
288 case ByteString:
289 x.Value.StringValue = proto.String(string(v))
290 x.Meaning = pb.Property_BYTESTRING.Enum()
291 default:
292 if p.Value != nil {
293 return nil, fmt.Errorf("datastore: invalid Value type for a Property with Name %q", p.Name)
294 }
295 }
296
297 if p.NoIndex {
298 e.RawProperty = append(e.RawProperty, x)
299 } else {
300 e.Property = append(e.Property, x)
301 if len(e.Property) > maxIndexedProperties {
302 return nil, errors.New("datastore: too many indexed properties")
303 }
304 }
305 }
306 return e, nil
307}
308
309// isEmptyValue is taken from the encoding/json package in the standard library.
310func isEmptyValue(v reflect.Value) bool {
311 switch v.Kind() {
312 case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
313 // TODO(perfomance): Only reflect.String needed, other property types are not supported (copy/paste from json package)
314 return v.Len() == 0
315 case reflect.Bool:
316 return !v.Bool()
317 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
318 return v.Int() == 0
319 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
320 // TODO(perfomance): Uint* are unsupported property types - should be removed (copy/paste from json package)
321 return v.Uint() == 0
322 case reflect.Float32, reflect.Float64:
323 return v.Float() == 0
324 case reflect.Interface, reflect.Ptr:
325 return v.IsNil()
326 case reflect.Struct:
327 switch x := v.Interface().(type) {
328 case time.Time:
329 return x.IsZero()
330 }
331 }
332 return false
333}
diff --git a/vendor/google.golang.org/appengine/datastore/transaction.go b/vendor/google.golang.org/appengine/datastore/transaction.go
new file mode 100644
index 0000000..2ae8428
--- /dev/null
+++ b/vendor/google.golang.org/appengine/datastore/transaction.go
@@ -0,0 +1,96 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package datastore
6
7import (
8 "errors"
9
10 "golang.org/x/net/context"
11
12 "google.golang.org/appengine/internal"
13 pb "google.golang.org/appengine/internal/datastore"
14)
15
16func init() {
17 internal.RegisterTransactionSetter(func(x *pb.Query, t *pb.Transaction) {
18 x.Transaction = t
19 })
20 internal.RegisterTransactionSetter(func(x *pb.GetRequest, t *pb.Transaction) {
21 x.Transaction = t
22 })
23 internal.RegisterTransactionSetter(func(x *pb.PutRequest, t *pb.Transaction) {
24 x.Transaction = t
25 })
26 internal.RegisterTransactionSetter(func(x *pb.DeleteRequest, t *pb.Transaction) {
27 x.Transaction = t
28 })
29}
30
31// ErrConcurrentTransaction is returned when a transaction is rolled back due
32// to a conflict with a concurrent transaction.
33var ErrConcurrentTransaction = errors.New("datastore: concurrent transaction")
34
35// RunInTransaction runs f in a transaction. It calls f with a transaction
36// context tc that f should use for all App Engine operations.
37//
38// If f returns nil, RunInTransaction attempts to commit the transaction,
39// returning nil if it succeeds. If the commit fails due to a conflicting
40// transaction, RunInTransaction retries f, each time with a new transaction
41// context. It gives up and returns ErrConcurrentTransaction after three
42// failed attempts. The number of attempts can be configured by specifying
43// TransactionOptions.Attempts.
44//
45// If f returns non-nil, then any datastore changes will not be applied and
46// RunInTransaction returns that same error. The function f is not retried.
47//
48// Note that when f returns, the transaction is not yet committed. Calling code
49// must be careful not to assume that any of f's changes have been committed
50// until RunInTransaction returns nil.
51//
52// Since f may be called multiple times, f should usually be idempotent.
53// datastore.Get is not idempotent when unmarshaling slice fields.
54//
55// Nested transactions are not supported; c may not be a transaction context.
56func RunInTransaction(c context.Context, f func(tc context.Context) error, opts *TransactionOptions) error {
57 xg := false
58 if opts != nil {
59 xg = opts.XG
60 }
61 readOnly := false
62 if opts != nil {
63 readOnly = opts.ReadOnly
64 }
65 attempts := 3
66 if opts != nil && opts.Attempts > 0 {
67 attempts = opts.Attempts
68 }
69 var t *pb.Transaction
70 var err error
71 for i := 0; i < attempts; i++ {
72 if t, err = internal.RunTransactionOnce(c, f, xg, readOnly, t); err != internal.ErrConcurrentTransaction {
73 return err
74 }
75 }
76 return ErrConcurrentTransaction
77}
78
79// TransactionOptions are the options for running a transaction.
80type TransactionOptions struct {
81 // XG is whether the transaction can cross multiple entity groups. In
82 // comparison, a single group transaction is one where all datastore keys
83 // used have the same root key. Note that cross group transactions do not
84 // have the same behavior as single group transactions. In particular, it
85 // is much more likely to see partially applied transactions in different
86 // entity groups, in global queries.
87 // It is valid to set XG to true even if the transaction is within a
88 // single entity group.
89 XG bool
90 // Attempts controls the number of retries to perform when commits fail
91 // due to a conflicting transaction. If omitted, it defaults to 3.
92 Attempts int
93 // ReadOnly controls whether the transaction is a read only transaction.
94 // Read only transactions are potentially more efficient.
95 ReadOnly bool
96}
diff --git a/vendor/google.golang.org/appengine/errors.go b/vendor/google.golang.org/appengine/errors.go
new file mode 100644
index 0000000..16d0772
--- /dev/null
+++ b/vendor/google.golang.org/appengine/errors.go
@@ -0,0 +1,46 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// This file provides error functions for common API failure modes.
6
7package appengine
8
9import (
10 "fmt"
11
12 "google.golang.org/appengine/internal"
13)
14
15// IsOverQuota reports whether err represents an API call failure
16// due to insufficient available quota.
17func IsOverQuota(err error) bool {
18 callErr, ok := err.(*internal.CallError)
19 return ok && callErr.Code == 4
20}
21
22// MultiError is returned by batch operations when there are errors with
23// particular elements. Errors will be in a one-to-one correspondence with
24// the input elements; successful elements will have a nil entry.
25type MultiError []error
26
27func (m MultiError) Error() string {
28 s, n := "", 0
29 for _, e := range m {
30 if e != nil {
31 if n == 0 {
32 s = e.Error()
33 }
34 n++
35 }
36 }
37 switch n {
38 case 0:
39 return "(0 errors)"
40 case 1:
41 return s
42 case 2:
43 return s + " (and 1 other error)"
44 }
45 return fmt.Sprintf("%s (and %d other errors)", s, n-1)
46}
diff --git a/vendor/google.golang.org/appengine/go.mod b/vendor/google.golang.org/appengine/go.mod
new file mode 100644
index 0000000..f449359
--- /dev/null
+++ b/vendor/google.golang.org/appengine/go.mod
@@ -0,0 +1,7 @@
1module google.golang.org/appengine
2
3require (
4 github.com/golang/protobuf v1.2.0
5 golang.org/x/net v0.0.0-20180724234803-3673e40ba225
6 golang.org/x/text v0.3.0
7)
diff --git a/vendor/google.golang.org/appengine/go.sum b/vendor/google.golang.org/appengine/go.sum
new file mode 100644
index 0000000..1a221c0
--- /dev/null
+++ b/vendor/google.golang.org/appengine/go.sum
@@ -0,0 +1,6 @@
1github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
2github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
3golang.org/x/net v0.0.0-20180724234803-3673e40ba225 h1:kNX+jCowfMYzvlSvJu5pQWEmyWFrBXJ3PBy10xKMXK8=
4golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
5golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
6golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
diff --git a/vendor/google.golang.org/appengine/identity.go b/vendor/google.golang.org/appengine/identity.go
new file mode 100644
index 0000000..b8dcf8f
--- /dev/null
+++ b/vendor/google.golang.org/appengine/identity.go
@@ -0,0 +1,142 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package appengine
6
7import (
8 "time"
9
10 "golang.org/x/net/context"
11
12 "google.golang.org/appengine/internal"
13 pb "google.golang.org/appengine/internal/app_identity"
14 modpb "google.golang.org/appengine/internal/modules"
15)
16
17// AppID returns the application ID for the current application.
18// The string will be a plain application ID (e.g. "appid"), with a
19// domain prefix for custom domain deployments (e.g. "example.com:appid").
20func AppID(c context.Context) string { return internal.AppID(c) }
21
22// DefaultVersionHostname returns the standard hostname of the default version
23// of the current application (e.g. "my-app.appspot.com"). This is suitable for
24// use in constructing URLs.
25func DefaultVersionHostname(c context.Context) string {
26 return internal.DefaultVersionHostname(c)
27}
28
29// ModuleName returns the module name of the current instance.
30func ModuleName(c context.Context) string {
31 return internal.ModuleName(c)
32}
33
34// ModuleHostname returns a hostname of a module instance.
35// If module is the empty string, it refers to the module of the current instance.
36// If version is empty, it refers to the version of the current instance if valid,
37// or the default version of the module of the current instance.
38// If instance is empty, ModuleHostname returns the load-balancing hostname.
39func ModuleHostname(c context.Context, module, version, instance string) (string, error) {
40 req := &modpb.GetHostnameRequest{}
41 if module != "" {
42 req.Module = &module
43 }
44 if version != "" {
45 req.Version = &version
46 }
47 if instance != "" {
48 req.Instance = &instance
49 }
50 res := &modpb.GetHostnameResponse{}
51 if err := internal.Call(c, "modules", "GetHostname", req, res); err != nil {
52 return "", err
53 }
54 return *res.Hostname, nil
55}
56
57// VersionID returns the version ID for the current application.
58// It will be of the form "X.Y", where X is specified in app.yaml,
59// and Y is a number generated when each version of the app is uploaded.
60// It does not include a module name.
61func VersionID(c context.Context) string { return internal.VersionID(c) }
62
63// InstanceID returns a mostly-unique identifier for this instance.
64func InstanceID() string { return internal.InstanceID() }
65
66// Datacenter returns an identifier for the datacenter that the instance is running in.
67func Datacenter(c context.Context) string { return internal.Datacenter(c) }
68
69// ServerSoftware returns the App Engine release version.
70// In production, it looks like "Google App Engine/X.Y.Z".
71// In the development appserver, it looks like "Development/X.Y".
72func ServerSoftware() string { return internal.ServerSoftware() }
73
74// RequestID returns a string that uniquely identifies the request.
75func RequestID(c context.Context) string { return internal.RequestID(c) }
76
77// AccessToken generates an OAuth2 access token for the specified scopes on
78// behalf of service account of this application. This token will expire after
79// the returned time.
80func AccessToken(c context.Context, scopes ...string) (token string, expiry time.Time, err error) {
81 req := &pb.GetAccessTokenRequest{Scope: scopes}
82 res := &pb.GetAccessTokenResponse{}
83
84 err = internal.Call(c, "app_identity_service", "GetAccessToken", req, res)
85 if err != nil {
86 return "", time.Time{}, err
87 }
88 return res.GetAccessToken(), time.Unix(res.GetExpirationTime(), 0), nil
89}
90
91// Certificate represents a public certificate for the app.
92type Certificate struct {
93 KeyName string
94 Data []byte // PEM-encoded X.509 certificate
95}
96
97// PublicCertificates retrieves the public certificates for the app.
98// They can be used to verify a signature returned by SignBytes.
99func PublicCertificates(c context.Context) ([]Certificate, error) {
100 req := &pb.GetPublicCertificateForAppRequest{}
101 res := &pb.GetPublicCertificateForAppResponse{}
102 if err := internal.Call(c, "app_identity_service", "GetPublicCertificatesForApp", req, res); err != nil {
103 return nil, err
104 }
105 var cs []Certificate
106 for _, pc := range res.PublicCertificateList {
107 cs = append(cs, Certificate{
108 KeyName: pc.GetKeyName(),
109 Data: []byte(pc.GetX509CertificatePem()),
110 })
111 }
112 return cs, nil
113}
114
115// ServiceAccount returns a string representing the service account name, in
116// the form of an email address (typically app_id@appspot.gserviceaccount.com).
117func ServiceAccount(c context.Context) (string, error) {
118 req := &pb.GetServiceAccountNameRequest{}
119 res := &pb.GetServiceAccountNameResponse{}
120
121 err := internal.Call(c, "app_identity_service", "GetServiceAccountName", req, res)
122 if err != nil {
123 return "", err
124 }
125 return res.GetServiceAccountName(), err
126}
127
128// SignBytes signs bytes using a private key unique to your application.
129func SignBytes(c context.Context, bytes []byte) (keyName string, signature []byte, err error) {
130 req := &pb.SignForAppRequest{BytesToSign: bytes}
131 res := &pb.SignForAppResponse{}
132
133 if err := internal.Call(c, "app_identity_service", "SignForApp", req, res); err != nil {
134 return "", nil, err
135 }
136 return res.GetKeyName(), res.GetSignatureBytes(), nil
137}
138
139func init() {
140 internal.RegisterErrorCodeMap("app_identity_service", pb.AppIdentityServiceError_ErrorCode_name)
141 internal.RegisterErrorCodeMap("modules", modpb.ModulesServiceError_ErrorCode_name)
142}
diff --git a/vendor/google.golang.org/appengine/internal/api.go b/vendor/google.golang.org/appengine/internal/api.go
new file mode 100644
index 0000000..bbc1cb9
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/api.go
@@ -0,0 +1,671 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build !appengine
6
7package internal
8
9import (
10 "bytes"
11 "errors"
12 "fmt"
13 "io/ioutil"
14 "log"
15 "net"
16 "net/http"
17 "net/url"
18 "os"
19 "runtime"
20 "strconv"
21 "strings"
22 "sync"
23 "sync/atomic"
24 "time"
25
26 "github.com/golang/protobuf/proto"
27 netcontext "golang.org/x/net/context"
28
29 basepb "google.golang.org/appengine/internal/base"
30 logpb "google.golang.org/appengine/internal/log"
31 remotepb "google.golang.org/appengine/internal/remote_api"
32)
33
34const (
35 apiPath = "/rpc_http"
36 defaultTicketSuffix = "/default.20150612t184001.0"
37)
38
39var (
40 // Incoming headers.
41 ticketHeader = http.CanonicalHeaderKey("X-AppEngine-API-Ticket")
42 dapperHeader = http.CanonicalHeaderKey("X-Google-DapperTraceInfo")
43 traceHeader = http.CanonicalHeaderKey("X-Cloud-Trace-Context")
44 curNamespaceHeader = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace")
45 userIPHeader = http.CanonicalHeaderKey("X-AppEngine-User-IP")
46 remoteAddrHeader = http.CanonicalHeaderKey("X-AppEngine-Remote-Addr")
47
48 // Outgoing headers.
49 apiEndpointHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Endpoint")
50 apiEndpointHeaderValue = []string{"app-engine-apis"}
51 apiMethodHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Method")
52 apiMethodHeaderValue = []string{"/VMRemoteAPI.CallRemoteAPI"}
53 apiDeadlineHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Deadline")
54 apiContentType = http.CanonicalHeaderKey("Content-Type")
55 apiContentTypeValue = []string{"application/octet-stream"}
56 logFlushHeader = http.CanonicalHeaderKey("X-AppEngine-Log-Flush-Count")
57
58 apiHTTPClient = &http.Client{
59 Transport: &http.Transport{
60 Proxy: http.ProxyFromEnvironment,
61 Dial: limitDial,
62 },
63 }
64
65 defaultTicketOnce sync.Once
66 defaultTicket string
67 backgroundContextOnce sync.Once
68 backgroundContext netcontext.Context
69)
70
71func apiURL() *url.URL {
72 host, port := "appengine.googleapis.internal", "10001"
73 if h := os.Getenv("API_HOST"); h != "" {
74 host = h
75 }
76 if p := os.Getenv("API_PORT"); p != "" {
77 port = p
78 }
79 return &url.URL{
80 Scheme: "http",
81 Host: host + ":" + port,
82 Path: apiPath,
83 }
84}
85
86func handleHTTP(w http.ResponseWriter, r *http.Request) {
87 c := &context{
88 req: r,
89 outHeader: w.Header(),
90 apiURL: apiURL(),
91 }
92 r = r.WithContext(withContext(r.Context(), c))
93 c.req = r
94
95 stopFlushing := make(chan int)
96
97 // Patch up RemoteAddr so it looks reasonable.
98 if addr := r.Header.Get(userIPHeader); addr != "" {
99 r.RemoteAddr = addr
100 } else if addr = r.Header.Get(remoteAddrHeader); addr != "" {
101 r.RemoteAddr = addr
102 } else {
103 // Should not normally reach here, but pick a sensible default anyway.
104 r.RemoteAddr = "127.0.0.1"
105 }
106 // The address in the headers will most likely be of these forms:
107 // 123.123.123.123
108 // 2001:db8::1
109 // net/http.Request.RemoteAddr is specified to be in "IP:port" form.
110 if _, _, err := net.SplitHostPort(r.RemoteAddr); err != nil {
111 // Assume the remote address is only a host; add a default port.
112 r.RemoteAddr = net.JoinHostPort(r.RemoteAddr, "80")
113 }
114
115 // Start goroutine responsible for flushing app logs.
116 // This is done after adding c to ctx.m (and stopped before removing it)
117 // because flushing logs requires making an API call.
118 go c.logFlusher(stopFlushing)
119
120 executeRequestSafely(c, r)
121 c.outHeader = nil // make sure header changes aren't respected any more
122
123 stopFlushing <- 1 // any logging beyond this point will be dropped
124
125 // Flush any pending logs asynchronously.
126 c.pendingLogs.Lock()
127 flushes := c.pendingLogs.flushes
128 if len(c.pendingLogs.lines) > 0 {
129 flushes++
130 }
131 c.pendingLogs.Unlock()
132 flushed := make(chan struct{})
133 go func() {
134 defer close(flushed)
135 // Force a log flush, because with very short requests we
136 // may not ever flush logs.
137 c.flushLog(true)
138 }()
139 w.Header().Set(logFlushHeader, strconv.Itoa(flushes))
140
141 // Avoid nil Write call if c.Write is never called.
142 if c.outCode != 0 {
143 w.WriteHeader(c.outCode)
144 }
145 if c.outBody != nil {
146 w.Write(c.outBody)
147 }
148 // Wait for the last flush to complete before returning,
149 // otherwise the security ticket will not be valid.
150 <-flushed
151}
152
153func executeRequestSafely(c *context, r *http.Request) {
154 defer func() {
155 if x := recover(); x != nil {
156 logf(c, 4, "%s", renderPanic(x)) // 4 == critical
157 c.outCode = 500
158 }
159 }()
160
161 http.DefaultServeMux.ServeHTTP(c, r)
162}
163
164func renderPanic(x interface{}) string {
165 buf := make([]byte, 16<<10) // 16 KB should be plenty
166 buf = buf[:runtime.Stack(buf, false)]
167
168 // Remove the first few stack frames:
169 // this func
170 // the recover closure in the caller
171 // That will root the stack trace at the site of the panic.
172 const (
173 skipStart = "internal.renderPanic"
174 skipFrames = 2
175 )
176 start := bytes.Index(buf, []byte(skipStart))
177 p := start
178 for i := 0; i < skipFrames*2 && p+1 < len(buf); i++ {
179 p = bytes.IndexByte(buf[p+1:], '\n') + p + 1
180 if p < 0 {
181 break
182 }
183 }
184 if p >= 0 {
185 // buf[start:p+1] is the block to remove.
186 // Copy buf[p+1:] over buf[start:] and shrink buf.
187 copy(buf[start:], buf[p+1:])
188 buf = buf[:len(buf)-(p+1-start)]
189 }
190
191 // Add panic heading.
192 head := fmt.Sprintf("panic: %v\n\n", x)
193 if len(head) > len(buf) {
194 // Extremely unlikely to happen.
195 return head
196 }
197 copy(buf[len(head):], buf)
198 copy(buf, head)
199
200 return string(buf)
201}
202
203// context represents the context of an in-flight HTTP request.
204// It implements the appengine.Context and http.ResponseWriter interfaces.
205type context struct {
206 req *http.Request
207
208 outCode int
209 outHeader http.Header
210 outBody []byte
211
212 pendingLogs struct {
213 sync.Mutex
214 lines []*logpb.UserAppLogLine
215 flushes int
216 }
217
218 apiURL *url.URL
219}
220
221var contextKey = "holds a *context"
222
223// jointContext joins two contexts in a superficial way.
224// It takes values and timeouts from a base context, and only values from another context.
225type jointContext struct {
226 base netcontext.Context
227 valuesOnly netcontext.Context
228}
229
230func (c jointContext) Deadline() (time.Time, bool) {
231 return c.base.Deadline()
232}
233
234func (c jointContext) Done() <-chan struct{} {
235 return c.base.Done()
236}
237
238func (c jointContext) Err() error {
239 return c.base.Err()
240}
241
242func (c jointContext) Value(key interface{}) interface{} {
243 if val := c.base.Value(key); val != nil {
244 return val
245 }
246 return c.valuesOnly.Value(key)
247}
248
249// fromContext returns the App Engine context or nil if ctx is not
250// derived from an App Engine context.
251func fromContext(ctx netcontext.Context) *context {
252 c, _ := ctx.Value(&contextKey).(*context)
253 return c
254}
255
256func withContext(parent netcontext.Context, c *context) netcontext.Context {
257 ctx := netcontext.WithValue(parent, &contextKey, c)
258 if ns := c.req.Header.Get(curNamespaceHeader); ns != "" {
259 ctx = withNamespace(ctx, ns)
260 }
261 return ctx
262}
263
264func toContext(c *context) netcontext.Context {
265 return withContext(netcontext.Background(), c)
266}
267
268func IncomingHeaders(ctx netcontext.Context) http.Header {
269 if c := fromContext(ctx); c != nil {
270 return c.req.Header
271 }
272 return nil
273}
274
275func ReqContext(req *http.Request) netcontext.Context {
276 return req.Context()
277}
278
279func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context {
280 return jointContext{
281 base: parent,
282 valuesOnly: req.Context(),
283 }
284}
285
286// DefaultTicket returns a ticket used for background context or dev_appserver.
287func DefaultTicket() string {
288 defaultTicketOnce.Do(func() {
289 if IsDevAppServer() {
290 defaultTicket = "testapp" + defaultTicketSuffix
291 return
292 }
293 appID := partitionlessAppID()
294 escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1)
295 majVersion := VersionID(nil)
296 if i := strings.Index(majVersion, "."); i > 0 {
297 majVersion = majVersion[:i]
298 }
299 defaultTicket = fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(nil), majVersion, InstanceID())
300 })
301 return defaultTicket
302}
303
304func BackgroundContext() netcontext.Context {
305 backgroundContextOnce.Do(func() {
306 // Compute background security ticket.
307 ticket := DefaultTicket()
308
309 c := &context{
310 req: &http.Request{
311 Header: http.Header{
312 ticketHeader: []string{ticket},
313 },
314 },
315 apiURL: apiURL(),
316 }
317 backgroundContext = toContext(c)
318
319 // TODO(dsymonds): Wire up the shutdown handler to do a final flush.
320 go c.logFlusher(make(chan int))
321 })
322
323 return backgroundContext
324}
325
326// RegisterTestRequest registers the HTTP request req for testing, such that
327// any API calls are sent to the provided URL. It returns a closure to delete
328// the registration.
329// It should only be used by aetest package.
330func RegisterTestRequest(req *http.Request, apiURL *url.URL, decorate func(netcontext.Context) netcontext.Context) (*http.Request, func()) {
331 c := &context{
332 req: req,
333 apiURL: apiURL,
334 }
335 ctx := withContext(decorate(req.Context()), c)
336 req = req.WithContext(ctx)
337 c.req = req
338 return req, func() {}
339}
340
341var errTimeout = &CallError{
342 Detail: "Deadline exceeded",
343 Code: int32(remotepb.RpcError_CANCELLED),
344 Timeout: true,
345}
346
347func (c *context) Header() http.Header { return c.outHeader }
348
349// Copied from $GOROOT/src/pkg/net/http/transfer.go. Some response status
350// codes do not permit a response body (nor response entity headers such as
351// Content-Length, Content-Type, etc).
352func bodyAllowedForStatus(status int) bool {
353 switch {
354 case status >= 100 && status <= 199:
355 return false
356 case status == 204:
357 return false
358 case status == 304:
359 return false
360 }
361 return true
362}
363
364func (c *context) Write(b []byte) (int, error) {
365 if c.outCode == 0 {
366 c.WriteHeader(http.StatusOK)
367 }
368 if len(b) > 0 && !bodyAllowedForStatus(c.outCode) {
369 return 0, http.ErrBodyNotAllowed
370 }
371 c.outBody = append(c.outBody, b...)
372 return len(b), nil
373}
374
375func (c *context) WriteHeader(code int) {
376 if c.outCode != 0 {
377 logf(c, 3, "WriteHeader called multiple times on request.") // error level
378 return
379 }
380 c.outCode = code
381}
382
383func (c *context) post(body []byte, timeout time.Duration) (b []byte, err error) {
384 hreq := &http.Request{
385 Method: "POST",
386 URL: c.apiURL,
387 Header: http.Header{
388 apiEndpointHeader: apiEndpointHeaderValue,
389 apiMethodHeader: apiMethodHeaderValue,
390 apiContentType: apiContentTypeValue,
391 apiDeadlineHeader: []string{strconv.FormatFloat(timeout.Seconds(), 'f', -1, 64)},
392 },
393 Body: ioutil.NopCloser(bytes.NewReader(body)),
394 ContentLength: int64(len(body)),
395 Host: c.apiURL.Host,
396 }
397 if info := c.req.Header.Get(dapperHeader); info != "" {
398 hreq.Header.Set(dapperHeader, info)
399 }
400 if info := c.req.Header.Get(traceHeader); info != "" {
401 hreq.Header.Set(traceHeader, info)
402 }
403
404 tr := apiHTTPClient.Transport.(*http.Transport)
405
406 var timedOut int32 // atomic; set to 1 if timed out
407 t := time.AfterFunc(timeout, func() {
408 atomic.StoreInt32(&timedOut, 1)
409 tr.CancelRequest(hreq)
410 })
411 defer t.Stop()
412 defer func() {
413 // Check if timeout was exceeded.
414 if atomic.LoadInt32(&timedOut) != 0 {
415 err = errTimeout
416 }
417 }()
418
419 hresp, err := apiHTTPClient.Do(hreq)
420 if err != nil {
421 return nil, &CallError{
422 Detail: fmt.Sprintf("service bridge HTTP failed: %v", err),
423 Code: int32(remotepb.RpcError_UNKNOWN),
424 }
425 }
426 defer hresp.Body.Close()
427 hrespBody, err := ioutil.ReadAll(hresp.Body)
428 if hresp.StatusCode != 200 {
429 return nil, &CallError{
430 Detail: fmt.Sprintf("service bridge returned HTTP %d (%q)", hresp.StatusCode, hrespBody),
431 Code: int32(remotepb.RpcError_UNKNOWN),
432 }
433 }
434 if err != nil {
435 return nil, &CallError{
436 Detail: fmt.Sprintf("service bridge response bad: %v", err),
437 Code: int32(remotepb.RpcError_UNKNOWN),
438 }
439 }
440 return hrespBody, nil
441}
442
443func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error {
444 if ns := NamespaceFromContext(ctx); ns != "" {
445 if fn, ok := NamespaceMods[service]; ok {
446 fn(in, ns)
447 }
448 }
449
450 if f, ctx, ok := callOverrideFromContext(ctx); ok {
451 return f(ctx, service, method, in, out)
452 }
453
454 // Handle already-done contexts quickly.
455 select {
456 case <-ctx.Done():
457 return ctx.Err()
458 default:
459 }
460
461 c := fromContext(ctx)
462 if c == nil {
463 // Give a good error message rather than a panic lower down.
464 return errNotAppEngineContext
465 }
466
467 // Apply transaction modifications if we're in a transaction.
468 if t := transactionFromContext(ctx); t != nil {
469 if t.finished {
470 return errors.New("transaction context has expired")
471 }
472 applyTransaction(in, &t.transaction)
473 }
474
475 // Default RPC timeout is 60s.
476 timeout := 60 * time.Second
477 if deadline, ok := ctx.Deadline(); ok {
478 timeout = deadline.Sub(time.Now())
479 }
480
481 data, err := proto.Marshal(in)
482 if err != nil {
483 return err
484 }
485
486 ticket := c.req.Header.Get(ticketHeader)
487 // Use a test ticket under test environment.
488 if ticket == "" {
489 if appid := ctx.Value(&appIDOverrideKey); appid != nil {
490 ticket = appid.(string) + defaultTicketSuffix
491 }
492 }
493 // Fall back to use background ticket when the request ticket is not available in Flex or dev_appserver.
494 if ticket == "" {
495 ticket = DefaultTicket()
496 }
497 req := &remotepb.Request{
498 ServiceName: &service,
499 Method: &method,
500 Request: data,
501 RequestId: &ticket,
502 }
503 hreqBody, err := proto.Marshal(req)
504 if err != nil {
505 return err
506 }
507
508 hrespBody, err := c.post(hreqBody, timeout)
509 if err != nil {
510 return err
511 }
512
513 res := &remotepb.Response{}
514 if err := proto.Unmarshal(hrespBody, res); err != nil {
515 return err
516 }
517 if res.RpcError != nil {
518 ce := &CallError{
519 Detail: res.RpcError.GetDetail(),
520 Code: *res.RpcError.Code,
521 }
522 switch remotepb.RpcError_ErrorCode(ce.Code) {
523 case remotepb.RpcError_CANCELLED, remotepb.RpcError_DEADLINE_EXCEEDED:
524 ce.Timeout = true
525 }
526 return ce
527 }
528 if res.ApplicationError != nil {
529 return &APIError{
530 Service: *req.ServiceName,
531 Detail: res.ApplicationError.GetDetail(),
532 Code: *res.ApplicationError.Code,
533 }
534 }
535 if res.Exception != nil || res.JavaException != nil {
536 // This shouldn't happen, but let's be defensive.
537 return &CallError{
538 Detail: "service bridge returned exception",
539 Code: int32(remotepb.RpcError_UNKNOWN),
540 }
541 }
542 return proto.Unmarshal(res.Response, out)
543}
544
545func (c *context) Request() *http.Request {
546 return c.req
547}
548
549func (c *context) addLogLine(ll *logpb.UserAppLogLine) {
550 // Truncate long log lines.
551 // TODO(dsymonds): Check if this is still necessary.
552 const lim = 8 << 10
553 if len(*ll.Message) > lim {
554 suffix := fmt.Sprintf("...(length %d)", len(*ll.Message))
555 ll.Message = proto.String((*ll.Message)[:lim-len(suffix)] + suffix)
556 }
557
558 c.pendingLogs.Lock()
559 c.pendingLogs.lines = append(c.pendingLogs.lines, ll)
560 c.pendingLogs.Unlock()
561}
562
563var logLevelName = map[int64]string{
564 0: "DEBUG",
565 1: "INFO",
566 2: "WARNING",
567 3: "ERROR",
568 4: "CRITICAL",
569}
570
571func logf(c *context, level int64, format string, args ...interface{}) {
572 if c == nil {
573 panic("not an App Engine context")
574 }
575 s := fmt.Sprintf(format, args...)
576 s = strings.TrimRight(s, "\n") // Remove any trailing newline characters.
577 c.addLogLine(&logpb.UserAppLogLine{
578 TimestampUsec: proto.Int64(time.Now().UnixNano() / 1e3),
579 Level: &level,
580 Message: &s,
581 })
582 // Only duplicate log to stderr if not running on App Engine second generation
583 if !IsSecondGen() {
584 log.Print(logLevelName[level] + ": " + s)
585 }
586}
587
588// flushLog attempts to flush any pending logs to the appserver.
589// It should not be called concurrently.
590func (c *context) flushLog(force bool) (flushed bool) {
591 c.pendingLogs.Lock()
592 // Grab up to 30 MB. We can get away with up to 32 MB, but let's be cautious.
593 n, rem := 0, 30<<20
594 for ; n < len(c.pendingLogs.lines); n++ {
595 ll := c.pendingLogs.lines[n]
596 // Each log line will require about 3 bytes of overhead.
597 nb := proto.Size(ll) + 3
598 if nb > rem {
599 break
600 }
601 rem -= nb
602 }
603 lines := c.pendingLogs.lines[:n]
604 c.pendingLogs.lines = c.pendingLogs.lines[n:]
605 c.pendingLogs.Unlock()
606
607 if len(lines) == 0 && !force {
608 // Nothing to flush.
609 return false
610 }
611
612 rescueLogs := false
613 defer func() {
614 if rescueLogs {
615 c.pendingLogs.Lock()
616 c.pendingLogs.lines = append(lines, c.pendingLogs.lines...)
617 c.pendingLogs.Unlock()
618 }
619 }()
620
621 buf, err := proto.Marshal(&logpb.UserAppLogGroup{
622 LogLine: lines,
623 })
624 if err != nil {
625 log.Printf("internal.flushLog: marshaling UserAppLogGroup: %v", err)
626 rescueLogs = true
627 return false
628 }
629
630 req := &logpb.FlushRequest{
631 Logs: buf,
632 }
633 res := &basepb.VoidProto{}
634 c.pendingLogs.Lock()
635 c.pendingLogs.flushes++
636 c.pendingLogs.Unlock()
637 if err := Call(toContext(c), "logservice", "Flush", req, res); err != nil {
638 log.Printf("internal.flushLog: Flush RPC: %v", err)
639 rescueLogs = true
640 return false
641 }
642 return true
643}
644
645const (
646 // Log flushing parameters.
647 flushInterval = 1 * time.Second
648 forceFlushInterval = 60 * time.Second
649)
650
651func (c *context) logFlusher(stop <-chan int) {
652 lastFlush := time.Now()
653 tick := time.NewTicker(flushInterval)
654 for {
655 select {
656 case <-stop:
657 // Request finished.
658 tick.Stop()
659 return
660 case <-tick.C:
661 force := time.Now().Sub(lastFlush) > forceFlushInterval
662 if c.flushLog(force) {
663 lastFlush = time.Now()
664 }
665 }
666 }
667}
668
669func ContextForTesting(req *http.Request) netcontext.Context {
670 return toContext(&context{req: req})
671}
diff --git a/vendor/google.golang.org/appengine/internal/api_classic.go b/vendor/google.golang.org/appengine/internal/api_classic.go
new file mode 100644
index 0000000..f0f40b2
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/api_classic.go
@@ -0,0 +1,169 @@
1// Copyright 2015 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build appengine
6
7package internal
8
9import (
10 "errors"
11 "fmt"
12 "net/http"
13 "time"
14
15 "appengine"
16 "appengine_internal"
17 basepb "appengine_internal/base"
18
19 "github.com/golang/protobuf/proto"
20 netcontext "golang.org/x/net/context"
21)
22
23var contextKey = "holds an appengine.Context"
24
25// fromContext returns the App Engine context or nil if ctx is not
26// derived from an App Engine context.
27func fromContext(ctx netcontext.Context) appengine.Context {
28 c, _ := ctx.Value(&contextKey).(appengine.Context)
29 return c
30}
31
32// This is only for classic App Engine adapters.
33func ClassicContextFromContext(ctx netcontext.Context) (appengine.Context, error) {
34 c := fromContext(ctx)
35 if c == nil {
36 return nil, errNotAppEngineContext
37 }
38 return c, nil
39}
40
41func withContext(parent netcontext.Context, c appengine.Context) netcontext.Context {
42 ctx := netcontext.WithValue(parent, &contextKey, c)
43
44 s := &basepb.StringProto{}
45 c.Call("__go__", "GetNamespace", &basepb.VoidProto{}, s, nil)
46 if ns := s.GetValue(); ns != "" {
47 ctx = NamespacedContext(ctx, ns)
48 }
49
50 return ctx
51}
52
53func IncomingHeaders(ctx netcontext.Context) http.Header {
54 if c := fromContext(ctx); c != nil {
55 if req, ok := c.Request().(*http.Request); ok {
56 return req.Header
57 }
58 }
59 return nil
60}
61
62func ReqContext(req *http.Request) netcontext.Context {
63 return WithContext(netcontext.Background(), req)
64}
65
66func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context {
67 c := appengine.NewContext(req)
68 return withContext(parent, c)
69}
70
71type testingContext struct {
72 appengine.Context
73
74 req *http.Request
75}
76
77func (t *testingContext) FullyQualifiedAppID() string { return "dev~testcontext" }
78func (t *testingContext) Call(service, method string, _, _ appengine_internal.ProtoMessage, _ *appengine_internal.CallOptions) error {
79 if service == "__go__" && method == "GetNamespace" {
80 return nil
81 }
82 return fmt.Errorf("testingContext: unsupported Call")
83}
84func (t *testingContext) Request() interface{} { return t.req }
85
86func ContextForTesting(req *http.Request) netcontext.Context {
87 return withContext(netcontext.Background(), &testingContext{req: req})
88}
89
90func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error {
91 if ns := NamespaceFromContext(ctx); ns != "" {
92 if fn, ok := NamespaceMods[service]; ok {
93 fn(in, ns)
94 }
95 }
96
97 if f, ctx, ok := callOverrideFromContext(ctx); ok {
98 return f(ctx, service, method, in, out)
99 }
100
101 // Handle already-done contexts quickly.
102 select {
103 case <-ctx.Done():
104 return ctx.Err()
105 default:
106 }
107
108 c := fromContext(ctx)
109 if c == nil {
110 // Give a good error message rather than a panic lower down.
111 return errNotAppEngineContext
112 }
113
114 // Apply transaction modifications if we're in a transaction.
115 if t := transactionFromContext(ctx); t != nil {
116 if t.finished {
117 return errors.New("transaction context has expired")
118 }
119 applyTransaction(in, &t.transaction)
120 }
121
122 var opts *appengine_internal.CallOptions
123 if d, ok := ctx.Deadline(); ok {
124 opts = &appengine_internal.CallOptions{
125 Timeout: d.Sub(time.Now()),
126 }
127 }
128
129 err := c.Call(service, method, in, out, opts)
130 switch v := err.(type) {
131 case *appengine_internal.APIError:
132 return &APIError{
133 Service: v.Service,
134 Detail: v.Detail,
135 Code: v.Code,
136 }
137 case *appengine_internal.CallError:
138 return &CallError{
139 Detail: v.Detail,
140 Code: v.Code,
141 Timeout: v.Timeout,
142 }
143 }
144 return err
145}
146
147func handleHTTP(w http.ResponseWriter, r *http.Request) {
148 panic("handleHTTP called; this should be impossible")
149}
150
151func logf(c appengine.Context, level int64, format string, args ...interface{}) {
152 var fn func(format string, args ...interface{})
153 switch level {
154 case 0:
155 fn = c.Debugf
156 case 1:
157 fn = c.Infof
158 case 2:
159 fn = c.Warningf
160 case 3:
161 fn = c.Errorf
162 case 4:
163 fn = c.Criticalf
164 default:
165 // This shouldn't happen.
166 fn = c.Criticalf
167 }
168 fn(format, args...)
169}
diff --git a/vendor/google.golang.org/appengine/internal/api_common.go b/vendor/google.golang.org/appengine/internal/api_common.go
new file mode 100644
index 0000000..e0c0b21
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/api_common.go
@@ -0,0 +1,123 @@
1// Copyright 2015 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package internal
6
7import (
8 "errors"
9 "os"
10
11 "github.com/golang/protobuf/proto"
12 netcontext "golang.org/x/net/context"
13)
14
15var errNotAppEngineContext = errors.New("not an App Engine context")
16
17type CallOverrideFunc func(ctx netcontext.Context, service, method string, in, out proto.Message) error
18
19var callOverrideKey = "holds []CallOverrideFunc"
20
21func WithCallOverride(ctx netcontext.Context, f CallOverrideFunc) netcontext.Context {
22 // We avoid appending to any existing call override
23 // so we don't risk overwriting a popped stack below.
24 var cofs []CallOverrideFunc
25 if uf, ok := ctx.Value(&callOverrideKey).([]CallOverrideFunc); ok {
26 cofs = append(cofs, uf...)
27 }
28 cofs = append(cofs, f)
29 return netcontext.WithValue(ctx, &callOverrideKey, cofs)
30}
31
32func callOverrideFromContext(ctx netcontext.Context) (CallOverrideFunc, netcontext.Context, bool) {
33 cofs, _ := ctx.Value(&callOverrideKey).([]CallOverrideFunc)
34 if len(cofs) == 0 {
35 return nil, nil, false
36 }
37 // We found a list of overrides; grab the last, and reconstitute a
38 // context that will hide it.
39 f := cofs[len(cofs)-1]
40 ctx = netcontext.WithValue(ctx, &callOverrideKey, cofs[:len(cofs)-1])
41 return f, ctx, true
42}
43
44type logOverrideFunc func(level int64, format string, args ...interface{})
45
46var logOverrideKey = "holds a logOverrideFunc"
47
48func WithLogOverride(ctx netcontext.Context, f logOverrideFunc) netcontext.Context {
49 return netcontext.WithValue(ctx, &logOverrideKey, f)
50}
51
52var appIDOverrideKey = "holds a string, being the full app ID"
53
54func WithAppIDOverride(ctx netcontext.Context, appID string) netcontext.Context {
55 return netcontext.WithValue(ctx, &appIDOverrideKey, appID)
56}
57
58var namespaceKey = "holds the namespace string"
59
60func withNamespace(ctx netcontext.Context, ns string) netcontext.Context {
61 return netcontext.WithValue(ctx, &namespaceKey, ns)
62}
63
64func NamespaceFromContext(ctx netcontext.Context) string {
65 // If there's no namespace, return the empty string.
66 ns, _ := ctx.Value(&namespaceKey).(string)
67 return ns
68}
69
70// FullyQualifiedAppID returns the fully-qualified application ID.
71// This may contain a partition prefix (e.g. "s~" for High Replication apps),
72// or a domain prefix (e.g. "example.com:").
73func FullyQualifiedAppID(ctx netcontext.Context) string {
74 if id, ok := ctx.Value(&appIDOverrideKey).(string); ok {
75 return id
76 }
77 return fullyQualifiedAppID(ctx)
78}
79
80func Logf(ctx netcontext.Context, level int64, format string, args ...interface{}) {
81 if f, ok := ctx.Value(&logOverrideKey).(logOverrideFunc); ok {
82 f(level, format, args...)
83 return
84 }
85 c := fromContext(ctx)
86 if c == nil {
87 panic(errNotAppEngineContext)
88 }
89 logf(c, level, format, args...)
90}
91
92// NamespacedContext wraps a Context to support namespaces.
93func NamespacedContext(ctx netcontext.Context, namespace string) netcontext.Context {
94 return withNamespace(ctx, namespace)
95}
96
97// SetTestEnv sets the env variables for testing background ticket in Flex.
98func SetTestEnv() func() {
99 var environ = []struct {
100 key, value string
101 }{
102 {"GAE_LONG_APP_ID", "my-app-id"},
103 {"GAE_MINOR_VERSION", "067924799508853122"},
104 {"GAE_MODULE_INSTANCE", "0"},
105 {"GAE_MODULE_NAME", "default"},
106 {"GAE_MODULE_VERSION", "20150612t184001"},
107 }
108
109 for _, v := range environ {
110 old := os.Getenv(v.key)
111 os.Setenv(v.key, v.value)
112 v.value = old
113 }
114 return func() { // Restore old environment after the test completes.
115 for _, v := range environ {
116 if v.value == "" {
117 os.Unsetenv(v.key)
118 continue
119 }
120 os.Setenv(v.key, v.value)
121 }
122 }
123}
diff --git a/vendor/google.golang.org/appengine/internal/app_id.go b/vendor/google.golang.org/appengine/internal/app_id.go
new file mode 100644
index 0000000..11df8c0
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/app_id.go
@@ -0,0 +1,28 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package internal
6
7import (
8 "strings"
9)
10
11func parseFullAppID(appid string) (partition, domain, displayID string) {
12 if i := strings.Index(appid, "~"); i != -1 {
13 partition, appid = appid[:i], appid[i+1:]
14 }
15 if i := strings.Index(appid, ":"); i != -1 {
16 domain, appid = appid[:i], appid[i+1:]
17 }
18 return partition, domain, appid
19}
20
21// appID returns "appid" or "domain.com:appid".
22func appID(fullAppID string) string {
23 _, dom, dis := parseFullAppID(fullAppID)
24 if dom != "" {
25 return dom + ":" + dis
26 }
27 return dis
28}
diff --git a/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go b/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go
new file mode 100644
index 0000000..9a2ff77
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go
@@ -0,0 +1,611 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/app_identity/app_identity_service.proto
3
4package app_identity
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type AppIdentityServiceError_ErrorCode int32
22
23const (
24 AppIdentityServiceError_SUCCESS AppIdentityServiceError_ErrorCode = 0
25 AppIdentityServiceError_UNKNOWN_SCOPE AppIdentityServiceError_ErrorCode = 9
26 AppIdentityServiceError_BLOB_TOO_LARGE AppIdentityServiceError_ErrorCode = 1000
27 AppIdentityServiceError_DEADLINE_EXCEEDED AppIdentityServiceError_ErrorCode = 1001
28 AppIdentityServiceError_NOT_A_VALID_APP AppIdentityServiceError_ErrorCode = 1002
29 AppIdentityServiceError_UNKNOWN_ERROR AppIdentityServiceError_ErrorCode = 1003
30 AppIdentityServiceError_NOT_ALLOWED AppIdentityServiceError_ErrorCode = 1005
31 AppIdentityServiceError_NOT_IMPLEMENTED AppIdentityServiceError_ErrorCode = 1006
32)
33
34var AppIdentityServiceError_ErrorCode_name = map[int32]string{
35 0: "SUCCESS",
36 9: "UNKNOWN_SCOPE",
37 1000: "BLOB_TOO_LARGE",
38 1001: "DEADLINE_EXCEEDED",
39 1002: "NOT_A_VALID_APP",
40 1003: "UNKNOWN_ERROR",
41 1005: "NOT_ALLOWED",
42 1006: "NOT_IMPLEMENTED",
43}
44var AppIdentityServiceError_ErrorCode_value = map[string]int32{
45 "SUCCESS": 0,
46 "UNKNOWN_SCOPE": 9,
47 "BLOB_TOO_LARGE": 1000,
48 "DEADLINE_EXCEEDED": 1001,
49 "NOT_A_VALID_APP": 1002,
50 "UNKNOWN_ERROR": 1003,
51 "NOT_ALLOWED": 1005,
52 "NOT_IMPLEMENTED": 1006,
53}
54
55func (x AppIdentityServiceError_ErrorCode) Enum() *AppIdentityServiceError_ErrorCode {
56 p := new(AppIdentityServiceError_ErrorCode)
57 *p = x
58 return p
59}
60func (x AppIdentityServiceError_ErrorCode) String() string {
61 return proto.EnumName(AppIdentityServiceError_ErrorCode_name, int32(x))
62}
63func (x *AppIdentityServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
64 value, err := proto.UnmarshalJSONEnum(AppIdentityServiceError_ErrorCode_value, data, "AppIdentityServiceError_ErrorCode")
65 if err != nil {
66 return err
67 }
68 *x = AppIdentityServiceError_ErrorCode(value)
69 return nil
70}
71func (AppIdentityServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
72 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{0, 0}
73}
74
75type AppIdentityServiceError struct {
76 XXX_NoUnkeyedLiteral struct{} `json:"-"`
77 XXX_unrecognized []byte `json:"-"`
78 XXX_sizecache int32 `json:"-"`
79}
80
81func (m *AppIdentityServiceError) Reset() { *m = AppIdentityServiceError{} }
82func (m *AppIdentityServiceError) String() string { return proto.CompactTextString(m) }
83func (*AppIdentityServiceError) ProtoMessage() {}
84func (*AppIdentityServiceError) Descriptor() ([]byte, []int) {
85 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{0}
86}
87func (m *AppIdentityServiceError) XXX_Unmarshal(b []byte) error {
88 return xxx_messageInfo_AppIdentityServiceError.Unmarshal(m, b)
89}
90func (m *AppIdentityServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
91 return xxx_messageInfo_AppIdentityServiceError.Marshal(b, m, deterministic)
92}
93func (dst *AppIdentityServiceError) XXX_Merge(src proto.Message) {
94 xxx_messageInfo_AppIdentityServiceError.Merge(dst, src)
95}
96func (m *AppIdentityServiceError) XXX_Size() int {
97 return xxx_messageInfo_AppIdentityServiceError.Size(m)
98}
99func (m *AppIdentityServiceError) XXX_DiscardUnknown() {
100 xxx_messageInfo_AppIdentityServiceError.DiscardUnknown(m)
101}
102
103var xxx_messageInfo_AppIdentityServiceError proto.InternalMessageInfo
104
105type SignForAppRequest struct {
106 BytesToSign []byte `protobuf:"bytes,1,opt,name=bytes_to_sign,json=bytesToSign" json:"bytes_to_sign,omitempty"`
107 XXX_NoUnkeyedLiteral struct{} `json:"-"`
108 XXX_unrecognized []byte `json:"-"`
109 XXX_sizecache int32 `json:"-"`
110}
111
112func (m *SignForAppRequest) Reset() { *m = SignForAppRequest{} }
113func (m *SignForAppRequest) String() string { return proto.CompactTextString(m) }
114func (*SignForAppRequest) ProtoMessage() {}
115func (*SignForAppRequest) Descriptor() ([]byte, []int) {
116 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{1}
117}
118func (m *SignForAppRequest) XXX_Unmarshal(b []byte) error {
119 return xxx_messageInfo_SignForAppRequest.Unmarshal(m, b)
120}
121func (m *SignForAppRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
122 return xxx_messageInfo_SignForAppRequest.Marshal(b, m, deterministic)
123}
124func (dst *SignForAppRequest) XXX_Merge(src proto.Message) {
125 xxx_messageInfo_SignForAppRequest.Merge(dst, src)
126}
127func (m *SignForAppRequest) XXX_Size() int {
128 return xxx_messageInfo_SignForAppRequest.Size(m)
129}
130func (m *SignForAppRequest) XXX_DiscardUnknown() {
131 xxx_messageInfo_SignForAppRequest.DiscardUnknown(m)
132}
133
134var xxx_messageInfo_SignForAppRequest proto.InternalMessageInfo
135
136func (m *SignForAppRequest) GetBytesToSign() []byte {
137 if m != nil {
138 return m.BytesToSign
139 }
140 return nil
141}
142
143type SignForAppResponse struct {
144 KeyName *string `protobuf:"bytes,1,opt,name=key_name,json=keyName" json:"key_name,omitempty"`
145 SignatureBytes []byte `protobuf:"bytes,2,opt,name=signature_bytes,json=signatureBytes" json:"signature_bytes,omitempty"`
146 XXX_NoUnkeyedLiteral struct{} `json:"-"`
147 XXX_unrecognized []byte `json:"-"`
148 XXX_sizecache int32 `json:"-"`
149}
150
151func (m *SignForAppResponse) Reset() { *m = SignForAppResponse{} }
152func (m *SignForAppResponse) String() string { return proto.CompactTextString(m) }
153func (*SignForAppResponse) ProtoMessage() {}
154func (*SignForAppResponse) Descriptor() ([]byte, []int) {
155 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{2}
156}
157func (m *SignForAppResponse) XXX_Unmarshal(b []byte) error {
158 return xxx_messageInfo_SignForAppResponse.Unmarshal(m, b)
159}
160func (m *SignForAppResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
161 return xxx_messageInfo_SignForAppResponse.Marshal(b, m, deterministic)
162}
163func (dst *SignForAppResponse) XXX_Merge(src proto.Message) {
164 xxx_messageInfo_SignForAppResponse.Merge(dst, src)
165}
166func (m *SignForAppResponse) XXX_Size() int {
167 return xxx_messageInfo_SignForAppResponse.Size(m)
168}
169func (m *SignForAppResponse) XXX_DiscardUnknown() {
170 xxx_messageInfo_SignForAppResponse.DiscardUnknown(m)
171}
172
173var xxx_messageInfo_SignForAppResponse proto.InternalMessageInfo
174
175func (m *SignForAppResponse) GetKeyName() string {
176 if m != nil && m.KeyName != nil {
177 return *m.KeyName
178 }
179 return ""
180}
181
182func (m *SignForAppResponse) GetSignatureBytes() []byte {
183 if m != nil {
184 return m.SignatureBytes
185 }
186 return nil
187}
188
189type GetPublicCertificateForAppRequest struct {
190 XXX_NoUnkeyedLiteral struct{} `json:"-"`
191 XXX_unrecognized []byte `json:"-"`
192 XXX_sizecache int32 `json:"-"`
193}
194
195func (m *GetPublicCertificateForAppRequest) Reset() { *m = GetPublicCertificateForAppRequest{} }
196func (m *GetPublicCertificateForAppRequest) String() string { return proto.CompactTextString(m) }
197func (*GetPublicCertificateForAppRequest) ProtoMessage() {}
198func (*GetPublicCertificateForAppRequest) Descriptor() ([]byte, []int) {
199 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{3}
200}
201func (m *GetPublicCertificateForAppRequest) XXX_Unmarshal(b []byte) error {
202 return xxx_messageInfo_GetPublicCertificateForAppRequest.Unmarshal(m, b)
203}
204func (m *GetPublicCertificateForAppRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
205 return xxx_messageInfo_GetPublicCertificateForAppRequest.Marshal(b, m, deterministic)
206}
207func (dst *GetPublicCertificateForAppRequest) XXX_Merge(src proto.Message) {
208 xxx_messageInfo_GetPublicCertificateForAppRequest.Merge(dst, src)
209}
210func (m *GetPublicCertificateForAppRequest) XXX_Size() int {
211 return xxx_messageInfo_GetPublicCertificateForAppRequest.Size(m)
212}
213func (m *GetPublicCertificateForAppRequest) XXX_DiscardUnknown() {
214 xxx_messageInfo_GetPublicCertificateForAppRequest.DiscardUnknown(m)
215}
216
217var xxx_messageInfo_GetPublicCertificateForAppRequest proto.InternalMessageInfo
218
219type PublicCertificate struct {
220 KeyName *string `protobuf:"bytes,1,opt,name=key_name,json=keyName" json:"key_name,omitempty"`
221 X509CertificatePem *string `protobuf:"bytes,2,opt,name=x509_certificate_pem,json=x509CertificatePem" json:"x509_certificate_pem,omitempty"`
222 XXX_NoUnkeyedLiteral struct{} `json:"-"`
223 XXX_unrecognized []byte `json:"-"`
224 XXX_sizecache int32 `json:"-"`
225}
226
227func (m *PublicCertificate) Reset() { *m = PublicCertificate{} }
228func (m *PublicCertificate) String() string { return proto.CompactTextString(m) }
229func (*PublicCertificate) ProtoMessage() {}
230func (*PublicCertificate) Descriptor() ([]byte, []int) {
231 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{4}
232}
233func (m *PublicCertificate) XXX_Unmarshal(b []byte) error {
234 return xxx_messageInfo_PublicCertificate.Unmarshal(m, b)
235}
236func (m *PublicCertificate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
237 return xxx_messageInfo_PublicCertificate.Marshal(b, m, deterministic)
238}
239func (dst *PublicCertificate) XXX_Merge(src proto.Message) {
240 xxx_messageInfo_PublicCertificate.Merge(dst, src)
241}
242func (m *PublicCertificate) XXX_Size() int {
243 return xxx_messageInfo_PublicCertificate.Size(m)
244}
245func (m *PublicCertificate) XXX_DiscardUnknown() {
246 xxx_messageInfo_PublicCertificate.DiscardUnknown(m)
247}
248
249var xxx_messageInfo_PublicCertificate proto.InternalMessageInfo
250
251func (m *PublicCertificate) GetKeyName() string {
252 if m != nil && m.KeyName != nil {
253 return *m.KeyName
254 }
255 return ""
256}
257
258func (m *PublicCertificate) GetX509CertificatePem() string {
259 if m != nil && m.X509CertificatePem != nil {
260 return *m.X509CertificatePem
261 }
262 return ""
263}
264
265type GetPublicCertificateForAppResponse struct {
266 PublicCertificateList []*PublicCertificate `protobuf:"bytes,1,rep,name=public_certificate_list,json=publicCertificateList" json:"public_certificate_list,omitempty"`
267 MaxClientCacheTimeInSecond *int64 `protobuf:"varint,2,opt,name=max_client_cache_time_in_second,json=maxClientCacheTimeInSecond" json:"max_client_cache_time_in_second,omitempty"`
268 XXX_NoUnkeyedLiteral struct{} `json:"-"`
269 XXX_unrecognized []byte `json:"-"`
270 XXX_sizecache int32 `json:"-"`
271}
272
273func (m *GetPublicCertificateForAppResponse) Reset() { *m = GetPublicCertificateForAppResponse{} }
274func (m *GetPublicCertificateForAppResponse) String() string { return proto.CompactTextString(m) }
275func (*GetPublicCertificateForAppResponse) ProtoMessage() {}
276func (*GetPublicCertificateForAppResponse) Descriptor() ([]byte, []int) {
277 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{5}
278}
279func (m *GetPublicCertificateForAppResponse) XXX_Unmarshal(b []byte) error {
280 return xxx_messageInfo_GetPublicCertificateForAppResponse.Unmarshal(m, b)
281}
282func (m *GetPublicCertificateForAppResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
283 return xxx_messageInfo_GetPublicCertificateForAppResponse.Marshal(b, m, deterministic)
284}
285func (dst *GetPublicCertificateForAppResponse) XXX_Merge(src proto.Message) {
286 xxx_messageInfo_GetPublicCertificateForAppResponse.Merge(dst, src)
287}
288func (m *GetPublicCertificateForAppResponse) XXX_Size() int {
289 return xxx_messageInfo_GetPublicCertificateForAppResponse.Size(m)
290}
291func (m *GetPublicCertificateForAppResponse) XXX_DiscardUnknown() {
292 xxx_messageInfo_GetPublicCertificateForAppResponse.DiscardUnknown(m)
293}
294
295var xxx_messageInfo_GetPublicCertificateForAppResponse proto.InternalMessageInfo
296
297func (m *GetPublicCertificateForAppResponse) GetPublicCertificateList() []*PublicCertificate {
298 if m != nil {
299 return m.PublicCertificateList
300 }
301 return nil
302}
303
304func (m *GetPublicCertificateForAppResponse) GetMaxClientCacheTimeInSecond() int64 {
305 if m != nil && m.MaxClientCacheTimeInSecond != nil {
306 return *m.MaxClientCacheTimeInSecond
307 }
308 return 0
309}
310
311type GetServiceAccountNameRequest struct {
312 XXX_NoUnkeyedLiteral struct{} `json:"-"`
313 XXX_unrecognized []byte `json:"-"`
314 XXX_sizecache int32 `json:"-"`
315}
316
317func (m *GetServiceAccountNameRequest) Reset() { *m = GetServiceAccountNameRequest{} }
318func (m *GetServiceAccountNameRequest) String() string { return proto.CompactTextString(m) }
319func (*GetServiceAccountNameRequest) ProtoMessage() {}
320func (*GetServiceAccountNameRequest) Descriptor() ([]byte, []int) {
321 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{6}
322}
323func (m *GetServiceAccountNameRequest) XXX_Unmarshal(b []byte) error {
324 return xxx_messageInfo_GetServiceAccountNameRequest.Unmarshal(m, b)
325}
326func (m *GetServiceAccountNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
327 return xxx_messageInfo_GetServiceAccountNameRequest.Marshal(b, m, deterministic)
328}
329func (dst *GetServiceAccountNameRequest) XXX_Merge(src proto.Message) {
330 xxx_messageInfo_GetServiceAccountNameRequest.Merge(dst, src)
331}
332func (m *GetServiceAccountNameRequest) XXX_Size() int {
333 return xxx_messageInfo_GetServiceAccountNameRequest.Size(m)
334}
335func (m *GetServiceAccountNameRequest) XXX_DiscardUnknown() {
336 xxx_messageInfo_GetServiceAccountNameRequest.DiscardUnknown(m)
337}
338
339var xxx_messageInfo_GetServiceAccountNameRequest proto.InternalMessageInfo
340
341type GetServiceAccountNameResponse struct {
342 ServiceAccountName *string `protobuf:"bytes,1,opt,name=service_account_name,json=serviceAccountName" json:"service_account_name,omitempty"`
343 XXX_NoUnkeyedLiteral struct{} `json:"-"`
344 XXX_unrecognized []byte `json:"-"`
345 XXX_sizecache int32 `json:"-"`
346}
347
348func (m *GetServiceAccountNameResponse) Reset() { *m = GetServiceAccountNameResponse{} }
349func (m *GetServiceAccountNameResponse) String() string { return proto.CompactTextString(m) }
350func (*GetServiceAccountNameResponse) ProtoMessage() {}
351func (*GetServiceAccountNameResponse) Descriptor() ([]byte, []int) {
352 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{7}
353}
354func (m *GetServiceAccountNameResponse) XXX_Unmarshal(b []byte) error {
355 return xxx_messageInfo_GetServiceAccountNameResponse.Unmarshal(m, b)
356}
357func (m *GetServiceAccountNameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
358 return xxx_messageInfo_GetServiceAccountNameResponse.Marshal(b, m, deterministic)
359}
360func (dst *GetServiceAccountNameResponse) XXX_Merge(src proto.Message) {
361 xxx_messageInfo_GetServiceAccountNameResponse.Merge(dst, src)
362}
363func (m *GetServiceAccountNameResponse) XXX_Size() int {
364 return xxx_messageInfo_GetServiceAccountNameResponse.Size(m)
365}
366func (m *GetServiceAccountNameResponse) XXX_DiscardUnknown() {
367 xxx_messageInfo_GetServiceAccountNameResponse.DiscardUnknown(m)
368}
369
370var xxx_messageInfo_GetServiceAccountNameResponse proto.InternalMessageInfo
371
372func (m *GetServiceAccountNameResponse) GetServiceAccountName() string {
373 if m != nil && m.ServiceAccountName != nil {
374 return *m.ServiceAccountName
375 }
376 return ""
377}
378
379type GetAccessTokenRequest struct {
380 Scope []string `protobuf:"bytes,1,rep,name=scope" json:"scope,omitempty"`
381 ServiceAccountId *int64 `protobuf:"varint,2,opt,name=service_account_id,json=serviceAccountId" json:"service_account_id,omitempty"`
382 ServiceAccountName *string `protobuf:"bytes,3,opt,name=service_account_name,json=serviceAccountName" json:"service_account_name,omitempty"`
383 XXX_NoUnkeyedLiteral struct{} `json:"-"`
384 XXX_unrecognized []byte `json:"-"`
385 XXX_sizecache int32 `json:"-"`
386}
387
388func (m *GetAccessTokenRequest) Reset() { *m = GetAccessTokenRequest{} }
389func (m *GetAccessTokenRequest) String() string { return proto.CompactTextString(m) }
390func (*GetAccessTokenRequest) ProtoMessage() {}
391func (*GetAccessTokenRequest) Descriptor() ([]byte, []int) {
392 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{8}
393}
394func (m *GetAccessTokenRequest) XXX_Unmarshal(b []byte) error {
395 return xxx_messageInfo_GetAccessTokenRequest.Unmarshal(m, b)
396}
397func (m *GetAccessTokenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
398 return xxx_messageInfo_GetAccessTokenRequest.Marshal(b, m, deterministic)
399}
400func (dst *GetAccessTokenRequest) XXX_Merge(src proto.Message) {
401 xxx_messageInfo_GetAccessTokenRequest.Merge(dst, src)
402}
403func (m *GetAccessTokenRequest) XXX_Size() int {
404 return xxx_messageInfo_GetAccessTokenRequest.Size(m)
405}
406func (m *GetAccessTokenRequest) XXX_DiscardUnknown() {
407 xxx_messageInfo_GetAccessTokenRequest.DiscardUnknown(m)
408}
409
410var xxx_messageInfo_GetAccessTokenRequest proto.InternalMessageInfo
411
412func (m *GetAccessTokenRequest) GetScope() []string {
413 if m != nil {
414 return m.Scope
415 }
416 return nil
417}
418
419func (m *GetAccessTokenRequest) GetServiceAccountId() int64 {
420 if m != nil && m.ServiceAccountId != nil {
421 return *m.ServiceAccountId
422 }
423 return 0
424}
425
426func (m *GetAccessTokenRequest) GetServiceAccountName() string {
427 if m != nil && m.ServiceAccountName != nil {
428 return *m.ServiceAccountName
429 }
430 return ""
431}
432
433type GetAccessTokenResponse struct {
434 AccessToken *string `protobuf:"bytes,1,opt,name=access_token,json=accessToken" json:"access_token,omitempty"`
435 ExpirationTime *int64 `protobuf:"varint,2,opt,name=expiration_time,json=expirationTime" json:"expiration_time,omitempty"`
436 XXX_NoUnkeyedLiteral struct{} `json:"-"`
437 XXX_unrecognized []byte `json:"-"`
438 XXX_sizecache int32 `json:"-"`
439}
440
441func (m *GetAccessTokenResponse) Reset() { *m = GetAccessTokenResponse{} }
442func (m *GetAccessTokenResponse) String() string { return proto.CompactTextString(m) }
443func (*GetAccessTokenResponse) ProtoMessage() {}
444func (*GetAccessTokenResponse) Descriptor() ([]byte, []int) {
445 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{9}
446}
447func (m *GetAccessTokenResponse) XXX_Unmarshal(b []byte) error {
448 return xxx_messageInfo_GetAccessTokenResponse.Unmarshal(m, b)
449}
450func (m *GetAccessTokenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
451 return xxx_messageInfo_GetAccessTokenResponse.Marshal(b, m, deterministic)
452}
453func (dst *GetAccessTokenResponse) XXX_Merge(src proto.Message) {
454 xxx_messageInfo_GetAccessTokenResponse.Merge(dst, src)
455}
456func (m *GetAccessTokenResponse) XXX_Size() int {
457 return xxx_messageInfo_GetAccessTokenResponse.Size(m)
458}
459func (m *GetAccessTokenResponse) XXX_DiscardUnknown() {
460 xxx_messageInfo_GetAccessTokenResponse.DiscardUnknown(m)
461}
462
463var xxx_messageInfo_GetAccessTokenResponse proto.InternalMessageInfo
464
465func (m *GetAccessTokenResponse) GetAccessToken() string {
466 if m != nil && m.AccessToken != nil {
467 return *m.AccessToken
468 }
469 return ""
470}
471
472func (m *GetAccessTokenResponse) GetExpirationTime() int64 {
473 if m != nil && m.ExpirationTime != nil {
474 return *m.ExpirationTime
475 }
476 return 0
477}
478
479type GetDefaultGcsBucketNameRequest struct {
480 XXX_NoUnkeyedLiteral struct{} `json:"-"`
481 XXX_unrecognized []byte `json:"-"`
482 XXX_sizecache int32 `json:"-"`
483}
484
485func (m *GetDefaultGcsBucketNameRequest) Reset() { *m = GetDefaultGcsBucketNameRequest{} }
486func (m *GetDefaultGcsBucketNameRequest) String() string { return proto.CompactTextString(m) }
487func (*GetDefaultGcsBucketNameRequest) ProtoMessage() {}
488func (*GetDefaultGcsBucketNameRequest) Descriptor() ([]byte, []int) {
489 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{10}
490}
491func (m *GetDefaultGcsBucketNameRequest) XXX_Unmarshal(b []byte) error {
492 return xxx_messageInfo_GetDefaultGcsBucketNameRequest.Unmarshal(m, b)
493}
494func (m *GetDefaultGcsBucketNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
495 return xxx_messageInfo_GetDefaultGcsBucketNameRequest.Marshal(b, m, deterministic)
496}
497func (dst *GetDefaultGcsBucketNameRequest) XXX_Merge(src proto.Message) {
498 xxx_messageInfo_GetDefaultGcsBucketNameRequest.Merge(dst, src)
499}
500func (m *GetDefaultGcsBucketNameRequest) XXX_Size() int {
501 return xxx_messageInfo_GetDefaultGcsBucketNameRequest.Size(m)
502}
503func (m *GetDefaultGcsBucketNameRequest) XXX_DiscardUnknown() {
504 xxx_messageInfo_GetDefaultGcsBucketNameRequest.DiscardUnknown(m)
505}
506
507var xxx_messageInfo_GetDefaultGcsBucketNameRequest proto.InternalMessageInfo
508
509type GetDefaultGcsBucketNameResponse struct {
510 DefaultGcsBucketName *string `protobuf:"bytes,1,opt,name=default_gcs_bucket_name,json=defaultGcsBucketName" json:"default_gcs_bucket_name,omitempty"`
511 XXX_NoUnkeyedLiteral struct{} `json:"-"`
512 XXX_unrecognized []byte `json:"-"`
513 XXX_sizecache int32 `json:"-"`
514}
515
516func (m *GetDefaultGcsBucketNameResponse) Reset() { *m = GetDefaultGcsBucketNameResponse{} }
517func (m *GetDefaultGcsBucketNameResponse) String() string { return proto.CompactTextString(m) }
518func (*GetDefaultGcsBucketNameResponse) ProtoMessage() {}
519func (*GetDefaultGcsBucketNameResponse) Descriptor() ([]byte, []int) {
520 return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{11}
521}
522func (m *GetDefaultGcsBucketNameResponse) XXX_Unmarshal(b []byte) error {
523 return xxx_messageInfo_GetDefaultGcsBucketNameResponse.Unmarshal(m, b)
524}
525func (m *GetDefaultGcsBucketNameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
526 return xxx_messageInfo_GetDefaultGcsBucketNameResponse.Marshal(b, m, deterministic)
527}
528func (dst *GetDefaultGcsBucketNameResponse) XXX_Merge(src proto.Message) {
529 xxx_messageInfo_GetDefaultGcsBucketNameResponse.Merge(dst, src)
530}
531func (m *GetDefaultGcsBucketNameResponse) XXX_Size() int {
532 return xxx_messageInfo_GetDefaultGcsBucketNameResponse.Size(m)
533}
534func (m *GetDefaultGcsBucketNameResponse) XXX_DiscardUnknown() {
535 xxx_messageInfo_GetDefaultGcsBucketNameResponse.DiscardUnknown(m)
536}
537
538var xxx_messageInfo_GetDefaultGcsBucketNameResponse proto.InternalMessageInfo
539
540func (m *GetDefaultGcsBucketNameResponse) GetDefaultGcsBucketName() string {
541 if m != nil && m.DefaultGcsBucketName != nil {
542 return *m.DefaultGcsBucketName
543 }
544 return ""
545}
546
547func init() {
548 proto.RegisterType((*AppIdentityServiceError)(nil), "appengine.AppIdentityServiceError")
549 proto.RegisterType((*SignForAppRequest)(nil), "appengine.SignForAppRequest")
550 proto.RegisterType((*SignForAppResponse)(nil), "appengine.SignForAppResponse")
551 proto.RegisterType((*GetPublicCertificateForAppRequest)(nil), "appengine.GetPublicCertificateForAppRequest")
552 proto.RegisterType((*PublicCertificate)(nil), "appengine.PublicCertificate")
553 proto.RegisterType((*GetPublicCertificateForAppResponse)(nil), "appengine.GetPublicCertificateForAppResponse")
554 proto.RegisterType((*GetServiceAccountNameRequest)(nil), "appengine.GetServiceAccountNameRequest")
555 proto.RegisterType((*GetServiceAccountNameResponse)(nil), "appengine.GetServiceAccountNameResponse")
556 proto.RegisterType((*GetAccessTokenRequest)(nil), "appengine.GetAccessTokenRequest")
557 proto.RegisterType((*GetAccessTokenResponse)(nil), "appengine.GetAccessTokenResponse")
558 proto.RegisterType((*GetDefaultGcsBucketNameRequest)(nil), "appengine.GetDefaultGcsBucketNameRequest")
559 proto.RegisterType((*GetDefaultGcsBucketNameResponse)(nil), "appengine.GetDefaultGcsBucketNameResponse")
560}
561
562func init() {
563 proto.RegisterFile("google.golang.org/appengine/internal/app_identity/app_identity_service.proto", fileDescriptor_app_identity_service_08a6e3f74b04cfa4)
564}
565
566var fileDescriptor_app_identity_service_08a6e3f74b04cfa4 = []byte{
567 // 676 bytes of a gzipped FileDescriptorProto
568 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdb, 0x6e, 0xda, 0x58,
569 0x14, 0x1d, 0x26, 0x1a, 0x31, 0x6c, 0x12, 0x62, 0xce, 0x90, 0xcb, 0x8c, 0x32, 0xb9, 0x78, 0x1e,
570 0x26, 0x0f, 0x15, 0x89, 0x2a, 0x45, 0x55, 0x1f, 0x8d, 0xed, 0x22, 0x54, 0x07, 0x53, 0x43, 0x9a,
571 0xa8, 0x2f, 0xa7, 0xce, 0x61, 0xc7, 0x3d, 0x02, 0x9f, 0xe3, 0xda, 0x87, 0x0a, 0x3e, 0xa2, 0x3f,
572 0xd2, 0x9f, 0xe8, 0x5b, 0xbf, 0xa5, 0x17, 0xb5, 0xdf, 0x50, 0xd9, 0x38, 0x5c, 0x92, 0x92, 0x37,
573 0xbc, 0xf6, 0x5a, 0xcb, 0x6b, 0x2f, 0x6d, 0x0c, 0x4e, 0x20, 0x65, 0x30, 0xc4, 0x7a, 0x20, 0x87,
574 0xbe, 0x08, 0xea, 0x32, 0x0e, 0x4e, 0xfc, 0x28, 0x42, 0x11, 0x70, 0x81, 0x27, 0x5c, 0x28, 0x8c,
575 0x85, 0x3f, 0x4c, 0x21, 0xca, 0xfb, 0x28, 0x14, 0x57, 0x93, 0xa5, 0x07, 0x9a, 0x60, 0xfc, 0x8e,
576 0x33, 0xac, 0x47, 0xb1, 0x54, 0x92, 0x94, 0x66, 0x5a, 0xfd, 0x53, 0x01, 0x76, 0x8c, 0x28, 0x6a,
577 0xe5, 0xc4, 0xee, 0x94, 0x67, 0xc7, 0xb1, 0x8c, 0xf5, 0x0f, 0x05, 0x28, 0x65, 0xbf, 0x4c, 0xd9,
578 0x47, 0x52, 0x86, 0x62, 0xf7, 0xc2, 0x34, 0xed, 0x6e, 0x57, 0xfb, 0x8d, 0x54, 0x61, 0xe3, 0xa2,
579 0xfd, 0xbc, 0xed, 0x5e, 0xb6, 0x69, 0xd7, 0x74, 0x3b, 0xb6, 0x56, 0x22, 0x7f, 0x41, 0xa5, 0xe1,
580 0xb8, 0x0d, 0xda, 0x73, 0x5d, 0xea, 0x18, 0x5e, 0xd3, 0xd6, 0x3e, 0x17, 0xc9, 0x36, 0x54, 0x2d,
581 0xdb, 0xb0, 0x9c, 0x56, 0xdb, 0xa6, 0xf6, 0x95, 0x69, 0xdb, 0x96, 0x6d, 0x69, 0x5f, 0x8a, 0xa4,
582 0x06, 0x9b, 0x6d, 0xb7, 0x47, 0x0d, 0xfa, 0xd2, 0x70, 0x5a, 0x16, 0x35, 0x3a, 0x1d, 0xed, 0x6b,
583 0x91, 0x90, 0xb9, 0xab, 0xed, 0x79, 0xae, 0xa7, 0x7d, 0x2b, 0x12, 0x0d, 0xca, 0x19, 0xd3, 0x71,
584 0xdc, 0x4b, 0xdb, 0xd2, 0xbe, 0xcf, 0xb4, 0xad, 0xf3, 0x8e, 0x63, 0x9f, 0xdb, 0xed, 0x9e, 0x6d,
585 0x69, 0x3f, 0x8a, 0xfa, 0x13, 0xa8, 0x76, 0x79, 0x20, 0x9e, 0xc9, 0xd8, 0x88, 0x22, 0x0f, 0xdf,
586 0x8e, 0x30, 0x51, 0x44, 0x87, 0x8d, 0xeb, 0x89, 0xc2, 0x84, 0x2a, 0x49, 0x13, 0x1e, 0x88, 0xdd,
587 0xc2, 0x61, 0xe1, 0x78, 0xdd, 0x2b, 0x67, 0x60, 0x4f, 0xa6, 0x02, 0xfd, 0x0a, 0xc8, 0xa2, 0x30,
588 0x89, 0xa4, 0x48, 0x90, 0xfc, 0x0d, 0x7f, 0x0e, 0x70, 0x42, 0x85, 0x1f, 0x62, 0x26, 0x2a, 0x79,
589 0xc5, 0x01, 0x4e, 0xda, 0x7e, 0x88, 0xe4, 0x7f, 0xd8, 0x4c, 0xbd, 0x7c, 0x35, 0x8a, 0x91, 0x66,
590 0x4e, 0xbb, 0xbf, 0x67, 0xb6, 0x95, 0x19, 0xdc, 0x48, 0x51, 0xfd, 0x3f, 0x38, 0x6a, 0xa2, 0xea,
591 0x8c, 0xae, 0x87, 0x9c, 0x99, 0x18, 0x2b, 0x7e, 0xc3, 0x99, 0xaf, 0x70, 0x29, 0xa2, 0xfe, 0x1a,
592 0xaa, 0xf7, 0x18, 0x0f, 0xbd, 0xfd, 0x14, 0x6a, 0xe3, 0xb3, 0xd3, 0xa7, 0x94, 0xcd, 0xe9, 0x34,
593 0xc2, 0x30, 0x8b, 0x50, 0xf2, 0x48, 0x3a, 0x5b, 0x70, 0xea, 0x60, 0xa8, 0x7f, 0x2c, 0x80, 0xfe,
594 0x50, 0x8e, 0x7c, 0xe3, 0x1e, 0xec, 0x44, 0x19, 0x65, 0xc9, 0x7a, 0xc8, 0x13, 0xb5, 0x5b, 0x38,
595 0x5c, 0x3b, 0x2e, 0x3f, 0xde, 0xab, 0xcf, 0xce, 0xa6, 0x7e, 0xcf, 0xcc, 0xdb, 0x8a, 0xee, 0x42,
596 0x0e, 0x4f, 0x14, 0x31, 0xe1, 0x20, 0xf4, 0xc7, 0x94, 0x0d, 0x39, 0x0a, 0x45, 0x99, 0xcf, 0xde,
597 0x20, 0x55, 0x3c, 0x44, 0xca, 0x05, 0x4d, 0x90, 0x49, 0xd1, 0xcf, 0x92, 0xaf, 0x79, 0xff, 0x84,
598 0xfe, 0xd8, 0xcc, 0x58, 0x66, 0x4a, 0xea, 0xf1, 0x10, 0x5b, 0xa2, 0x9b, 0x31, 0xf4, 0x7d, 0xd8,
599 0x6b, 0xa2, 0xca, 0x6f, 0xd3, 0x60, 0x4c, 0x8e, 0x84, 0x4a, 0xcb, 0xb8, 0xed, 0xf0, 0x05, 0xfc,
600 0xbb, 0x62, 0x9e, 0xef, 0x76, 0x0a, 0xb5, 0xfc, 0x1f, 0x40, 0xfd, 0xe9, 0x78, 0xb1, 0x5b, 0x92,
601 0xdc, 0x53, 0xea, 0xef, 0x0b, 0xb0, 0xd5, 0x44, 0x65, 0x30, 0x86, 0x49, 0xd2, 0x93, 0x03, 0x14,
602 0xb7, 0x37, 0x55, 0x83, 0x3f, 0x12, 0x26, 0x23, 0xcc, 0x5a, 0x29, 0x79, 0xd3, 0x07, 0xf2, 0x08,
603 0xc8, 0xdd, 0x37, 0xf0, 0xdb, 0xd5, 0xb4, 0x65, 0xff, 0x56, 0x7f, 0x65, 0x9e, 0xb5, 0x95, 0x79,
604 0xfa, 0xb0, 0x7d, 0x37, 0x4e, 0xbe, 0xdb, 0x11, 0xac, 0xfb, 0x19, 0x4c, 0x55, 0x8a, 0xe7, 0x3b,
605 0x95, 0xfd, 0x39, 0x35, 0xbd, 0x58, 0x1c, 0x47, 0x3c, 0xf6, 0x15, 0x97, 0x22, 0xab, 0x3f, 0x4f,
606 0x56, 0x99, 0xc3, 0x69, 0xe1, 0xfa, 0x21, 0xec, 0x37, 0x51, 0x59, 0x78, 0xe3, 0x8f, 0x86, 0xaa,
607 0xc9, 0x92, 0xc6, 0x88, 0x0d, 0x70, 0xa9, 0xea, 0x2b, 0x38, 0x58, 0xc9, 0xc8, 0x03, 0x9d, 0xc1,
608 0x4e, 0x7f, 0x3a, 0xa7, 0x01, 0x4b, 0xe8, 0x75, 0xc6, 0x58, 0xec, 0xbb, 0xd6, 0xff, 0x85, 0xbc,
609 0x51, 0x79, 0xb5, 0xbe, 0xf8, 0xc9, 0xfa, 0x19, 0x00, 0x00, 0xff, 0xff, 0x37, 0x4c, 0x56, 0x38,
610 0xf3, 0x04, 0x00, 0x00,
611}
diff --git a/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto b/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
new file mode 100644
index 0000000..19610ca
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
@@ -0,0 +1,64 @@
1syntax = "proto2";
2option go_package = "app_identity";
3
4package appengine;
5
6message AppIdentityServiceError {
7 enum ErrorCode {
8 SUCCESS = 0;
9 UNKNOWN_SCOPE = 9;
10 BLOB_TOO_LARGE = 1000;
11 DEADLINE_EXCEEDED = 1001;
12 NOT_A_VALID_APP = 1002;
13 UNKNOWN_ERROR = 1003;
14 NOT_ALLOWED = 1005;
15 NOT_IMPLEMENTED = 1006;
16 }
17}
18
19message SignForAppRequest {
20 optional bytes bytes_to_sign = 1;
21}
22
23message SignForAppResponse {
24 optional string key_name = 1;
25 optional bytes signature_bytes = 2;
26}
27
28message GetPublicCertificateForAppRequest {
29}
30
31message PublicCertificate {
32 optional string key_name = 1;
33 optional string x509_certificate_pem = 2;
34}
35
36message GetPublicCertificateForAppResponse {
37 repeated PublicCertificate public_certificate_list = 1;
38 optional int64 max_client_cache_time_in_second = 2;
39}
40
41message GetServiceAccountNameRequest {
42}
43
44message GetServiceAccountNameResponse {
45 optional string service_account_name = 1;
46}
47
48message GetAccessTokenRequest {
49 repeated string scope = 1;
50 optional int64 service_account_id = 2;
51 optional string service_account_name = 3;
52}
53
54message GetAccessTokenResponse {
55 optional string access_token = 1;
56 optional int64 expiration_time = 2;
57}
58
59message GetDefaultGcsBucketNameRequest {
60}
61
62message GetDefaultGcsBucketNameResponse {
63 optional string default_gcs_bucket_name = 1;
64}
diff --git a/vendor/google.golang.org/appengine/internal/base/api_base.pb.go b/vendor/google.golang.org/appengine/internal/base/api_base.pb.go
new file mode 100644
index 0000000..db4777e
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/base/api_base.pb.go
@@ -0,0 +1,308 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/base/api_base.proto
3
4package base
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type StringProto struct {
22 Value *string `protobuf:"bytes,1,req,name=value" json:"value,omitempty"`
23 XXX_NoUnkeyedLiteral struct{} `json:"-"`
24 XXX_unrecognized []byte `json:"-"`
25 XXX_sizecache int32 `json:"-"`
26}
27
28func (m *StringProto) Reset() { *m = StringProto{} }
29func (m *StringProto) String() string { return proto.CompactTextString(m) }
30func (*StringProto) ProtoMessage() {}
31func (*StringProto) Descriptor() ([]byte, []int) {
32 return fileDescriptor_api_base_9d49f8792e0c1140, []int{0}
33}
34func (m *StringProto) XXX_Unmarshal(b []byte) error {
35 return xxx_messageInfo_StringProto.Unmarshal(m, b)
36}
37func (m *StringProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
38 return xxx_messageInfo_StringProto.Marshal(b, m, deterministic)
39}
40func (dst *StringProto) XXX_Merge(src proto.Message) {
41 xxx_messageInfo_StringProto.Merge(dst, src)
42}
43func (m *StringProto) XXX_Size() int {
44 return xxx_messageInfo_StringProto.Size(m)
45}
46func (m *StringProto) XXX_DiscardUnknown() {
47 xxx_messageInfo_StringProto.DiscardUnknown(m)
48}
49
50var xxx_messageInfo_StringProto proto.InternalMessageInfo
51
52func (m *StringProto) GetValue() string {
53 if m != nil && m.Value != nil {
54 return *m.Value
55 }
56 return ""
57}
58
59type Integer32Proto struct {
60 Value *int32 `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
61 XXX_NoUnkeyedLiteral struct{} `json:"-"`
62 XXX_unrecognized []byte `json:"-"`
63 XXX_sizecache int32 `json:"-"`
64}
65
66func (m *Integer32Proto) Reset() { *m = Integer32Proto{} }
67func (m *Integer32Proto) String() string { return proto.CompactTextString(m) }
68func (*Integer32Proto) ProtoMessage() {}
69func (*Integer32Proto) Descriptor() ([]byte, []int) {
70 return fileDescriptor_api_base_9d49f8792e0c1140, []int{1}
71}
72func (m *Integer32Proto) XXX_Unmarshal(b []byte) error {
73 return xxx_messageInfo_Integer32Proto.Unmarshal(m, b)
74}
75func (m *Integer32Proto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
76 return xxx_messageInfo_Integer32Proto.Marshal(b, m, deterministic)
77}
78func (dst *Integer32Proto) XXX_Merge(src proto.Message) {
79 xxx_messageInfo_Integer32Proto.Merge(dst, src)
80}
81func (m *Integer32Proto) XXX_Size() int {
82 return xxx_messageInfo_Integer32Proto.Size(m)
83}
84func (m *Integer32Proto) XXX_DiscardUnknown() {
85 xxx_messageInfo_Integer32Proto.DiscardUnknown(m)
86}
87
88var xxx_messageInfo_Integer32Proto proto.InternalMessageInfo
89
90func (m *Integer32Proto) GetValue() int32 {
91 if m != nil && m.Value != nil {
92 return *m.Value
93 }
94 return 0
95}
96
97type Integer64Proto struct {
98 Value *int64 `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
99 XXX_NoUnkeyedLiteral struct{} `json:"-"`
100 XXX_unrecognized []byte `json:"-"`
101 XXX_sizecache int32 `json:"-"`
102}
103
104func (m *Integer64Proto) Reset() { *m = Integer64Proto{} }
105func (m *Integer64Proto) String() string { return proto.CompactTextString(m) }
106func (*Integer64Proto) ProtoMessage() {}
107func (*Integer64Proto) Descriptor() ([]byte, []int) {
108 return fileDescriptor_api_base_9d49f8792e0c1140, []int{2}
109}
110func (m *Integer64Proto) XXX_Unmarshal(b []byte) error {
111 return xxx_messageInfo_Integer64Proto.Unmarshal(m, b)
112}
113func (m *Integer64Proto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
114 return xxx_messageInfo_Integer64Proto.Marshal(b, m, deterministic)
115}
116func (dst *Integer64Proto) XXX_Merge(src proto.Message) {
117 xxx_messageInfo_Integer64Proto.Merge(dst, src)
118}
119func (m *Integer64Proto) XXX_Size() int {
120 return xxx_messageInfo_Integer64Proto.Size(m)
121}
122func (m *Integer64Proto) XXX_DiscardUnknown() {
123 xxx_messageInfo_Integer64Proto.DiscardUnknown(m)
124}
125
126var xxx_messageInfo_Integer64Proto proto.InternalMessageInfo
127
128func (m *Integer64Proto) GetValue() int64 {
129 if m != nil && m.Value != nil {
130 return *m.Value
131 }
132 return 0
133}
134
135type BoolProto struct {
136 Value *bool `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
137 XXX_NoUnkeyedLiteral struct{} `json:"-"`
138 XXX_unrecognized []byte `json:"-"`
139 XXX_sizecache int32 `json:"-"`
140}
141
142func (m *BoolProto) Reset() { *m = BoolProto{} }
143func (m *BoolProto) String() string { return proto.CompactTextString(m) }
144func (*BoolProto) ProtoMessage() {}
145func (*BoolProto) Descriptor() ([]byte, []int) {
146 return fileDescriptor_api_base_9d49f8792e0c1140, []int{3}
147}
148func (m *BoolProto) XXX_Unmarshal(b []byte) error {
149 return xxx_messageInfo_BoolProto.Unmarshal(m, b)
150}
151func (m *BoolProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
152 return xxx_messageInfo_BoolProto.Marshal(b, m, deterministic)
153}
154func (dst *BoolProto) XXX_Merge(src proto.Message) {
155 xxx_messageInfo_BoolProto.Merge(dst, src)
156}
157func (m *BoolProto) XXX_Size() int {
158 return xxx_messageInfo_BoolProto.Size(m)
159}
160func (m *BoolProto) XXX_DiscardUnknown() {
161 xxx_messageInfo_BoolProto.DiscardUnknown(m)
162}
163
164var xxx_messageInfo_BoolProto proto.InternalMessageInfo
165
166func (m *BoolProto) GetValue() bool {
167 if m != nil && m.Value != nil {
168 return *m.Value
169 }
170 return false
171}
172
173type DoubleProto struct {
174 Value *float64 `protobuf:"fixed64,1,req,name=value" json:"value,omitempty"`
175 XXX_NoUnkeyedLiteral struct{} `json:"-"`
176 XXX_unrecognized []byte `json:"-"`
177 XXX_sizecache int32 `json:"-"`
178}
179
180func (m *DoubleProto) Reset() { *m = DoubleProto{} }
181func (m *DoubleProto) String() string { return proto.CompactTextString(m) }
182func (*DoubleProto) ProtoMessage() {}
183func (*DoubleProto) Descriptor() ([]byte, []int) {
184 return fileDescriptor_api_base_9d49f8792e0c1140, []int{4}
185}
186func (m *DoubleProto) XXX_Unmarshal(b []byte) error {
187 return xxx_messageInfo_DoubleProto.Unmarshal(m, b)
188}
189func (m *DoubleProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
190 return xxx_messageInfo_DoubleProto.Marshal(b, m, deterministic)
191}
192func (dst *DoubleProto) XXX_Merge(src proto.Message) {
193 xxx_messageInfo_DoubleProto.Merge(dst, src)
194}
195func (m *DoubleProto) XXX_Size() int {
196 return xxx_messageInfo_DoubleProto.Size(m)
197}
198func (m *DoubleProto) XXX_DiscardUnknown() {
199 xxx_messageInfo_DoubleProto.DiscardUnknown(m)
200}
201
202var xxx_messageInfo_DoubleProto proto.InternalMessageInfo
203
204func (m *DoubleProto) GetValue() float64 {
205 if m != nil && m.Value != nil {
206 return *m.Value
207 }
208 return 0
209}
210
211type BytesProto struct {
212 Value []byte `protobuf:"bytes,1,req,name=value" json:"value,omitempty"`
213 XXX_NoUnkeyedLiteral struct{} `json:"-"`
214 XXX_unrecognized []byte `json:"-"`
215 XXX_sizecache int32 `json:"-"`
216}
217
218func (m *BytesProto) Reset() { *m = BytesProto{} }
219func (m *BytesProto) String() string { return proto.CompactTextString(m) }
220func (*BytesProto) ProtoMessage() {}
221func (*BytesProto) Descriptor() ([]byte, []int) {
222 return fileDescriptor_api_base_9d49f8792e0c1140, []int{5}
223}
224func (m *BytesProto) XXX_Unmarshal(b []byte) error {
225 return xxx_messageInfo_BytesProto.Unmarshal(m, b)
226}
227func (m *BytesProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
228 return xxx_messageInfo_BytesProto.Marshal(b, m, deterministic)
229}
230func (dst *BytesProto) XXX_Merge(src proto.Message) {
231 xxx_messageInfo_BytesProto.Merge(dst, src)
232}
233func (m *BytesProto) XXX_Size() int {
234 return xxx_messageInfo_BytesProto.Size(m)
235}
236func (m *BytesProto) XXX_DiscardUnknown() {
237 xxx_messageInfo_BytesProto.DiscardUnknown(m)
238}
239
240var xxx_messageInfo_BytesProto proto.InternalMessageInfo
241
242func (m *BytesProto) GetValue() []byte {
243 if m != nil {
244 return m.Value
245 }
246 return nil
247}
248
249type VoidProto struct {
250 XXX_NoUnkeyedLiteral struct{} `json:"-"`
251 XXX_unrecognized []byte `json:"-"`
252 XXX_sizecache int32 `json:"-"`
253}
254
255func (m *VoidProto) Reset() { *m = VoidProto{} }
256func (m *VoidProto) String() string { return proto.CompactTextString(m) }
257func (*VoidProto) ProtoMessage() {}
258func (*VoidProto) Descriptor() ([]byte, []int) {
259 return fileDescriptor_api_base_9d49f8792e0c1140, []int{6}
260}
261func (m *VoidProto) XXX_Unmarshal(b []byte) error {
262 return xxx_messageInfo_VoidProto.Unmarshal(m, b)
263}
264func (m *VoidProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
265 return xxx_messageInfo_VoidProto.Marshal(b, m, deterministic)
266}
267func (dst *VoidProto) XXX_Merge(src proto.Message) {
268 xxx_messageInfo_VoidProto.Merge(dst, src)
269}
270func (m *VoidProto) XXX_Size() int {
271 return xxx_messageInfo_VoidProto.Size(m)
272}
273func (m *VoidProto) XXX_DiscardUnknown() {
274 xxx_messageInfo_VoidProto.DiscardUnknown(m)
275}
276
277var xxx_messageInfo_VoidProto proto.InternalMessageInfo
278
279func init() {
280 proto.RegisterType((*StringProto)(nil), "appengine.base.StringProto")
281 proto.RegisterType((*Integer32Proto)(nil), "appengine.base.Integer32Proto")
282 proto.RegisterType((*Integer64Proto)(nil), "appengine.base.Integer64Proto")
283 proto.RegisterType((*BoolProto)(nil), "appengine.base.BoolProto")
284 proto.RegisterType((*DoubleProto)(nil), "appengine.base.DoubleProto")
285 proto.RegisterType((*BytesProto)(nil), "appengine.base.BytesProto")
286 proto.RegisterType((*VoidProto)(nil), "appengine.base.VoidProto")
287}
288
289func init() {
290 proto.RegisterFile("google.golang.org/appengine/internal/base/api_base.proto", fileDescriptor_api_base_9d49f8792e0c1140)
291}
292
293var fileDescriptor_api_base_9d49f8792e0c1140 = []byte{
294 // 199 bytes of a gzipped FileDescriptorProto
295 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0xcf, 0x3f, 0x4b, 0xc6, 0x30,
296 0x10, 0x06, 0x70, 0x5a, 0xad, 0xb4, 0x57, 0xe9, 0x20, 0x0e, 0x1d, 0xb5, 0x05, 0x71, 0x4a, 0x40,
297 0x45, 0x9c, 0x83, 0x8b, 0x9b, 0x28, 0x38, 0xb8, 0x48, 0x8a, 0xc7, 0x11, 0x08, 0xb9, 0x90, 0xa6,
298 0x82, 0xdf, 0x5e, 0xda, 0xd2, 0xfa, 0xc2, 0x9b, 0xed, 0xfe, 0xfc, 0xe0, 0xe1, 0x81, 0x27, 0x62,
299 0x26, 0x8b, 0x82, 0xd8, 0x6a, 0x47, 0x82, 0x03, 0x49, 0xed, 0x3d, 0x3a, 0x32, 0x0e, 0xa5, 0x71,
300 0x11, 0x83, 0xd3, 0x56, 0x0e, 0x7a, 0x44, 0xa9, 0xbd, 0xf9, 0x9a, 0x07, 0xe1, 0x03, 0x47, 0xbe,
301 0x68, 0x76, 0x27, 0xe6, 0x6b, 0xd7, 0x43, 0xfd, 0x1e, 0x83, 0x71, 0xf4, 0xba, 0xbc, 0x2f, 0xa1,
302 0xf8, 0xd1, 0x76, 0xc2, 0x36, 0xbb, 0xca, 0x6f, 0xab, 0xb7, 0x75, 0xe9, 0x6e, 0xa0, 0x79, 0x71,
303 0x11, 0x09, 0xc3, 0xfd, 0x5d, 0xc2, 0x15, 0xc7, 0xee, 0xf1, 0x21, 0xe1, 0x4e, 0x36, 0x77, 0x0d,
304 0x95, 0x62, 0xb6, 0x09, 0x52, 0x6e, 0xa4, 0x87, 0xfa, 0x99, 0xa7, 0xc1, 0x62, 0x02, 0x65, 0xff,
305 0x79, 0xa0, 0x7e, 0x23, 0x8e, 0xab, 0x69, 0x0f, 0xcd, 0xb9, 0xca, 0xcb, 0xdd, 0xd5, 0x50, 0x7d,
306 0xb0, 0xf9, 0x5e, 0x98, 0x3a, 0xfb, 0x3c, 0x9d, 0x9b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xba,
307 0x37, 0x25, 0xea, 0x44, 0x01, 0x00, 0x00,
308}
diff --git a/vendor/google.golang.org/appengine/internal/base/api_base.proto b/vendor/google.golang.org/appengine/internal/base/api_base.proto
new file mode 100644
index 0000000..56cd7a3
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/base/api_base.proto
@@ -0,0 +1,33 @@
1// Built-in base types for API calls. Primarily useful as return types.
2
3syntax = "proto2";
4option go_package = "base";
5
6package appengine.base;
7
8message StringProto {
9 required string value = 1;
10}
11
12message Integer32Proto {
13 required int32 value = 1;
14}
15
16message Integer64Proto {
17 required int64 value = 1;
18}
19
20message BoolProto {
21 required bool value = 1;
22}
23
24message DoubleProto {
25 required double value = 1;
26}
27
28message BytesProto {
29 required bytes value = 1 [ctype=CORD];
30}
31
32message VoidProto {
33}
diff --git a/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go
new file mode 100644
index 0000000..2fb7482
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go
@@ -0,0 +1,4367 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/datastore/datastore_v3.proto
3
4package datastore
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type Property_Meaning int32
22
23const (
24 Property_NO_MEANING Property_Meaning = 0
25 Property_BLOB Property_Meaning = 14
26 Property_TEXT Property_Meaning = 15
27 Property_BYTESTRING Property_Meaning = 16
28 Property_ATOM_CATEGORY Property_Meaning = 1
29 Property_ATOM_LINK Property_Meaning = 2
30 Property_ATOM_TITLE Property_Meaning = 3
31 Property_ATOM_CONTENT Property_Meaning = 4
32 Property_ATOM_SUMMARY Property_Meaning = 5
33 Property_ATOM_AUTHOR Property_Meaning = 6
34 Property_GD_WHEN Property_Meaning = 7
35 Property_GD_EMAIL Property_Meaning = 8
36 Property_GEORSS_POINT Property_Meaning = 9
37 Property_GD_IM Property_Meaning = 10
38 Property_GD_PHONENUMBER Property_Meaning = 11
39 Property_GD_POSTALADDRESS Property_Meaning = 12
40 Property_GD_RATING Property_Meaning = 13
41 Property_BLOBKEY Property_Meaning = 17
42 Property_ENTITY_PROTO Property_Meaning = 19
43 Property_INDEX_VALUE Property_Meaning = 18
44)
45
46var Property_Meaning_name = map[int32]string{
47 0: "NO_MEANING",
48 14: "BLOB",
49 15: "TEXT",
50 16: "BYTESTRING",
51 1: "ATOM_CATEGORY",
52 2: "ATOM_LINK",
53 3: "ATOM_TITLE",
54 4: "ATOM_CONTENT",
55 5: "ATOM_SUMMARY",
56 6: "ATOM_AUTHOR",
57 7: "GD_WHEN",
58 8: "GD_EMAIL",
59 9: "GEORSS_POINT",
60 10: "GD_IM",
61 11: "GD_PHONENUMBER",
62 12: "GD_POSTALADDRESS",
63 13: "GD_RATING",
64 17: "BLOBKEY",
65 19: "ENTITY_PROTO",
66 18: "INDEX_VALUE",
67}
68var Property_Meaning_value = map[string]int32{
69 "NO_MEANING": 0,
70 "BLOB": 14,
71 "TEXT": 15,
72 "BYTESTRING": 16,
73 "ATOM_CATEGORY": 1,
74 "ATOM_LINK": 2,
75 "ATOM_TITLE": 3,
76 "ATOM_CONTENT": 4,
77 "ATOM_SUMMARY": 5,
78 "ATOM_AUTHOR": 6,
79 "GD_WHEN": 7,
80 "GD_EMAIL": 8,
81 "GEORSS_POINT": 9,
82 "GD_IM": 10,
83 "GD_PHONENUMBER": 11,
84 "GD_POSTALADDRESS": 12,
85 "GD_RATING": 13,
86 "BLOBKEY": 17,
87 "ENTITY_PROTO": 19,
88 "INDEX_VALUE": 18,
89}
90
91func (x Property_Meaning) Enum() *Property_Meaning {
92 p := new(Property_Meaning)
93 *p = x
94 return p
95}
96func (x Property_Meaning) String() string {
97 return proto.EnumName(Property_Meaning_name, int32(x))
98}
99func (x *Property_Meaning) UnmarshalJSON(data []byte) error {
100 value, err := proto.UnmarshalJSONEnum(Property_Meaning_value, data, "Property_Meaning")
101 if err != nil {
102 return err
103 }
104 *x = Property_Meaning(value)
105 return nil
106}
107func (Property_Meaning) EnumDescriptor() ([]byte, []int) {
108 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{2, 0}
109}
110
111type Property_FtsTokenizationOption int32
112
113const (
114 Property_HTML Property_FtsTokenizationOption = 1
115 Property_ATOM Property_FtsTokenizationOption = 2
116)
117
118var Property_FtsTokenizationOption_name = map[int32]string{
119 1: "HTML",
120 2: "ATOM",
121}
122var Property_FtsTokenizationOption_value = map[string]int32{
123 "HTML": 1,
124 "ATOM": 2,
125}
126
127func (x Property_FtsTokenizationOption) Enum() *Property_FtsTokenizationOption {
128 p := new(Property_FtsTokenizationOption)
129 *p = x
130 return p
131}
132func (x Property_FtsTokenizationOption) String() string {
133 return proto.EnumName(Property_FtsTokenizationOption_name, int32(x))
134}
135func (x *Property_FtsTokenizationOption) UnmarshalJSON(data []byte) error {
136 value, err := proto.UnmarshalJSONEnum(Property_FtsTokenizationOption_value, data, "Property_FtsTokenizationOption")
137 if err != nil {
138 return err
139 }
140 *x = Property_FtsTokenizationOption(value)
141 return nil
142}
143func (Property_FtsTokenizationOption) EnumDescriptor() ([]byte, []int) {
144 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{2, 1}
145}
146
147type EntityProto_Kind int32
148
149const (
150 EntityProto_GD_CONTACT EntityProto_Kind = 1
151 EntityProto_GD_EVENT EntityProto_Kind = 2
152 EntityProto_GD_MESSAGE EntityProto_Kind = 3
153)
154
155var EntityProto_Kind_name = map[int32]string{
156 1: "GD_CONTACT",
157 2: "GD_EVENT",
158 3: "GD_MESSAGE",
159}
160var EntityProto_Kind_value = map[string]int32{
161 "GD_CONTACT": 1,
162 "GD_EVENT": 2,
163 "GD_MESSAGE": 3,
164}
165
166func (x EntityProto_Kind) Enum() *EntityProto_Kind {
167 p := new(EntityProto_Kind)
168 *p = x
169 return p
170}
171func (x EntityProto_Kind) String() string {
172 return proto.EnumName(EntityProto_Kind_name, int32(x))
173}
174func (x *EntityProto_Kind) UnmarshalJSON(data []byte) error {
175 value, err := proto.UnmarshalJSONEnum(EntityProto_Kind_value, data, "EntityProto_Kind")
176 if err != nil {
177 return err
178 }
179 *x = EntityProto_Kind(value)
180 return nil
181}
182func (EntityProto_Kind) EnumDescriptor() ([]byte, []int) {
183 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{6, 0}
184}
185
186type Index_Property_Direction int32
187
188const (
189 Index_Property_ASCENDING Index_Property_Direction = 1
190 Index_Property_DESCENDING Index_Property_Direction = 2
191)
192
193var Index_Property_Direction_name = map[int32]string{
194 1: "ASCENDING",
195 2: "DESCENDING",
196}
197var Index_Property_Direction_value = map[string]int32{
198 "ASCENDING": 1,
199 "DESCENDING": 2,
200}
201
202func (x Index_Property_Direction) Enum() *Index_Property_Direction {
203 p := new(Index_Property_Direction)
204 *p = x
205 return p
206}
207func (x Index_Property_Direction) String() string {
208 return proto.EnumName(Index_Property_Direction_name, int32(x))
209}
210func (x *Index_Property_Direction) UnmarshalJSON(data []byte) error {
211 value, err := proto.UnmarshalJSONEnum(Index_Property_Direction_value, data, "Index_Property_Direction")
212 if err != nil {
213 return err
214 }
215 *x = Index_Property_Direction(value)
216 return nil
217}
218func (Index_Property_Direction) EnumDescriptor() ([]byte, []int) {
219 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{8, 0, 0}
220}
221
222type CompositeIndex_State int32
223
224const (
225 CompositeIndex_WRITE_ONLY CompositeIndex_State = 1
226 CompositeIndex_READ_WRITE CompositeIndex_State = 2
227 CompositeIndex_DELETED CompositeIndex_State = 3
228 CompositeIndex_ERROR CompositeIndex_State = 4
229)
230
231var CompositeIndex_State_name = map[int32]string{
232 1: "WRITE_ONLY",
233 2: "READ_WRITE",
234 3: "DELETED",
235 4: "ERROR",
236}
237var CompositeIndex_State_value = map[string]int32{
238 "WRITE_ONLY": 1,
239 "READ_WRITE": 2,
240 "DELETED": 3,
241 "ERROR": 4,
242}
243
244func (x CompositeIndex_State) Enum() *CompositeIndex_State {
245 p := new(CompositeIndex_State)
246 *p = x
247 return p
248}
249func (x CompositeIndex_State) String() string {
250 return proto.EnumName(CompositeIndex_State_name, int32(x))
251}
252func (x *CompositeIndex_State) UnmarshalJSON(data []byte) error {
253 value, err := proto.UnmarshalJSONEnum(CompositeIndex_State_value, data, "CompositeIndex_State")
254 if err != nil {
255 return err
256 }
257 *x = CompositeIndex_State(value)
258 return nil
259}
260func (CompositeIndex_State) EnumDescriptor() ([]byte, []int) {
261 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{9, 0}
262}
263
264type Snapshot_Status int32
265
266const (
267 Snapshot_INACTIVE Snapshot_Status = 0
268 Snapshot_ACTIVE Snapshot_Status = 1
269)
270
271var Snapshot_Status_name = map[int32]string{
272 0: "INACTIVE",
273 1: "ACTIVE",
274}
275var Snapshot_Status_value = map[string]int32{
276 "INACTIVE": 0,
277 "ACTIVE": 1,
278}
279
280func (x Snapshot_Status) Enum() *Snapshot_Status {
281 p := new(Snapshot_Status)
282 *p = x
283 return p
284}
285func (x Snapshot_Status) String() string {
286 return proto.EnumName(Snapshot_Status_name, int32(x))
287}
288func (x *Snapshot_Status) UnmarshalJSON(data []byte) error {
289 value, err := proto.UnmarshalJSONEnum(Snapshot_Status_value, data, "Snapshot_Status")
290 if err != nil {
291 return err
292 }
293 *x = Snapshot_Status(value)
294 return nil
295}
296func (Snapshot_Status) EnumDescriptor() ([]byte, []int) {
297 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{12, 0}
298}
299
300type Query_Hint int32
301
302const (
303 Query_ORDER_FIRST Query_Hint = 1
304 Query_ANCESTOR_FIRST Query_Hint = 2
305 Query_FILTER_FIRST Query_Hint = 3
306)
307
308var Query_Hint_name = map[int32]string{
309 1: "ORDER_FIRST",
310 2: "ANCESTOR_FIRST",
311 3: "FILTER_FIRST",
312}
313var Query_Hint_value = map[string]int32{
314 "ORDER_FIRST": 1,
315 "ANCESTOR_FIRST": 2,
316 "FILTER_FIRST": 3,
317}
318
319func (x Query_Hint) Enum() *Query_Hint {
320 p := new(Query_Hint)
321 *p = x
322 return p
323}
324func (x Query_Hint) String() string {
325 return proto.EnumName(Query_Hint_name, int32(x))
326}
327func (x *Query_Hint) UnmarshalJSON(data []byte) error {
328 value, err := proto.UnmarshalJSONEnum(Query_Hint_value, data, "Query_Hint")
329 if err != nil {
330 return err
331 }
332 *x = Query_Hint(value)
333 return nil
334}
335func (Query_Hint) EnumDescriptor() ([]byte, []int) {
336 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 0}
337}
338
339type Query_Filter_Operator int32
340
341const (
342 Query_Filter_LESS_THAN Query_Filter_Operator = 1
343 Query_Filter_LESS_THAN_OR_EQUAL Query_Filter_Operator = 2
344 Query_Filter_GREATER_THAN Query_Filter_Operator = 3
345 Query_Filter_GREATER_THAN_OR_EQUAL Query_Filter_Operator = 4
346 Query_Filter_EQUAL Query_Filter_Operator = 5
347 Query_Filter_IN Query_Filter_Operator = 6
348 Query_Filter_EXISTS Query_Filter_Operator = 7
349)
350
351var Query_Filter_Operator_name = map[int32]string{
352 1: "LESS_THAN",
353 2: "LESS_THAN_OR_EQUAL",
354 3: "GREATER_THAN",
355 4: "GREATER_THAN_OR_EQUAL",
356 5: "EQUAL",
357 6: "IN",
358 7: "EXISTS",
359}
360var Query_Filter_Operator_value = map[string]int32{
361 "LESS_THAN": 1,
362 "LESS_THAN_OR_EQUAL": 2,
363 "GREATER_THAN": 3,
364 "GREATER_THAN_OR_EQUAL": 4,
365 "EQUAL": 5,
366 "IN": 6,
367 "EXISTS": 7,
368}
369
370func (x Query_Filter_Operator) Enum() *Query_Filter_Operator {
371 p := new(Query_Filter_Operator)
372 *p = x
373 return p
374}
375func (x Query_Filter_Operator) String() string {
376 return proto.EnumName(Query_Filter_Operator_name, int32(x))
377}
378func (x *Query_Filter_Operator) UnmarshalJSON(data []byte) error {
379 value, err := proto.UnmarshalJSONEnum(Query_Filter_Operator_value, data, "Query_Filter_Operator")
380 if err != nil {
381 return err
382 }
383 *x = Query_Filter_Operator(value)
384 return nil
385}
386func (Query_Filter_Operator) EnumDescriptor() ([]byte, []int) {
387 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 0, 0}
388}
389
390type Query_Order_Direction int32
391
392const (
393 Query_Order_ASCENDING Query_Order_Direction = 1
394 Query_Order_DESCENDING Query_Order_Direction = 2
395)
396
397var Query_Order_Direction_name = map[int32]string{
398 1: "ASCENDING",
399 2: "DESCENDING",
400}
401var Query_Order_Direction_value = map[string]int32{
402 "ASCENDING": 1,
403 "DESCENDING": 2,
404}
405
406func (x Query_Order_Direction) Enum() *Query_Order_Direction {
407 p := new(Query_Order_Direction)
408 *p = x
409 return p
410}
411func (x Query_Order_Direction) String() string {
412 return proto.EnumName(Query_Order_Direction_name, int32(x))
413}
414func (x *Query_Order_Direction) UnmarshalJSON(data []byte) error {
415 value, err := proto.UnmarshalJSONEnum(Query_Order_Direction_value, data, "Query_Order_Direction")
416 if err != nil {
417 return err
418 }
419 *x = Query_Order_Direction(value)
420 return nil
421}
422func (Query_Order_Direction) EnumDescriptor() ([]byte, []int) {
423 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 1, 0}
424}
425
426type Error_ErrorCode int32
427
428const (
429 Error_BAD_REQUEST Error_ErrorCode = 1
430 Error_CONCURRENT_TRANSACTION Error_ErrorCode = 2
431 Error_INTERNAL_ERROR Error_ErrorCode = 3
432 Error_NEED_INDEX Error_ErrorCode = 4
433 Error_TIMEOUT Error_ErrorCode = 5
434 Error_PERMISSION_DENIED Error_ErrorCode = 6
435 Error_BIGTABLE_ERROR Error_ErrorCode = 7
436 Error_COMMITTED_BUT_STILL_APPLYING Error_ErrorCode = 8
437 Error_CAPABILITY_DISABLED Error_ErrorCode = 9
438 Error_TRY_ALTERNATE_BACKEND Error_ErrorCode = 10
439 Error_SAFE_TIME_TOO_OLD Error_ErrorCode = 11
440)
441
442var Error_ErrorCode_name = map[int32]string{
443 1: "BAD_REQUEST",
444 2: "CONCURRENT_TRANSACTION",
445 3: "INTERNAL_ERROR",
446 4: "NEED_INDEX",
447 5: "TIMEOUT",
448 6: "PERMISSION_DENIED",
449 7: "BIGTABLE_ERROR",
450 8: "COMMITTED_BUT_STILL_APPLYING",
451 9: "CAPABILITY_DISABLED",
452 10: "TRY_ALTERNATE_BACKEND",
453 11: "SAFE_TIME_TOO_OLD",
454}
455var Error_ErrorCode_value = map[string]int32{
456 "BAD_REQUEST": 1,
457 "CONCURRENT_TRANSACTION": 2,
458 "INTERNAL_ERROR": 3,
459 "NEED_INDEX": 4,
460 "TIMEOUT": 5,
461 "PERMISSION_DENIED": 6,
462 "BIGTABLE_ERROR": 7,
463 "COMMITTED_BUT_STILL_APPLYING": 8,
464 "CAPABILITY_DISABLED": 9,
465 "TRY_ALTERNATE_BACKEND": 10,
466 "SAFE_TIME_TOO_OLD": 11,
467}
468
469func (x Error_ErrorCode) Enum() *Error_ErrorCode {
470 p := new(Error_ErrorCode)
471 *p = x
472 return p
473}
474func (x Error_ErrorCode) String() string {
475 return proto.EnumName(Error_ErrorCode_name, int32(x))
476}
477func (x *Error_ErrorCode) UnmarshalJSON(data []byte) error {
478 value, err := proto.UnmarshalJSONEnum(Error_ErrorCode_value, data, "Error_ErrorCode")
479 if err != nil {
480 return err
481 }
482 *x = Error_ErrorCode(value)
483 return nil
484}
485func (Error_ErrorCode) EnumDescriptor() ([]byte, []int) {
486 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{19, 0}
487}
488
489type PutRequest_AutoIdPolicy int32
490
491const (
492 PutRequest_CURRENT PutRequest_AutoIdPolicy = 0
493 PutRequest_SEQUENTIAL PutRequest_AutoIdPolicy = 1
494)
495
496var PutRequest_AutoIdPolicy_name = map[int32]string{
497 0: "CURRENT",
498 1: "SEQUENTIAL",
499}
500var PutRequest_AutoIdPolicy_value = map[string]int32{
501 "CURRENT": 0,
502 "SEQUENTIAL": 1,
503}
504
505func (x PutRequest_AutoIdPolicy) Enum() *PutRequest_AutoIdPolicy {
506 p := new(PutRequest_AutoIdPolicy)
507 *p = x
508 return p
509}
510func (x PutRequest_AutoIdPolicy) String() string {
511 return proto.EnumName(PutRequest_AutoIdPolicy_name, int32(x))
512}
513func (x *PutRequest_AutoIdPolicy) UnmarshalJSON(data []byte) error {
514 value, err := proto.UnmarshalJSONEnum(PutRequest_AutoIdPolicy_value, data, "PutRequest_AutoIdPolicy")
515 if err != nil {
516 return err
517 }
518 *x = PutRequest_AutoIdPolicy(value)
519 return nil
520}
521func (PutRequest_AutoIdPolicy) EnumDescriptor() ([]byte, []int) {
522 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{23, 0}
523}
524
525type BeginTransactionRequest_TransactionMode int32
526
527const (
528 BeginTransactionRequest_UNKNOWN BeginTransactionRequest_TransactionMode = 0
529 BeginTransactionRequest_READ_ONLY BeginTransactionRequest_TransactionMode = 1
530 BeginTransactionRequest_READ_WRITE BeginTransactionRequest_TransactionMode = 2
531)
532
533var BeginTransactionRequest_TransactionMode_name = map[int32]string{
534 0: "UNKNOWN",
535 1: "READ_ONLY",
536 2: "READ_WRITE",
537}
538var BeginTransactionRequest_TransactionMode_value = map[string]int32{
539 "UNKNOWN": 0,
540 "READ_ONLY": 1,
541 "READ_WRITE": 2,
542}
543
544func (x BeginTransactionRequest_TransactionMode) Enum() *BeginTransactionRequest_TransactionMode {
545 p := new(BeginTransactionRequest_TransactionMode)
546 *p = x
547 return p
548}
549func (x BeginTransactionRequest_TransactionMode) String() string {
550 return proto.EnumName(BeginTransactionRequest_TransactionMode_name, int32(x))
551}
552func (x *BeginTransactionRequest_TransactionMode) UnmarshalJSON(data []byte) error {
553 value, err := proto.UnmarshalJSONEnum(BeginTransactionRequest_TransactionMode_value, data, "BeginTransactionRequest_TransactionMode")
554 if err != nil {
555 return err
556 }
557 *x = BeginTransactionRequest_TransactionMode(value)
558 return nil
559}
560func (BeginTransactionRequest_TransactionMode) EnumDescriptor() ([]byte, []int) {
561 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{36, 0}
562}
563
564type Action struct {
565 XXX_NoUnkeyedLiteral struct{} `json:"-"`
566 XXX_unrecognized []byte `json:"-"`
567 XXX_sizecache int32 `json:"-"`
568}
569
570func (m *Action) Reset() { *m = Action{} }
571func (m *Action) String() string { return proto.CompactTextString(m) }
572func (*Action) ProtoMessage() {}
573func (*Action) Descriptor() ([]byte, []int) {
574 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{0}
575}
576func (m *Action) XXX_Unmarshal(b []byte) error {
577 return xxx_messageInfo_Action.Unmarshal(m, b)
578}
579func (m *Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
580 return xxx_messageInfo_Action.Marshal(b, m, deterministic)
581}
582func (dst *Action) XXX_Merge(src proto.Message) {
583 xxx_messageInfo_Action.Merge(dst, src)
584}
585func (m *Action) XXX_Size() int {
586 return xxx_messageInfo_Action.Size(m)
587}
588func (m *Action) XXX_DiscardUnknown() {
589 xxx_messageInfo_Action.DiscardUnknown(m)
590}
591
592var xxx_messageInfo_Action proto.InternalMessageInfo
593
594type PropertyValue struct {
595 Int64Value *int64 `protobuf:"varint,1,opt,name=int64Value" json:"int64Value,omitempty"`
596 BooleanValue *bool `protobuf:"varint,2,opt,name=booleanValue" json:"booleanValue,omitempty"`
597 StringValue *string `protobuf:"bytes,3,opt,name=stringValue" json:"stringValue,omitempty"`
598 DoubleValue *float64 `protobuf:"fixed64,4,opt,name=doubleValue" json:"doubleValue,omitempty"`
599 Pointvalue *PropertyValue_PointValue `protobuf:"group,5,opt,name=PointValue,json=pointvalue" json:"pointvalue,omitempty"`
600 Uservalue *PropertyValue_UserValue `protobuf:"group,8,opt,name=UserValue,json=uservalue" json:"uservalue,omitempty"`
601 Referencevalue *PropertyValue_ReferenceValue `protobuf:"group,12,opt,name=ReferenceValue,json=referencevalue" json:"referencevalue,omitempty"`
602 XXX_NoUnkeyedLiteral struct{} `json:"-"`
603 XXX_unrecognized []byte `json:"-"`
604 XXX_sizecache int32 `json:"-"`
605}
606
607func (m *PropertyValue) Reset() { *m = PropertyValue{} }
608func (m *PropertyValue) String() string { return proto.CompactTextString(m) }
609func (*PropertyValue) ProtoMessage() {}
610func (*PropertyValue) Descriptor() ([]byte, []int) {
611 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1}
612}
613func (m *PropertyValue) XXX_Unmarshal(b []byte) error {
614 return xxx_messageInfo_PropertyValue.Unmarshal(m, b)
615}
616func (m *PropertyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
617 return xxx_messageInfo_PropertyValue.Marshal(b, m, deterministic)
618}
619func (dst *PropertyValue) XXX_Merge(src proto.Message) {
620 xxx_messageInfo_PropertyValue.Merge(dst, src)
621}
622func (m *PropertyValue) XXX_Size() int {
623 return xxx_messageInfo_PropertyValue.Size(m)
624}
625func (m *PropertyValue) XXX_DiscardUnknown() {
626 xxx_messageInfo_PropertyValue.DiscardUnknown(m)
627}
628
629var xxx_messageInfo_PropertyValue proto.InternalMessageInfo
630
631func (m *PropertyValue) GetInt64Value() int64 {
632 if m != nil && m.Int64Value != nil {
633 return *m.Int64Value
634 }
635 return 0
636}
637
638func (m *PropertyValue) GetBooleanValue() bool {
639 if m != nil && m.BooleanValue != nil {
640 return *m.BooleanValue
641 }
642 return false
643}
644
645func (m *PropertyValue) GetStringValue() string {
646 if m != nil && m.StringValue != nil {
647 return *m.StringValue
648 }
649 return ""
650}
651
652func (m *PropertyValue) GetDoubleValue() float64 {
653 if m != nil && m.DoubleValue != nil {
654 return *m.DoubleValue
655 }
656 return 0
657}
658
659func (m *PropertyValue) GetPointvalue() *PropertyValue_PointValue {
660 if m != nil {
661 return m.Pointvalue
662 }
663 return nil
664}
665
666func (m *PropertyValue) GetUservalue() *PropertyValue_UserValue {
667 if m != nil {
668 return m.Uservalue
669 }
670 return nil
671}
672
673func (m *PropertyValue) GetReferencevalue() *PropertyValue_ReferenceValue {
674 if m != nil {
675 return m.Referencevalue
676 }
677 return nil
678}
679
680type PropertyValue_PointValue struct {
681 X *float64 `protobuf:"fixed64,6,req,name=x" json:"x,omitempty"`
682 Y *float64 `protobuf:"fixed64,7,req,name=y" json:"y,omitempty"`
683 XXX_NoUnkeyedLiteral struct{} `json:"-"`
684 XXX_unrecognized []byte `json:"-"`
685 XXX_sizecache int32 `json:"-"`
686}
687
688func (m *PropertyValue_PointValue) Reset() { *m = PropertyValue_PointValue{} }
689func (m *PropertyValue_PointValue) String() string { return proto.CompactTextString(m) }
690func (*PropertyValue_PointValue) ProtoMessage() {}
691func (*PropertyValue_PointValue) Descriptor() ([]byte, []int) {
692 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 0}
693}
694func (m *PropertyValue_PointValue) XXX_Unmarshal(b []byte) error {
695 return xxx_messageInfo_PropertyValue_PointValue.Unmarshal(m, b)
696}
697func (m *PropertyValue_PointValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
698 return xxx_messageInfo_PropertyValue_PointValue.Marshal(b, m, deterministic)
699}
700func (dst *PropertyValue_PointValue) XXX_Merge(src proto.Message) {
701 xxx_messageInfo_PropertyValue_PointValue.Merge(dst, src)
702}
703func (m *PropertyValue_PointValue) XXX_Size() int {
704 return xxx_messageInfo_PropertyValue_PointValue.Size(m)
705}
706func (m *PropertyValue_PointValue) XXX_DiscardUnknown() {
707 xxx_messageInfo_PropertyValue_PointValue.DiscardUnknown(m)
708}
709
710var xxx_messageInfo_PropertyValue_PointValue proto.InternalMessageInfo
711
712func (m *PropertyValue_PointValue) GetX() float64 {
713 if m != nil && m.X != nil {
714 return *m.X
715 }
716 return 0
717}
718
719func (m *PropertyValue_PointValue) GetY() float64 {
720 if m != nil && m.Y != nil {
721 return *m.Y
722 }
723 return 0
724}
725
726type PropertyValue_UserValue struct {
727 Email *string `protobuf:"bytes,9,req,name=email" json:"email,omitempty"`
728 AuthDomain *string `protobuf:"bytes,10,req,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
729 Nickname *string `protobuf:"bytes,11,opt,name=nickname" json:"nickname,omitempty"`
730 FederatedIdentity *string `protobuf:"bytes,21,opt,name=federated_identity,json=federatedIdentity" json:"federated_identity,omitempty"`
731 FederatedProvider *string `protobuf:"bytes,22,opt,name=federated_provider,json=federatedProvider" json:"federated_provider,omitempty"`
732 XXX_NoUnkeyedLiteral struct{} `json:"-"`
733 XXX_unrecognized []byte `json:"-"`
734 XXX_sizecache int32 `json:"-"`
735}
736
737func (m *PropertyValue_UserValue) Reset() { *m = PropertyValue_UserValue{} }
738func (m *PropertyValue_UserValue) String() string { return proto.CompactTextString(m) }
739func (*PropertyValue_UserValue) ProtoMessage() {}
740func (*PropertyValue_UserValue) Descriptor() ([]byte, []int) {
741 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 1}
742}
743func (m *PropertyValue_UserValue) XXX_Unmarshal(b []byte) error {
744 return xxx_messageInfo_PropertyValue_UserValue.Unmarshal(m, b)
745}
746func (m *PropertyValue_UserValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
747 return xxx_messageInfo_PropertyValue_UserValue.Marshal(b, m, deterministic)
748}
749func (dst *PropertyValue_UserValue) XXX_Merge(src proto.Message) {
750 xxx_messageInfo_PropertyValue_UserValue.Merge(dst, src)
751}
752func (m *PropertyValue_UserValue) XXX_Size() int {
753 return xxx_messageInfo_PropertyValue_UserValue.Size(m)
754}
755func (m *PropertyValue_UserValue) XXX_DiscardUnknown() {
756 xxx_messageInfo_PropertyValue_UserValue.DiscardUnknown(m)
757}
758
759var xxx_messageInfo_PropertyValue_UserValue proto.InternalMessageInfo
760
761func (m *PropertyValue_UserValue) GetEmail() string {
762 if m != nil && m.Email != nil {
763 return *m.Email
764 }
765 return ""
766}
767
768func (m *PropertyValue_UserValue) GetAuthDomain() string {
769 if m != nil && m.AuthDomain != nil {
770 return *m.AuthDomain
771 }
772 return ""
773}
774
775func (m *PropertyValue_UserValue) GetNickname() string {
776 if m != nil && m.Nickname != nil {
777 return *m.Nickname
778 }
779 return ""
780}
781
782func (m *PropertyValue_UserValue) GetFederatedIdentity() string {
783 if m != nil && m.FederatedIdentity != nil {
784 return *m.FederatedIdentity
785 }
786 return ""
787}
788
789func (m *PropertyValue_UserValue) GetFederatedProvider() string {
790 if m != nil && m.FederatedProvider != nil {
791 return *m.FederatedProvider
792 }
793 return ""
794}
795
796type PropertyValue_ReferenceValue struct {
797 App *string `protobuf:"bytes,13,req,name=app" json:"app,omitempty"`
798 NameSpace *string `protobuf:"bytes,20,opt,name=name_space,json=nameSpace" json:"name_space,omitempty"`
799 Pathelement []*PropertyValue_ReferenceValue_PathElement `protobuf:"group,14,rep,name=PathElement,json=pathelement" json:"pathelement,omitempty"`
800 XXX_NoUnkeyedLiteral struct{} `json:"-"`
801 XXX_unrecognized []byte `json:"-"`
802 XXX_sizecache int32 `json:"-"`
803}
804
805func (m *PropertyValue_ReferenceValue) Reset() { *m = PropertyValue_ReferenceValue{} }
806func (m *PropertyValue_ReferenceValue) String() string { return proto.CompactTextString(m) }
807func (*PropertyValue_ReferenceValue) ProtoMessage() {}
808func (*PropertyValue_ReferenceValue) Descriptor() ([]byte, []int) {
809 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 2}
810}
811func (m *PropertyValue_ReferenceValue) XXX_Unmarshal(b []byte) error {
812 return xxx_messageInfo_PropertyValue_ReferenceValue.Unmarshal(m, b)
813}
814func (m *PropertyValue_ReferenceValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
815 return xxx_messageInfo_PropertyValue_ReferenceValue.Marshal(b, m, deterministic)
816}
817func (dst *PropertyValue_ReferenceValue) XXX_Merge(src proto.Message) {
818 xxx_messageInfo_PropertyValue_ReferenceValue.Merge(dst, src)
819}
820func (m *PropertyValue_ReferenceValue) XXX_Size() int {
821 return xxx_messageInfo_PropertyValue_ReferenceValue.Size(m)
822}
823func (m *PropertyValue_ReferenceValue) XXX_DiscardUnknown() {
824 xxx_messageInfo_PropertyValue_ReferenceValue.DiscardUnknown(m)
825}
826
827var xxx_messageInfo_PropertyValue_ReferenceValue proto.InternalMessageInfo
828
829func (m *PropertyValue_ReferenceValue) GetApp() string {
830 if m != nil && m.App != nil {
831 return *m.App
832 }
833 return ""
834}
835
836func (m *PropertyValue_ReferenceValue) GetNameSpace() string {
837 if m != nil && m.NameSpace != nil {
838 return *m.NameSpace
839 }
840 return ""
841}
842
843func (m *PropertyValue_ReferenceValue) GetPathelement() []*PropertyValue_ReferenceValue_PathElement {
844 if m != nil {
845 return m.Pathelement
846 }
847 return nil
848}
849
850type PropertyValue_ReferenceValue_PathElement struct {
851 Type *string `protobuf:"bytes,15,req,name=type" json:"type,omitempty"`
852 Id *int64 `protobuf:"varint,16,opt,name=id" json:"id,omitempty"`
853 Name *string `protobuf:"bytes,17,opt,name=name" json:"name,omitempty"`
854 XXX_NoUnkeyedLiteral struct{} `json:"-"`
855 XXX_unrecognized []byte `json:"-"`
856 XXX_sizecache int32 `json:"-"`
857}
858
859func (m *PropertyValue_ReferenceValue_PathElement) Reset() {
860 *m = PropertyValue_ReferenceValue_PathElement{}
861}
862func (m *PropertyValue_ReferenceValue_PathElement) String() string { return proto.CompactTextString(m) }
863func (*PropertyValue_ReferenceValue_PathElement) ProtoMessage() {}
864func (*PropertyValue_ReferenceValue_PathElement) Descriptor() ([]byte, []int) {
865 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 2, 0}
866}
867func (m *PropertyValue_ReferenceValue_PathElement) XXX_Unmarshal(b []byte) error {
868 return xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Unmarshal(m, b)
869}
870func (m *PropertyValue_ReferenceValue_PathElement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
871 return xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Marshal(b, m, deterministic)
872}
873func (dst *PropertyValue_ReferenceValue_PathElement) XXX_Merge(src proto.Message) {
874 xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Merge(dst, src)
875}
876func (m *PropertyValue_ReferenceValue_PathElement) XXX_Size() int {
877 return xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Size(m)
878}
879func (m *PropertyValue_ReferenceValue_PathElement) XXX_DiscardUnknown() {
880 xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.DiscardUnknown(m)
881}
882
883var xxx_messageInfo_PropertyValue_ReferenceValue_PathElement proto.InternalMessageInfo
884
885func (m *PropertyValue_ReferenceValue_PathElement) GetType() string {
886 if m != nil && m.Type != nil {
887 return *m.Type
888 }
889 return ""
890}
891
892func (m *PropertyValue_ReferenceValue_PathElement) GetId() int64 {
893 if m != nil && m.Id != nil {
894 return *m.Id
895 }
896 return 0
897}
898
899func (m *PropertyValue_ReferenceValue_PathElement) GetName() string {
900 if m != nil && m.Name != nil {
901 return *m.Name
902 }
903 return ""
904}
905
906type Property struct {
907 Meaning *Property_Meaning `protobuf:"varint,1,opt,name=meaning,enum=appengine.Property_Meaning,def=0" json:"meaning,omitempty"`
908 MeaningUri *string `protobuf:"bytes,2,opt,name=meaning_uri,json=meaningUri" json:"meaning_uri,omitempty"`
909 Name *string `protobuf:"bytes,3,req,name=name" json:"name,omitempty"`
910 Value *PropertyValue `protobuf:"bytes,5,req,name=value" json:"value,omitempty"`
911 Multiple *bool `protobuf:"varint,4,req,name=multiple" json:"multiple,omitempty"`
912 Searchable *bool `protobuf:"varint,6,opt,name=searchable,def=0" json:"searchable,omitempty"`
913 FtsTokenizationOption *Property_FtsTokenizationOption `protobuf:"varint,8,opt,name=fts_tokenization_option,json=ftsTokenizationOption,enum=appengine.Property_FtsTokenizationOption" json:"fts_tokenization_option,omitempty"`
914 Locale *string `protobuf:"bytes,9,opt,name=locale,def=en" json:"locale,omitempty"`
915 XXX_NoUnkeyedLiteral struct{} `json:"-"`
916 XXX_unrecognized []byte `json:"-"`
917 XXX_sizecache int32 `json:"-"`
918}
919
920func (m *Property) Reset() { *m = Property{} }
921func (m *Property) String() string { return proto.CompactTextString(m) }
922func (*Property) ProtoMessage() {}
923func (*Property) Descriptor() ([]byte, []int) {
924 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{2}
925}
926func (m *Property) XXX_Unmarshal(b []byte) error {
927 return xxx_messageInfo_Property.Unmarshal(m, b)
928}
929func (m *Property) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
930 return xxx_messageInfo_Property.Marshal(b, m, deterministic)
931}
932func (dst *Property) XXX_Merge(src proto.Message) {
933 xxx_messageInfo_Property.Merge(dst, src)
934}
935func (m *Property) XXX_Size() int {
936 return xxx_messageInfo_Property.Size(m)
937}
938func (m *Property) XXX_DiscardUnknown() {
939 xxx_messageInfo_Property.DiscardUnknown(m)
940}
941
942var xxx_messageInfo_Property proto.InternalMessageInfo
943
944const Default_Property_Meaning Property_Meaning = Property_NO_MEANING
945const Default_Property_Searchable bool = false
946const Default_Property_Locale string = "en"
947
948func (m *Property) GetMeaning() Property_Meaning {
949 if m != nil && m.Meaning != nil {
950 return *m.Meaning
951 }
952 return Default_Property_Meaning
953}
954
955func (m *Property) GetMeaningUri() string {
956 if m != nil && m.MeaningUri != nil {
957 return *m.MeaningUri
958 }
959 return ""
960}
961
962func (m *Property) GetName() string {
963 if m != nil && m.Name != nil {
964 return *m.Name
965 }
966 return ""
967}
968
969func (m *Property) GetValue() *PropertyValue {
970 if m != nil {
971 return m.Value
972 }
973 return nil
974}
975
976func (m *Property) GetMultiple() bool {
977 if m != nil && m.Multiple != nil {
978 return *m.Multiple
979 }
980 return false
981}
982
983func (m *Property) GetSearchable() bool {
984 if m != nil && m.Searchable != nil {
985 return *m.Searchable
986 }
987 return Default_Property_Searchable
988}
989
990func (m *Property) GetFtsTokenizationOption() Property_FtsTokenizationOption {
991 if m != nil && m.FtsTokenizationOption != nil {
992 return *m.FtsTokenizationOption
993 }
994 return Property_HTML
995}
996
997func (m *Property) GetLocale() string {
998 if m != nil && m.Locale != nil {
999 return *m.Locale
1000 }
1001 return Default_Property_Locale
1002}
1003
1004type Path struct {
1005 Element []*Path_Element `protobuf:"group,1,rep,name=Element,json=element" json:"element,omitempty"`
1006 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1007 XXX_unrecognized []byte `json:"-"`
1008 XXX_sizecache int32 `json:"-"`
1009}
1010
1011func (m *Path) Reset() { *m = Path{} }
1012func (m *Path) String() string { return proto.CompactTextString(m) }
1013func (*Path) ProtoMessage() {}
1014func (*Path) Descriptor() ([]byte, []int) {
1015 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{3}
1016}
1017func (m *Path) XXX_Unmarshal(b []byte) error {
1018 return xxx_messageInfo_Path.Unmarshal(m, b)
1019}
1020func (m *Path) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1021 return xxx_messageInfo_Path.Marshal(b, m, deterministic)
1022}
1023func (dst *Path) XXX_Merge(src proto.Message) {
1024 xxx_messageInfo_Path.Merge(dst, src)
1025}
1026func (m *Path) XXX_Size() int {
1027 return xxx_messageInfo_Path.Size(m)
1028}
1029func (m *Path) XXX_DiscardUnknown() {
1030 xxx_messageInfo_Path.DiscardUnknown(m)
1031}
1032
1033var xxx_messageInfo_Path proto.InternalMessageInfo
1034
1035func (m *Path) GetElement() []*Path_Element {
1036 if m != nil {
1037 return m.Element
1038 }
1039 return nil
1040}
1041
1042type Path_Element struct {
1043 Type *string `protobuf:"bytes,2,req,name=type" json:"type,omitempty"`
1044 Id *int64 `protobuf:"varint,3,opt,name=id" json:"id,omitempty"`
1045 Name *string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
1046 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1047 XXX_unrecognized []byte `json:"-"`
1048 XXX_sizecache int32 `json:"-"`
1049}
1050
1051func (m *Path_Element) Reset() { *m = Path_Element{} }
1052func (m *Path_Element) String() string { return proto.CompactTextString(m) }
1053func (*Path_Element) ProtoMessage() {}
1054func (*Path_Element) Descriptor() ([]byte, []int) {
1055 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{3, 0}
1056}
1057func (m *Path_Element) XXX_Unmarshal(b []byte) error {
1058 return xxx_messageInfo_Path_Element.Unmarshal(m, b)
1059}
1060func (m *Path_Element) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1061 return xxx_messageInfo_Path_Element.Marshal(b, m, deterministic)
1062}
1063func (dst *Path_Element) XXX_Merge(src proto.Message) {
1064 xxx_messageInfo_Path_Element.Merge(dst, src)
1065}
1066func (m *Path_Element) XXX_Size() int {
1067 return xxx_messageInfo_Path_Element.Size(m)
1068}
1069func (m *Path_Element) XXX_DiscardUnknown() {
1070 xxx_messageInfo_Path_Element.DiscardUnknown(m)
1071}
1072
1073var xxx_messageInfo_Path_Element proto.InternalMessageInfo
1074
1075func (m *Path_Element) GetType() string {
1076 if m != nil && m.Type != nil {
1077 return *m.Type
1078 }
1079 return ""
1080}
1081
1082func (m *Path_Element) GetId() int64 {
1083 if m != nil && m.Id != nil {
1084 return *m.Id
1085 }
1086 return 0
1087}
1088
1089func (m *Path_Element) GetName() string {
1090 if m != nil && m.Name != nil {
1091 return *m.Name
1092 }
1093 return ""
1094}
1095
1096type Reference struct {
1097 App *string `protobuf:"bytes,13,req,name=app" json:"app,omitempty"`
1098 NameSpace *string `protobuf:"bytes,20,opt,name=name_space,json=nameSpace" json:"name_space,omitempty"`
1099 Path *Path `protobuf:"bytes,14,req,name=path" json:"path,omitempty"`
1100 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1101 XXX_unrecognized []byte `json:"-"`
1102 XXX_sizecache int32 `json:"-"`
1103}
1104
1105func (m *Reference) Reset() { *m = Reference{} }
1106func (m *Reference) String() string { return proto.CompactTextString(m) }
1107func (*Reference) ProtoMessage() {}
1108func (*Reference) Descriptor() ([]byte, []int) {
1109 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{4}
1110}
1111func (m *Reference) XXX_Unmarshal(b []byte) error {
1112 return xxx_messageInfo_Reference.Unmarshal(m, b)
1113}
1114func (m *Reference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1115 return xxx_messageInfo_Reference.Marshal(b, m, deterministic)
1116}
1117func (dst *Reference) XXX_Merge(src proto.Message) {
1118 xxx_messageInfo_Reference.Merge(dst, src)
1119}
1120func (m *Reference) XXX_Size() int {
1121 return xxx_messageInfo_Reference.Size(m)
1122}
1123func (m *Reference) XXX_DiscardUnknown() {
1124 xxx_messageInfo_Reference.DiscardUnknown(m)
1125}
1126
1127var xxx_messageInfo_Reference proto.InternalMessageInfo
1128
1129func (m *Reference) GetApp() string {
1130 if m != nil && m.App != nil {
1131 return *m.App
1132 }
1133 return ""
1134}
1135
1136func (m *Reference) GetNameSpace() string {
1137 if m != nil && m.NameSpace != nil {
1138 return *m.NameSpace
1139 }
1140 return ""
1141}
1142
1143func (m *Reference) GetPath() *Path {
1144 if m != nil {
1145 return m.Path
1146 }
1147 return nil
1148}
1149
1150type User struct {
1151 Email *string `protobuf:"bytes,1,req,name=email" json:"email,omitempty"`
1152 AuthDomain *string `protobuf:"bytes,2,req,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
1153 Nickname *string `protobuf:"bytes,3,opt,name=nickname" json:"nickname,omitempty"`
1154 FederatedIdentity *string `protobuf:"bytes,6,opt,name=federated_identity,json=federatedIdentity" json:"federated_identity,omitempty"`
1155 FederatedProvider *string `protobuf:"bytes,7,opt,name=federated_provider,json=federatedProvider" json:"federated_provider,omitempty"`
1156 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1157 XXX_unrecognized []byte `json:"-"`
1158 XXX_sizecache int32 `json:"-"`
1159}
1160
1161func (m *User) Reset() { *m = User{} }
1162func (m *User) String() string { return proto.CompactTextString(m) }
1163func (*User) ProtoMessage() {}
1164func (*User) Descriptor() ([]byte, []int) {
1165 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{5}
1166}
1167func (m *User) XXX_Unmarshal(b []byte) error {
1168 return xxx_messageInfo_User.Unmarshal(m, b)
1169}
1170func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1171 return xxx_messageInfo_User.Marshal(b, m, deterministic)
1172}
1173func (dst *User) XXX_Merge(src proto.Message) {
1174 xxx_messageInfo_User.Merge(dst, src)
1175}
1176func (m *User) XXX_Size() int {
1177 return xxx_messageInfo_User.Size(m)
1178}
1179func (m *User) XXX_DiscardUnknown() {
1180 xxx_messageInfo_User.DiscardUnknown(m)
1181}
1182
1183var xxx_messageInfo_User proto.InternalMessageInfo
1184
1185func (m *User) GetEmail() string {
1186 if m != nil && m.Email != nil {
1187 return *m.Email
1188 }
1189 return ""
1190}
1191
1192func (m *User) GetAuthDomain() string {
1193 if m != nil && m.AuthDomain != nil {
1194 return *m.AuthDomain
1195 }
1196 return ""
1197}
1198
1199func (m *User) GetNickname() string {
1200 if m != nil && m.Nickname != nil {
1201 return *m.Nickname
1202 }
1203 return ""
1204}
1205
1206func (m *User) GetFederatedIdentity() string {
1207 if m != nil && m.FederatedIdentity != nil {
1208 return *m.FederatedIdentity
1209 }
1210 return ""
1211}
1212
1213func (m *User) GetFederatedProvider() string {
1214 if m != nil && m.FederatedProvider != nil {
1215 return *m.FederatedProvider
1216 }
1217 return ""
1218}
1219
1220type EntityProto struct {
1221 Key *Reference `protobuf:"bytes,13,req,name=key" json:"key,omitempty"`
1222 EntityGroup *Path `protobuf:"bytes,16,req,name=entity_group,json=entityGroup" json:"entity_group,omitempty"`
1223 Owner *User `protobuf:"bytes,17,opt,name=owner" json:"owner,omitempty"`
1224 Kind *EntityProto_Kind `protobuf:"varint,4,opt,name=kind,enum=appengine.EntityProto_Kind" json:"kind,omitempty"`
1225 KindUri *string `protobuf:"bytes,5,opt,name=kind_uri,json=kindUri" json:"kind_uri,omitempty"`
1226 Property []*Property `protobuf:"bytes,14,rep,name=property" json:"property,omitempty"`
1227 RawProperty []*Property `protobuf:"bytes,15,rep,name=raw_property,json=rawProperty" json:"raw_property,omitempty"`
1228 Rank *int32 `protobuf:"varint,18,opt,name=rank" json:"rank,omitempty"`
1229 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1230 XXX_unrecognized []byte `json:"-"`
1231 XXX_sizecache int32 `json:"-"`
1232}
1233
1234func (m *EntityProto) Reset() { *m = EntityProto{} }
1235func (m *EntityProto) String() string { return proto.CompactTextString(m) }
1236func (*EntityProto) ProtoMessage() {}
1237func (*EntityProto) Descriptor() ([]byte, []int) {
1238 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{6}
1239}
1240func (m *EntityProto) XXX_Unmarshal(b []byte) error {
1241 return xxx_messageInfo_EntityProto.Unmarshal(m, b)
1242}
1243func (m *EntityProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1244 return xxx_messageInfo_EntityProto.Marshal(b, m, deterministic)
1245}
1246func (dst *EntityProto) XXX_Merge(src proto.Message) {
1247 xxx_messageInfo_EntityProto.Merge(dst, src)
1248}
1249func (m *EntityProto) XXX_Size() int {
1250 return xxx_messageInfo_EntityProto.Size(m)
1251}
1252func (m *EntityProto) XXX_DiscardUnknown() {
1253 xxx_messageInfo_EntityProto.DiscardUnknown(m)
1254}
1255
1256var xxx_messageInfo_EntityProto proto.InternalMessageInfo
1257
1258func (m *EntityProto) GetKey() *Reference {
1259 if m != nil {
1260 return m.Key
1261 }
1262 return nil
1263}
1264
1265func (m *EntityProto) GetEntityGroup() *Path {
1266 if m != nil {
1267 return m.EntityGroup
1268 }
1269 return nil
1270}
1271
1272func (m *EntityProto) GetOwner() *User {
1273 if m != nil {
1274 return m.Owner
1275 }
1276 return nil
1277}
1278
1279func (m *EntityProto) GetKind() EntityProto_Kind {
1280 if m != nil && m.Kind != nil {
1281 return *m.Kind
1282 }
1283 return EntityProto_GD_CONTACT
1284}
1285
1286func (m *EntityProto) GetKindUri() string {
1287 if m != nil && m.KindUri != nil {
1288 return *m.KindUri
1289 }
1290 return ""
1291}
1292
1293func (m *EntityProto) GetProperty() []*Property {
1294 if m != nil {
1295 return m.Property
1296 }
1297 return nil
1298}
1299
1300func (m *EntityProto) GetRawProperty() []*Property {
1301 if m != nil {
1302 return m.RawProperty
1303 }
1304 return nil
1305}
1306
1307func (m *EntityProto) GetRank() int32 {
1308 if m != nil && m.Rank != nil {
1309 return *m.Rank
1310 }
1311 return 0
1312}
1313
1314type CompositeProperty struct {
1315 IndexId *int64 `protobuf:"varint,1,req,name=index_id,json=indexId" json:"index_id,omitempty"`
1316 Value []string `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
1317 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1318 XXX_unrecognized []byte `json:"-"`
1319 XXX_sizecache int32 `json:"-"`
1320}
1321
1322func (m *CompositeProperty) Reset() { *m = CompositeProperty{} }
1323func (m *CompositeProperty) String() string { return proto.CompactTextString(m) }
1324func (*CompositeProperty) ProtoMessage() {}
1325func (*CompositeProperty) Descriptor() ([]byte, []int) {
1326 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{7}
1327}
1328func (m *CompositeProperty) XXX_Unmarshal(b []byte) error {
1329 return xxx_messageInfo_CompositeProperty.Unmarshal(m, b)
1330}
1331func (m *CompositeProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1332 return xxx_messageInfo_CompositeProperty.Marshal(b, m, deterministic)
1333}
1334func (dst *CompositeProperty) XXX_Merge(src proto.Message) {
1335 xxx_messageInfo_CompositeProperty.Merge(dst, src)
1336}
1337func (m *CompositeProperty) XXX_Size() int {
1338 return xxx_messageInfo_CompositeProperty.Size(m)
1339}
1340func (m *CompositeProperty) XXX_DiscardUnknown() {
1341 xxx_messageInfo_CompositeProperty.DiscardUnknown(m)
1342}
1343
1344var xxx_messageInfo_CompositeProperty proto.InternalMessageInfo
1345
1346func (m *CompositeProperty) GetIndexId() int64 {
1347 if m != nil && m.IndexId != nil {
1348 return *m.IndexId
1349 }
1350 return 0
1351}
1352
1353func (m *CompositeProperty) GetValue() []string {
1354 if m != nil {
1355 return m.Value
1356 }
1357 return nil
1358}
1359
1360type Index struct {
1361 EntityType *string `protobuf:"bytes,1,req,name=entity_type,json=entityType" json:"entity_type,omitempty"`
1362 Ancestor *bool `protobuf:"varint,5,req,name=ancestor" json:"ancestor,omitempty"`
1363 Property []*Index_Property `protobuf:"group,2,rep,name=Property,json=property" json:"property,omitempty"`
1364 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1365 XXX_unrecognized []byte `json:"-"`
1366 XXX_sizecache int32 `json:"-"`
1367}
1368
1369func (m *Index) Reset() { *m = Index{} }
1370func (m *Index) String() string { return proto.CompactTextString(m) }
1371func (*Index) ProtoMessage() {}
1372func (*Index) Descriptor() ([]byte, []int) {
1373 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{8}
1374}
1375func (m *Index) XXX_Unmarshal(b []byte) error {
1376 return xxx_messageInfo_Index.Unmarshal(m, b)
1377}
1378func (m *Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1379 return xxx_messageInfo_Index.Marshal(b, m, deterministic)
1380}
1381func (dst *Index) XXX_Merge(src proto.Message) {
1382 xxx_messageInfo_Index.Merge(dst, src)
1383}
1384func (m *Index) XXX_Size() int {
1385 return xxx_messageInfo_Index.Size(m)
1386}
1387func (m *Index) XXX_DiscardUnknown() {
1388 xxx_messageInfo_Index.DiscardUnknown(m)
1389}
1390
1391var xxx_messageInfo_Index proto.InternalMessageInfo
1392
1393func (m *Index) GetEntityType() string {
1394 if m != nil && m.EntityType != nil {
1395 return *m.EntityType
1396 }
1397 return ""
1398}
1399
1400func (m *Index) GetAncestor() bool {
1401 if m != nil && m.Ancestor != nil {
1402 return *m.Ancestor
1403 }
1404 return false
1405}
1406
1407func (m *Index) GetProperty() []*Index_Property {
1408 if m != nil {
1409 return m.Property
1410 }
1411 return nil
1412}
1413
1414type Index_Property struct {
1415 Name *string `protobuf:"bytes,3,req,name=name" json:"name,omitempty"`
1416 Direction *Index_Property_Direction `protobuf:"varint,4,opt,name=direction,enum=appengine.Index_Property_Direction,def=1" json:"direction,omitempty"`
1417 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1418 XXX_unrecognized []byte `json:"-"`
1419 XXX_sizecache int32 `json:"-"`
1420}
1421
1422func (m *Index_Property) Reset() { *m = Index_Property{} }
1423func (m *Index_Property) String() string { return proto.CompactTextString(m) }
1424func (*Index_Property) ProtoMessage() {}
1425func (*Index_Property) Descriptor() ([]byte, []int) {
1426 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{8, 0}
1427}
1428func (m *Index_Property) XXX_Unmarshal(b []byte) error {
1429 return xxx_messageInfo_Index_Property.Unmarshal(m, b)
1430}
1431func (m *Index_Property) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1432 return xxx_messageInfo_Index_Property.Marshal(b, m, deterministic)
1433}
1434func (dst *Index_Property) XXX_Merge(src proto.Message) {
1435 xxx_messageInfo_Index_Property.Merge(dst, src)
1436}
1437func (m *Index_Property) XXX_Size() int {
1438 return xxx_messageInfo_Index_Property.Size(m)
1439}
1440func (m *Index_Property) XXX_DiscardUnknown() {
1441 xxx_messageInfo_Index_Property.DiscardUnknown(m)
1442}
1443
1444var xxx_messageInfo_Index_Property proto.InternalMessageInfo
1445
1446const Default_Index_Property_Direction Index_Property_Direction = Index_Property_ASCENDING
1447
1448func (m *Index_Property) GetName() string {
1449 if m != nil && m.Name != nil {
1450 return *m.Name
1451 }
1452 return ""
1453}
1454
1455func (m *Index_Property) GetDirection() Index_Property_Direction {
1456 if m != nil && m.Direction != nil {
1457 return *m.Direction
1458 }
1459 return Default_Index_Property_Direction
1460}
1461
1462type CompositeIndex struct {
1463 AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
1464 Id *int64 `protobuf:"varint,2,req,name=id" json:"id,omitempty"`
1465 Definition *Index `protobuf:"bytes,3,req,name=definition" json:"definition,omitempty"`
1466 State *CompositeIndex_State `protobuf:"varint,4,req,name=state,enum=appengine.CompositeIndex_State" json:"state,omitempty"`
1467 OnlyUseIfRequired *bool `protobuf:"varint,6,opt,name=only_use_if_required,json=onlyUseIfRequired,def=0" json:"only_use_if_required,omitempty"`
1468 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1469 XXX_unrecognized []byte `json:"-"`
1470 XXX_sizecache int32 `json:"-"`
1471}
1472
1473func (m *CompositeIndex) Reset() { *m = CompositeIndex{} }
1474func (m *CompositeIndex) String() string { return proto.CompactTextString(m) }
1475func (*CompositeIndex) ProtoMessage() {}
1476func (*CompositeIndex) Descriptor() ([]byte, []int) {
1477 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{9}
1478}
1479func (m *CompositeIndex) XXX_Unmarshal(b []byte) error {
1480 return xxx_messageInfo_CompositeIndex.Unmarshal(m, b)
1481}
1482func (m *CompositeIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1483 return xxx_messageInfo_CompositeIndex.Marshal(b, m, deterministic)
1484}
1485func (dst *CompositeIndex) XXX_Merge(src proto.Message) {
1486 xxx_messageInfo_CompositeIndex.Merge(dst, src)
1487}
1488func (m *CompositeIndex) XXX_Size() int {
1489 return xxx_messageInfo_CompositeIndex.Size(m)
1490}
1491func (m *CompositeIndex) XXX_DiscardUnknown() {
1492 xxx_messageInfo_CompositeIndex.DiscardUnknown(m)
1493}
1494
1495var xxx_messageInfo_CompositeIndex proto.InternalMessageInfo
1496
1497const Default_CompositeIndex_OnlyUseIfRequired bool = false
1498
1499func (m *CompositeIndex) GetAppId() string {
1500 if m != nil && m.AppId != nil {
1501 return *m.AppId
1502 }
1503 return ""
1504}
1505
1506func (m *CompositeIndex) GetId() int64 {
1507 if m != nil && m.Id != nil {
1508 return *m.Id
1509 }
1510 return 0
1511}
1512
1513func (m *CompositeIndex) GetDefinition() *Index {
1514 if m != nil {
1515 return m.Definition
1516 }
1517 return nil
1518}
1519
1520func (m *CompositeIndex) GetState() CompositeIndex_State {
1521 if m != nil && m.State != nil {
1522 return *m.State
1523 }
1524 return CompositeIndex_WRITE_ONLY
1525}
1526
1527func (m *CompositeIndex) GetOnlyUseIfRequired() bool {
1528 if m != nil && m.OnlyUseIfRequired != nil {
1529 return *m.OnlyUseIfRequired
1530 }
1531 return Default_CompositeIndex_OnlyUseIfRequired
1532}
1533
1534type IndexPostfix struct {
1535 IndexValue []*IndexPostfix_IndexValue `protobuf:"bytes,1,rep,name=index_value,json=indexValue" json:"index_value,omitempty"`
1536 Key *Reference `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
1537 Before *bool `protobuf:"varint,3,opt,name=before,def=1" json:"before,omitempty"`
1538 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1539 XXX_unrecognized []byte `json:"-"`
1540 XXX_sizecache int32 `json:"-"`
1541}
1542
1543func (m *IndexPostfix) Reset() { *m = IndexPostfix{} }
1544func (m *IndexPostfix) String() string { return proto.CompactTextString(m) }
1545func (*IndexPostfix) ProtoMessage() {}
1546func (*IndexPostfix) Descriptor() ([]byte, []int) {
1547 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{10}
1548}
1549func (m *IndexPostfix) XXX_Unmarshal(b []byte) error {
1550 return xxx_messageInfo_IndexPostfix.Unmarshal(m, b)
1551}
1552func (m *IndexPostfix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1553 return xxx_messageInfo_IndexPostfix.Marshal(b, m, deterministic)
1554}
1555func (dst *IndexPostfix) XXX_Merge(src proto.Message) {
1556 xxx_messageInfo_IndexPostfix.Merge(dst, src)
1557}
1558func (m *IndexPostfix) XXX_Size() int {
1559 return xxx_messageInfo_IndexPostfix.Size(m)
1560}
1561func (m *IndexPostfix) XXX_DiscardUnknown() {
1562 xxx_messageInfo_IndexPostfix.DiscardUnknown(m)
1563}
1564
1565var xxx_messageInfo_IndexPostfix proto.InternalMessageInfo
1566
1567const Default_IndexPostfix_Before bool = true
1568
1569func (m *IndexPostfix) GetIndexValue() []*IndexPostfix_IndexValue {
1570 if m != nil {
1571 return m.IndexValue
1572 }
1573 return nil
1574}
1575
1576func (m *IndexPostfix) GetKey() *Reference {
1577 if m != nil {
1578 return m.Key
1579 }
1580 return nil
1581}
1582
1583func (m *IndexPostfix) GetBefore() bool {
1584 if m != nil && m.Before != nil {
1585 return *m.Before
1586 }
1587 return Default_IndexPostfix_Before
1588}
1589
1590type IndexPostfix_IndexValue struct {
1591 PropertyName *string `protobuf:"bytes,1,req,name=property_name,json=propertyName" json:"property_name,omitempty"`
1592 Value *PropertyValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
1593 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1594 XXX_unrecognized []byte `json:"-"`
1595 XXX_sizecache int32 `json:"-"`
1596}
1597
1598func (m *IndexPostfix_IndexValue) Reset() { *m = IndexPostfix_IndexValue{} }
1599func (m *IndexPostfix_IndexValue) String() string { return proto.CompactTextString(m) }
1600func (*IndexPostfix_IndexValue) ProtoMessage() {}
1601func (*IndexPostfix_IndexValue) Descriptor() ([]byte, []int) {
1602 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{10, 0}
1603}
1604func (m *IndexPostfix_IndexValue) XXX_Unmarshal(b []byte) error {
1605 return xxx_messageInfo_IndexPostfix_IndexValue.Unmarshal(m, b)
1606}
1607func (m *IndexPostfix_IndexValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1608 return xxx_messageInfo_IndexPostfix_IndexValue.Marshal(b, m, deterministic)
1609}
1610func (dst *IndexPostfix_IndexValue) XXX_Merge(src proto.Message) {
1611 xxx_messageInfo_IndexPostfix_IndexValue.Merge(dst, src)
1612}
1613func (m *IndexPostfix_IndexValue) XXX_Size() int {
1614 return xxx_messageInfo_IndexPostfix_IndexValue.Size(m)
1615}
1616func (m *IndexPostfix_IndexValue) XXX_DiscardUnknown() {
1617 xxx_messageInfo_IndexPostfix_IndexValue.DiscardUnknown(m)
1618}
1619
1620var xxx_messageInfo_IndexPostfix_IndexValue proto.InternalMessageInfo
1621
1622func (m *IndexPostfix_IndexValue) GetPropertyName() string {
1623 if m != nil && m.PropertyName != nil {
1624 return *m.PropertyName
1625 }
1626 return ""
1627}
1628
1629func (m *IndexPostfix_IndexValue) GetValue() *PropertyValue {
1630 if m != nil {
1631 return m.Value
1632 }
1633 return nil
1634}
1635
1636type IndexPosition struct {
1637 Key *string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
1638 Before *bool `protobuf:"varint,2,opt,name=before,def=1" json:"before,omitempty"`
1639 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1640 XXX_unrecognized []byte `json:"-"`
1641 XXX_sizecache int32 `json:"-"`
1642}
1643
1644func (m *IndexPosition) Reset() { *m = IndexPosition{} }
1645func (m *IndexPosition) String() string { return proto.CompactTextString(m) }
1646func (*IndexPosition) ProtoMessage() {}
1647func (*IndexPosition) Descriptor() ([]byte, []int) {
1648 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{11}
1649}
1650func (m *IndexPosition) XXX_Unmarshal(b []byte) error {
1651 return xxx_messageInfo_IndexPosition.Unmarshal(m, b)
1652}
1653func (m *IndexPosition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1654 return xxx_messageInfo_IndexPosition.Marshal(b, m, deterministic)
1655}
1656func (dst *IndexPosition) XXX_Merge(src proto.Message) {
1657 xxx_messageInfo_IndexPosition.Merge(dst, src)
1658}
1659func (m *IndexPosition) XXX_Size() int {
1660 return xxx_messageInfo_IndexPosition.Size(m)
1661}
1662func (m *IndexPosition) XXX_DiscardUnknown() {
1663 xxx_messageInfo_IndexPosition.DiscardUnknown(m)
1664}
1665
1666var xxx_messageInfo_IndexPosition proto.InternalMessageInfo
1667
1668const Default_IndexPosition_Before bool = true
1669
1670func (m *IndexPosition) GetKey() string {
1671 if m != nil && m.Key != nil {
1672 return *m.Key
1673 }
1674 return ""
1675}
1676
1677func (m *IndexPosition) GetBefore() bool {
1678 if m != nil && m.Before != nil {
1679 return *m.Before
1680 }
1681 return Default_IndexPosition_Before
1682}
1683
1684type Snapshot struct {
1685 Ts *int64 `protobuf:"varint,1,req,name=ts" json:"ts,omitempty"`
1686 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1687 XXX_unrecognized []byte `json:"-"`
1688 XXX_sizecache int32 `json:"-"`
1689}
1690
1691func (m *Snapshot) Reset() { *m = Snapshot{} }
1692func (m *Snapshot) String() string { return proto.CompactTextString(m) }
1693func (*Snapshot) ProtoMessage() {}
1694func (*Snapshot) Descriptor() ([]byte, []int) {
1695 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{12}
1696}
1697func (m *Snapshot) XXX_Unmarshal(b []byte) error {
1698 return xxx_messageInfo_Snapshot.Unmarshal(m, b)
1699}
1700func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1701 return xxx_messageInfo_Snapshot.Marshal(b, m, deterministic)
1702}
1703func (dst *Snapshot) XXX_Merge(src proto.Message) {
1704 xxx_messageInfo_Snapshot.Merge(dst, src)
1705}
1706func (m *Snapshot) XXX_Size() int {
1707 return xxx_messageInfo_Snapshot.Size(m)
1708}
1709func (m *Snapshot) XXX_DiscardUnknown() {
1710 xxx_messageInfo_Snapshot.DiscardUnknown(m)
1711}
1712
1713var xxx_messageInfo_Snapshot proto.InternalMessageInfo
1714
1715func (m *Snapshot) GetTs() int64 {
1716 if m != nil && m.Ts != nil {
1717 return *m.Ts
1718 }
1719 return 0
1720}
1721
1722type InternalHeader struct {
1723 Qos *string `protobuf:"bytes,1,opt,name=qos" json:"qos,omitempty"`
1724 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1725 XXX_unrecognized []byte `json:"-"`
1726 XXX_sizecache int32 `json:"-"`
1727}
1728
1729func (m *InternalHeader) Reset() { *m = InternalHeader{} }
1730func (m *InternalHeader) String() string { return proto.CompactTextString(m) }
1731func (*InternalHeader) ProtoMessage() {}
1732func (*InternalHeader) Descriptor() ([]byte, []int) {
1733 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{13}
1734}
1735func (m *InternalHeader) XXX_Unmarshal(b []byte) error {
1736 return xxx_messageInfo_InternalHeader.Unmarshal(m, b)
1737}
1738func (m *InternalHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1739 return xxx_messageInfo_InternalHeader.Marshal(b, m, deterministic)
1740}
1741func (dst *InternalHeader) XXX_Merge(src proto.Message) {
1742 xxx_messageInfo_InternalHeader.Merge(dst, src)
1743}
1744func (m *InternalHeader) XXX_Size() int {
1745 return xxx_messageInfo_InternalHeader.Size(m)
1746}
1747func (m *InternalHeader) XXX_DiscardUnknown() {
1748 xxx_messageInfo_InternalHeader.DiscardUnknown(m)
1749}
1750
1751var xxx_messageInfo_InternalHeader proto.InternalMessageInfo
1752
1753func (m *InternalHeader) GetQos() string {
1754 if m != nil && m.Qos != nil {
1755 return *m.Qos
1756 }
1757 return ""
1758}
1759
1760type Transaction struct {
1761 Header *InternalHeader `protobuf:"bytes,4,opt,name=header" json:"header,omitempty"`
1762 Handle *uint64 `protobuf:"fixed64,1,req,name=handle" json:"handle,omitempty"`
1763 App *string `protobuf:"bytes,2,req,name=app" json:"app,omitempty"`
1764 MarkChanges *bool `protobuf:"varint,3,opt,name=mark_changes,json=markChanges,def=0" json:"mark_changes,omitempty"`
1765 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1766 XXX_unrecognized []byte `json:"-"`
1767 XXX_sizecache int32 `json:"-"`
1768}
1769
1770func (m *Transaction) Reset() { *m = Transaction{} }
1771func (m *Transaction) String() string { return proto.CompactTextString(m) }
1772func (*Transaction) ProtoMessage() {}
1773func (*Transaction) Descriptor() ([]byte, []int) {
1774 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{14}
1775}
1776func (m *Transaction) XXX_Unmarshal(b []byte) error {
1777 return xxx_messageInfo_Transaction.Unmarshal(m, b)
1778}
1779func (m *Transaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1780 return xxx_messageInfo_Transaction.Marshal(b, m, deterministic)
1781}
1782func (dst *Transaction) XXX_Merge(src proto.Message) {
1783 xxx_messageInfo_Transaction.Merge(dst, src)
1784}
1785func (m *Transaction) XXX_Size() int {
1786 return xxx_messageInfo_Transaction.Size(m)
1787}
1788func (m *Transaction) XXX_DiscardUnknown() {
1789 xxx_messageInfo_Transaction.DiscardUnknown(m)
1790}
1791
1792var xxx_messageInfo_Transaction proto.InternalMessageInfo
1793
1794const Default_Transaction_MarkChanges bool = false
1795
1796func (m *Transaction) GetHeader() *InternalHeader {
1797 if m != nil {
1798 return m.Header
1799 }
1800 return nil
1801}
1802
1803func (m *Transaction) GetHandle() uint64 {
1804 if m != nil && m.Handle != nil {
1805 return *m.Handle
1806 }
1807 return 0
1808}
1809
1810func (m *Transaction) GetApp() string {
1811 if m != nil && m.App != nil {
1812 return *m.App
1813 }
1814 return ""
1815}
1816
1817func (m *Transaction) GetMarkChanges() bool {
1818 if m != nil && m.MarkChanges != nil {
1819 return *m.MarkChanges
1820 }
1821 return Default_Transaction_MarkChanges
1822}
1823
1824type Query struct {
1825 Header *InternalHeader `protobuf:"bytes,39,opt,name=header" json:"header,omitempty"`
1826 App *string `protobuf:"bytes,1,req,name=app" json:"app,omitempty"`
1827 NameSpace *string `protobuf:"bytes,29,opt,name=name_space,json=nameSpace" json:"name_space,omitempty"`
1828 Kind *string `protobuf:"bytes,3,opt,name=kind" json:"kind,omitempty"`
1829 Ancestor *Reference `protobuf:"bytes,17,opt,name=ancestor" json:"ancestor,omitempty"`
1830 Filter []*Query_Filter `protobuf:"group,4,rep,name=Filter,json=filter" json:"filter,omitempty"`
1831 SearchQuery *string `protobuf:"bytes,8,opt,name=search_query,json=searchQuery" json:"search_query,omitempty"`
1832 Order []*Query_Order `protobuf:"group,9,rep,name=Order,json=order" json:"order,omitempty"`
1833 Hint *Query_Hint `protobuf:"varint,18,opt,name=hint,enum=appengine.Query_Hint" json:"hint,omitempty"`
1834 Count *int32 `protobuf:"varint,23,opt,name=count" json:"count,omitempty"`
1835 Offset *int32 `protobuf:"varint,12,opt,name=offset,def=0" json:"offset,omitempty"`
1836 Limit *int32 `protobuf:"varint,16,opt,name=limit" json:"limit,omitempty"`
1837 CompiledCursor *CompiledCursor `protobuf:"bytes,30,opt,name=compiled_cursor,json=compiledCursor" json:"compiled_cursor,omitempty"`
1838 EndCompiledCursor *CompiledCursor `protobuf:"bytes,31,opt,name=end_compiled_cursor,json=endCompiledCursor" json:"end_compiled_cursor,omitempty"`
1839 CompositeIndex []*CompositeIndex `protobuf:"bytes,19,rep,name=composite_index,json=compositeIndex" json:"composite_index,omitempty"`
1840 RequirePerfectPlan *bool `protobuf:"varint,20,opt,name=require_perfect_plan,json=requirePerfectPlan,def=0" json:"require_perfect_plan,omitempty"`
1841 KeysOnly *bool `protobuf:"varint,21,opt,name=keys_only,json=keysOnly,def=0" json:"keys_only,omitempty"`
1842 Transaction *Transaction `protobuf:"bytes,22,opt,name=transaction" json:"transaction,omitempty"`
1843 Compile *bool `protobuf:"varint,25,opt,name=compile,def=0" json:"compile,omitempty"`
1844 FailoverMs *int64 `protobuf:"varint,26,opt,name=failover_ms,json=failoverMs" json:"failover_ms,omitempty"`
1845 Strong *bool `protobuf:"varint,32,opt,name=strong" json:"strong,omitempty"`
1846 PropertyName []string `protobuf:"bytes,33,rep,name=property_name,json=propertyName" json:"property_name,omitempty"`
1847 GroupByPropertyName []string `protobuf:"bytes,34,rep,name=group_by_property_name,json=groupByPropertyName" json:"group_by_property_name,omitempty"`
1848 Distinct *bool `protobuf:"varint,24,opt,name=distinct" json:"distinct,omitempty"`
1849 MinSafeTimeSeconds *int64 `protobuf:"varint,35,opt,name=min_safe_time_seconds,json=minSafeTimeSeconds" json:"min_safe_time_seconds,omitempty"`
1850 SafeReplicaName []string `protobuf:"bytes,36,rep,name=safe_replica_name,json=safeReplicaName" json:"safe_replica_name,omitempty"`
1851 PersistOffset *bool `protobuf:"varint,37,opt,name=persist_offset,json=persistOffset,def=0" json:"persist_offset,omitempty"`
1852 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1853 XXX_unrecognized []byte `json:"-"`
1854 XXX_sizecache int32 `json:"-"`
1855}
1856
1857func (m *Query) Reset() { *m = Query{} }
1858func (m *Query) String() string { return proto.CompactTextString(m) }
1859func (*Query) ProtoMessage() {}
1860func (*Query) Descriptor() ([]byte, []int) {
1861 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15}
1862}
1863func (m *Query) XXX_Unmarshal(b []byte) error {
1864 return xxx_messageInfo_Query.Unmarshal(m, b)
1865}
1866func (m *Query) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1867 return xxx_messageInfo_Query.Marshal(b, m, deterministic)
1868}
1869func (dst *Query) XXX_Merge(src proto.Message) {
1870 xxx_messageInfo_Query.Merge(dst, src)
1871}
1872func (m *Query) XXX_Size() int {
1873 return xxx_messageInfo_Query.Size(m)
1874}
1875func (m *Query) XXX_DiscardUnknown() {
1876 xxx_messageInfo_Query.DiscardUnknown(m)
1877}
1878
1879var xxx_messageInfo_Query proto.InternalMessageInfo
1880
1881const Default_Query_Offset int32 = 0
1882const Default_Query_RequirePerfectPlan bool = false
1883const Default_Query_KeysOnly bool = false
1884const Default_Query_Compile bool = false
1885const Default_Query_PersistOffset bool = false
1886
1887func (m *Query) GetHeader() *InternalHeader {
1888 if m != nil {
1889 return m.Header
1890 }
1891 return nil
1892}
1893
1894func (m *Query) GetApp() string {
1895 if m != nil && m.App != nil {
1896 return *m.App
1897 }
1898 return ""
1899}
1900
1901func (m *Query) GetNameSpace() string {
1902 if m != nil && m.NameSpace != nil {
1903 return *m.NameSpace
1904 }
1905 return ""
1906}
1907
1908func (m *Query) GetKind() string {
1909 if m != nil && m.Kind != nil {
1910 return *m.Kind
1911 }
1912 return ""
1913}
1914
1915func (m *Query) GetAncestor() *Reference {
1916 if m != nil {
1917 return m.Ancestor
1918 }
1919 return nil
1920}
1921
1922func (m *Query) GetFilter() []*Query_Filter {
1923 if m != nil {
1924 return m.Filter
1925 }
1926 return nil
1927}
1928
1929func (m *Query) GetSearchQuery() string {
1930 if m != nil && m.SearchQuery != nil {
1931 return *m.SearchQuery
1932 }
1933 return ""
1934}
1935
1936func (m *Query) GetOrder() []*Query_Order {
1937 if m != nil {
1938 return m.Order
1939 }
1940 return nil
1941}
1942
1943func (m *Query) GetHint() Query_Hint {
1944 if m != nil && m.Hint != nil {
1945 return *m.Hint
1946 }
1947 return Query_ORDER_FIRST
1948}
1949
1950func (m *Query) GetCount() int32 {
1951 if m != nil && m.Count != nil {
1952 return *m.Count
1953 }
1954 return 0
1955}
1956
1957func (m *Query) GetOffset() int32 {
1958 if m != nil && m.Offset != nil {
1959 return *m.Offset
1960 }
1961 return Default_Query_Offset
1962}
1963
1964func (m *Query) GetLimit() int32 {
1965 if m != nil && m.Limit != nil {
1966 return *m.Limit
1967 }
1968 return 0
1969}
1970
1971func (m *Query) GetCompiledCursor() *CompiledCursor {
1972 if m != nil {
1973 return m.CompiledCursor
1974 }
1975 return nil
1976}
1977
1978func (m *Query) GetEndCompiledCursor() *CompiledCursor {
1979 if m != nil {
1980 return m.EndCompiledCursor
1981 }
1982 return nil
1983}
1984
1985func (m *Query) GetCompositeIndex() []*CompositeIndex {
1986 if m != nil {
1987 return m.CompositeIndex
1988 }
1989 return nil
1990}
1991
1992func (m *Query) GetRequirePerfectPlan() bool {
1993 if m != nil && m.RequirePerfectPlan != nil {
1994 return *m.RequirePerfectPlan
1995 }
1996 return Default_Query_RequirePerfectPlan
1997}
1998
1999func (m *Query) GetKeysOnly() bool {
2000 if m != nil && m.KeysOnly != nil {
2001 return *m.KeysOnly
2002 }
2003 return Default_Query_KeysOnly
2004}
2005
2006func (m *Query) GetTransaction() *Transaction {
2007 if m != nil {
2008 return m.Transaction
2009 }
2010 return nil
2011}
2012
2013func (m *Query) GetCompile() bool {
2014 if m != nil && m.Compile != nil {
2015 return *m.Compile
2016 }
2017 return Default_Query_Compile
2018}
2019
2020func (m *Query) GetFailoverMs() int64 {
2021 if m != nil && m.FailoverMs != nil {
2022 return *m.FailoverMs
2023 }
2024 return 0
2025}
2026
2027func (m *Query) GetStrong() bool {
2028 if m != nil && m.Strong != nil {
2029 return *m.Strong
2030 }
2031 return false
2032}
2033
2034func (m *Query) GetPropertyName() []string {
2035 if m != nil {
2036 return m.PropertyName
2037 }
2038 return nil
2039}
2040
2041func (m *Query) GetGroupByPropertyName() []string {
2042 if m != nil {
2043 return m.GroupByPropertyName
2044 }
2045 return nil
2046}
2047
2048func (m *Query) GetDistinct() bool {
2049 if m != nil && m.Distinct != nil {
2050 return *m.Distinct
2051 }
2052 return false
2053}
2054
2055func (m *Query) GetMinSafeTimeSeconds() int64 {
2056 if m != nil && m.MinSafeTimeSeconds != nil {
2057 return *m.MinSafeTimeSeconds
2058 }
2059 return 0
2060}
2061
2062func (m *Query) GetSafeReplicaName() []string {
2063 if m != nil {
2064 return m.SafeReplicaName
2065 }
2066 return nil
2067}
2068
2069func (m *Query) GetPersistOffset() bool {
2070 if m != nil && m.PersistOffset != nil {
2071 return *m.PersistOffset
2072 }
2073 return Default_Query_PersistOffset
2074}
2075
2076type Query_Filter struct {
2077 Op *Query_Filter_Operator `protobuf:"varint,6,req,name=op,enum=appengine.Query_Filter_Operator" json:"op,omitempty"`
2078 Property []*Property `protobuf:"bytes,14,rep,name=property" json:"property,omitempty"`
2079 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2080 XXX_unrecognized []byte `json:"-"`
2081 XXX_sizecache int32 `json:"-"`
2082}
2083
2084func (m *Query_Filter) Reset() { *m = Query_Filter{} }
2085func (m *Query_Filter) String() string { return proto.CompactTextString(m) }
2086func (*Query_Filter) ProtoMessage() {}
2087func (*Query_Filter) Descriptor() ([]byte, []int) {
2088 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 0}
2089}
2090func (m *Query_Filter) XXX_Unmarshal(b []byte) error {
2091 return xxx_messageInfo_Query_Filter.Unmarshal(m, b)
2092}
2093func (m *Query_Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2094 return xxx_messageInfo_Query_Filter.Marshal(b, m, deterministic)
2095}
2096func (dst *Query_Filter) XXX_Merge(src proto.Message) {
2097 xxx_messageInfo_Query_Filter.Merge(dst, src)
2098}
2099func (m *Query_Filter) XXX_Size() int {
2100 return xxx_messageInfo_Query_Filter.Size(m)
2101}
2102func (m *Query_Filter) XXX_DiscardUnknown() {
2103 xxx_messageInfo_Query_Filter.DiscardUnknown(m)
2104}
2105
2106var xxx_messageInfo_Query_Filter proto.InternalMessageInfo
2107
2108func (m *Query_Filter) GetOp() Query_Filter_Operator {
2109 if m != nil && m.Op != nil {
2110 return *m.Op
2111 }
2112 return Query_Filter_LESS_THAN
2113}
2114
2115func (m *Query_Filter) GetProperty() []*Property {
2116 if m != nil {
2117 return m.Property
2118 }
2119 return nil
2120}
2121
2122type Query_Order struct {
2123 Property *string `protobuf:"bytes,10,req,name=property" json:"property,omitempty"`
2124 Direction *Query_Order_Direction `protobuf:"varint,11,opt,name=direction,enum=appengine.Query_Order_Direction,def=1" json:"direction,omitempty"`
2125 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2126 XXX_unrecognized []byte `json:"-"`
2127 XXX_sizecache int32 `json:"-"`
2128}
2129
2130func (m *Query_Order) Reset() { *m = Query_Order{} }
2131func (m *Query_Order) String() string { return proto.CompactTextString(m) }
2132func (*Query_Order) ProtoMessage() {}
2133func (*Query_Order) Descriptor() ([]byte, []int) {
2134 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 1}
2135}
2136func (m *Query_Order) XXX_Unmarshal(b []byte) error {
2137 return xxx_messageInfo_Query_Order.Unmarshal(m, b)
2138}
2139func (m *Query_Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2140 return xxx_messageInfo_Query_Order.Marshal(b, m, deterministic)
2141}
2142func (dst *Query_Order) XXX_Merge(src proto.Message) {
2143 xxx_messageInfo_Query_Order.Merge(dst, src)
2144}
2145func (m *Query_Order) XXX_Size() int {
2146 return xxx_messageInfo_Query_Order.Size(m)
2147}
2148func (m *Query_Order) XXX_DiscardUnknown() {
2149 xxx_messageInfo_Query_Order.DiscardUnknown(m)
2150}
2151
2152var xxx_messageInfo_Query_Order proto.InternalMessageInfo
2153
2154const Default_Query_Order_Direction Query_Order_Direction = Query_Order_ASCENDING
2155
2156func (m *Query_Order) GetProperty() string {
2157 if m != nil && m.Property != nil {
2158 return *m.Property
2159 }
2160 return ""
2161}
2162
2163func (m *Query_Order) GetDirection() Query_Order_Direction {
2164 if m != nil && m.Direction != nil {
2165 return *m.Direction
2166 }
2167 return Default_Query_Order_Direction
2168}
2169
2170type CompiledQuery struct {
2171 Primaryscan *CompiledQuery_PrimaryScan `protobuf:"group,1,req,name=PrimaryScan,json=primaryscan" json:"primaryscan,omitempty"`
2172 Mergejoinscan []*CompiledQuery_MergeJoinScan `protobuf:"group,7,rep,name=MergeJoinScan,json=mergejoinscan" json:"mergejoinscan,omitempty"`
2173 IndexDef *Index `protobuf:"bytes,21,opt,name=index_def,json=indexDef" json:"index_def,omitempty"`
2174 Offset *int32 `protobuf:"varint,10,opt,name=offset,def=0" json:"offset,omitempty"`
2175 Limit *int32 `protobuf:"varint,11,opt,name=limit" json:"limit,omitempty"`
2176 KeysOnly *bool `protobuf:"varint,12,req,name=keys_only,json=keysOnly" json:"keys_only,omitempty"`
2177 PropertyName []string `protobuf:"bytes,24,rep,name=property_name,json=propertyName" json:"property_name,omitempty"`
2178 DistinctInfixSize *int32 `protobuf:"varint,25,opt,name=distinct_infix_size,json=distinctInfixSize" json:"distinct_infix_size,omitempty"`
2179 Entityfilter *CompiledQuery_EntityFilter `protobuf:"group,13,opt,name=EntityFilter,json=entityfilter" json:"entityfilter,omitempty"`
2180 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2181 XXX_unrecognized []byte `json:"-"`
2182 XXX_sizecache int32 `json:"-"`
2183}
2184
2185func (m *CompiledQuery) Reset() { *m = CompiledQuery{} }
2186func (m *CompiledQuery) String() string { return proto.CompactTextString(m) }
2187func (*CompiledQuery) ProtoMessage() {}
2188func (*CompiledQuery) Descriptor() ([]byte, []int) {
2189 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16}
2190}
2191func (m *CompiledQuery) XXX_Unmarshal(b []byte) error {
2192 return xxx_messageInfo_CompiledQuery.Unmarshal(m, b)
2193}
2194func (m *CompiledQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2195 return xxx_messageInfo_CompiledQuery.Marshal(b, m, deterministic)
2196}
2197func (dst *CompiledQuery) XXX_Merge(src proto.Message) {
2198 xxx_messageInfo_CompiledQuery.Merge(dst, src)
2199}
2200func (m *CompiledQuery) XXX_Size() int {
2201 return xxx_messageInfo_CompiledQuery.Size(m)
2202}
2203func (m *CompiledQuery) XXX_DiscardUnknown() {
2204 xxx_messageInfo_CompiledQuery.DiscardUnknown(m)
2205}
2206
2207var xxx_messageInfo_CompiledQuery proto.InternalMessageInfo
2208
2209const Default_CompiledQuery_Offset int32 = 0
2210
2211func (m *CompiledQuery) GetPrimaryscan() *CompiledQuery_PrimaryScan {
2212 if m != nil {
2213 return m.Primaryscan
2214 }
2215 return nil
2216}
2217
2218func (m *CompiledQuery) GetMergejoinscan() []*CompiledQuery_MergeJoinScan {
2219 if m != nil {
2220 return m.Mergejoinscan
2221 }
2222 return nil
2223}
2224
2225func (m *CompiledQuery) GetIndexDef() *Index {
2226 if m != nil {
2227 return m.IndexDef
2228 }
2229 return nil
2230}
2231
2232func (m *CompiledQuery) GetOffset() int32 {
2233 if m != nil && m.Offset != nil {
2234 return *m.Offset
2235 }
2236 return Default_CompiledQuery_Offset
2237}
2238
2239func (m *CompiledQuery) GetLimit() int32 {
2240 if m != nil && m.Limit != nil {
2241 return *m.Limit
2242 }
2243 return 0
2244}
2245
2246func (m *CompiledQuery) GetKeysOnly() bool {
2247 if m != nil && m.KeysOnly != nil {
2248 return *m.KeysOnly
2249 }
2250 return false
2251}
2252
2253func (m *CompiledQuery) GetPropertyName() []string {
2254 if m != nil {
2255 return m.PropertyName
2256 }
2257 return nil
2258}
2259
2260func (m *CompiledQuery) GetDistinctInfixSize() int32 {
2261 if m != nil && m.DistinctInfixSize != nil {
2262 return *m.DistinctInfixSize
2263 }
2264 return 0
2265}
2266
2267func (m *CompiledQuery) GetEntityfilter() *CompiledQuery_EntityFilter {
2268 if m != nil {
2269 return m.Entityfilter
2270 }
2271 return nil
2272}
2273
2274type CompiledQuery_PrimaryScan struct {
2275 IndexName *string `protobuf:"bytes,2,opt,name=index_name,json=indexName" json:"index_name,omitempty"`
2276 StartKey *string `protobuf:"bytes,3,opt,name=start_key,json=startKey" json:"start_key,omitempty"`
2277 StartInclusive *bool `protobuf:"varint,4,opt,name=start_inclusive,json=startInclusive" json:"start_inclusive,omitempty"`
2278 EndKey *string `protobuf:"bytes,5,opt,name=end_key,json=endKey" json:"end_key,omitempty"`
2279 EndInclusive *bool `protobuf:"varint,6,opt,name=end_inclusive,json=endInclusive" json:"end_inclusive,omitempty"`
2280 StartPostfixValue []string `protobuf:"bytes,22,rep,name=start_postfix_value,json=startPostfixValue" json:"start_postfix_value,omitempty"`
2281 EndPostfixValue []string `protobuf:"bytes,23,rep,name=end_postfix_value,json=endPostfixValue" json:"end_postfix_value,omitempty"`
2282 EndUnappliedLogTimestampUs *int64 `protobuf:"varint,19,opt,name=end_unapplied_log_timestamp_us,json=endUnappliedLogTimestampUs" json:"end_unapplied_log_timestamp_us,omitempty"`
2283 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2284 XXX_unrecognized []byte `json:"-"`
2285 XXX_sizecache int32 `json:"-"`
2286}
2287
2288func (m *CompiledQuery_PrimaryScan) Reset() { *m = CompiledQuery_PrimaryScan{} }
2289func (m *CompiledQuery_PrimaryScan) String() string { return proto.CompactTextString(m) }
2290func (*CompiledQuery_PrimaryScan) ProtoMessage() {}
2291func (*CompiledQuery_PrimaryScan) Descriptor() ([]byte, []int) {
2292 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16, 0}
2293}
2294func (m *CompiledQuery_PrimaryScan) XXX_Unmarshal(b []byte) error {
2295 return xxx_messageInfo_CompiledQuery_PrimaryScan.Unmarshal(m, b)
2296}
2297func (m *CompiledQuery_PrimaryScan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2298 return xxx_messageInfo_CompiledQuery_PrimaryScan.Marshal(b, m, deterministic)
2299}
2300func (dst *CompiledQuery_PrimaryScan) XXX_Merge(src proto.Message) {
2301 xxx_messageInfo_CompiledQuery_PrimaryScan.Merge(dst, src)
2302}
2303func (m *CompiledQuery_PrimaryScan) XXX_Size() int {
2304 return xxx_messageInfo_CompiledQuery_PrimaryScan.Size(m)
2305}
2306func (m *CompiledQuery_PrimaryScan) XXX_DiscardUnknown() {
2307 xxx_messageInfo_CompiledQuery_PrimaryScan.DiscardUnknown(m)
2308}
2309
2310var xxx_messageInfo_CompiledQuery_PrimaryScan proto.InternalMessageInfo
2311
2312func (m *CompiledQuery_PrimaryScan) GetIndexName() string {
2313 if m != nil && m.IndexName != nil {
2314 return *m.IndexName
2315 }
2316 return ""
2317}
2318
2319func (m *CompiledQuery_PrimaryScan) GetStartKey() string {
2320 if m != nil && m.StartKey != nil {
2321 return *m.StartKey
2322 }
2323 return ""
2324}
2325
2326func (m *CompiledQuery_PrimaryScan) GetStartInclusive() bool {
2327 if m != nil && m.StartInclusive != nil {
2328 return *m.StartInclusive
2329 }
2330 return false
2331}
2332
2333func (m *CompiledQuery_PrimaryScan) GetEndKey() string {
2334 if m != nil && m.EndKey != nil {
2335 return *m.EndKey
2336 }
2337 return ""
2338}
2339
2340func (m *CompiledQuery_PrimaryScan) GetEndInclusive() bool {
2341 if m != nil && m.EndInclusive != nil {
2342 return *m.EndInclusive
2343 }
2344 return false
2345}
2346
2347func (m *CompiledQuery_PrimaryScan) GetStartPostfixValue() []string {
2348 if m != nil {
2349 return m.StartPostfixValue
2350 }
2351 return nil
2352}
2353
2354func (m *CompiledQuery_PrimaryScan) GetEndPostfixValue() []string {
2355 if m != nil {
2356 return m.EndPostfixValue
2357 }
2358 return nil
2359}
2360
2361func (m *CompiledQuery_PrimaryScan) GetEndUnappliedLogTimestampUs() int64 {
2362 if m != nil && m.EndUnappliedLogTimestampUs != nil {
2363 return *m.EndUnappliedLogTimestampUs
2364 }
2365 return 0
2366}
2367
2368type CompiledQuery_MergeJoinScan struct {
2369 IndexName *string `protobuf:"bytes,8,req,name=index_name,json=indexName" json:"index_name,omitempty"`
2370 PrefixValue []string `protobuf:"bytes,9,rep,name=prefix_value,json=prefixValue" json:"prefix_value,omitempty"`
2371 ValuePrefix *bool `protobuf:"varint,20,opt,name=value_prefix,json=valuePrefix,def=0" json:"value_prefix,omitempty"`
2372 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2373 XXX_unrecognized []byte `json:"-"`
2374 XXX_sizecache int32 `json:"-"`
2375}
2376
2377func (m *CompiledQuery_MergeJoinScan) Reset() { *m = CompiledQuery_MergeJoinScan{} }
2378func (m *CompiledQuery_MergeJoinScan) String() string { return proto.CompactTextString(m) }
2379func (*CompiledQuery_MergeJoinScan) ProtoMessage() {}
2380func (*CompiledQuery_MergeJoinScan) Descriptor() ([]byte, []int) {
2381 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16, 1}
2382}
2383func (m *CompiledQuery_MergeJoinScan) XXX_Unmarshal(b []byte) error {
2384 return xxx_messageInfo_CompiledQuery_MergeJoinScan.Unmarshal(m, b)
2385}
2386func (m *CompiledQuery_MergeJoinScan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2387 return xxx_messageInfo_CompiledQuery_MergeJoinScan.Marshal(b, m, deterministic)
2388}
2389func (dst *CompiledQuery_MergeJoinScan) XXX_Merge(src proto.Message) {
2390 xxx_messageInfo_CompiledQuery_MergeJoinScan.Merge(dst, src)
2391}
2392func (m *CompiledQuery_MergeJoinScan) XXX_Size() int {
2393 return xxx_messageInfo_CompiledQuery_MergeJoinScan.Size(m)
2394}
2395func (m *CompiledQuery_MergeJoinScan) XXX_DiscardUnknown() {
2396 xxx_messageInfo_CompiledQuery_MergeJoinScan.DiscardUnknown(m)
2397}
2398
2399var xxx_messageInfo_CompiledQuery_MergeJoinScan proto.InternalMessageInfo
2400
2401const Default_CompiledQuery_MergeJoinScan_ValuePrefix bool = false
2402
2403func (m *CompiledQuery_MergeJoinScan) GetIndexName() string {
2404 if m != nil && m.IndexName != nil {
2405 return *m.IndexName
2406 }
2407 return ""
2408}
2409
2410func (m *CompiledQuery_MergeJoinScan) GetPrefixValue() []string {
2411 if m != nil {
2412 return m.PrefixValue
2413 }
2414 return nil
2415}
2416
2417func (m *CompiledQuery_MergeJoinScan) GetValuePrefix() bool {
2418 if m != nil && m.ValuePrefix != nil {
2419 return *m.ValuePrefix
2420 }
2421 return Default_CompiledQuery_MergeJoinScan_ValuePrefix
2422}
2423
2424type CompiledQuery_EntityFilter struct {
2425 Distinct *bool `protobuf:"varint,14,opt,name=distinct,def=0" json:"distinct,omitempty"`
2426 Kind *string `protobuf:"bytes,17,opt,name=kind" json:"kind,omitempty"`
2427 Ancestor *Reference `protobuf:"bytes,18,opt,name=ancestor" json:"ancestor,omitempty"`
2428 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2429 XXX_unrecognized []byte `json:"-"`
2430 XXX_sizecache int32 `json:"-"`
2431}
2432
2433func (m *CompiledQuery_EntityFilter) Reset() { *m = CompiledQuery_EntityFilter{} }
2434func (m *CompiledQuery_EntityFilter) String() string { return proto.CompactTextString(m) }
2435func (*CompiledQuery_EntityFilter) ProtoMessage() {}
2436func (*CompiledQuery_EntityFilter) Descriptor() ([]byte, []int) {
2437 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16, 2}
2438}
2439func (m *CompiledQuery_EntityFilter) XXX_Unmarshal(b []byte) error {
2440 return xxx_messageInfo_CompiledQuery_EntityFilter.Unmarshal(m, b)
2441}
2442func (m *CompiledQuery_EntityFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2443 return xxx_messageInfo_CompiledQuery_EntityFilter.Marshal(b, m, deterministic)
2444}
2445func (dst *CompiledQuery_EntityFilter) XXX_Merge(src proto.Message) {
2446 xxx_messageInfo_CompiledQuery_EntityFilter.Merge(dst, src)
2447}
2448func (m *CompiledQuery_EntityFilter) XXX_Size() int {
2449 return xxx_messageInfo_CompiledQuery_EntityFilter.Size(m)
2450}
2451func (m *CompiledQuery_EntityFilter) XXX_DiscardUnknown() {
2452 xxx_messageInfo_CompiledQuery_EntityFilter.DiscardUnknown(m)
2453}
2454
2455var xxx_messageInfo_CompiledQuery_EntityFilter proto.InternalMessageInfo
2456
2457const Default_CompiledQuery_EntityFilter_Distinct bool = false
2458
2459func (m *CompiledQuery_EntityFilter) GetDistinct() bool {
2460 if m != nil && m.Distinct != nil {
2461 return *m.Distinct
2462 }
2463 return Default_CompiledQuery_EntityFilter_Distinct
2464}
2465
2466func (m *CompiledQuery_EntityFilter) GetKind() string {
2467 if m != nil && m.Kind != nil {
2468 return *m.Kind
2469 }
2470 return ""
2471}
2472
2473func (m *CompiledQuery_EntityFilter) GetAncestor() *Reference {
2474 if m != nil {
2475 return m.Ancestor
2476 }
2477 return nil
2478}
2479
2480type CompiledCursor struct {
2481 Position *CompiledCursor_Position `protobuf:"group,2,opt,name=Position,json=position" json:"position,omitempty"`
2482 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2483 XXX_unrecognized []byte `json:"-"`
2484 XXX_sizecache int32 `json:"-"`
2485}
2486
2487func (m *CompiledCursor) Reset() { *m = CompiledCursor{} }
2488func (m *CompiledCursor) String() string { return proto.CompactTextString(m) }
2489func (*CompiledCursor) ProtoMessage() {}
2490func (*CompiledCursor) Descriptor() ([]byte, []int) {
2491 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{17}
2492}
2493func (m *CompiledCursor) XXX_Unmarshal(b []byte) error {
2494 return xxx_messageInfo_CompiledCursor.Unmarshal(m, b)
2495}
2496func (m *CompiledCursor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2497 return xxx_messageInfo_CompiledCursor.Marshal(b, m, deterministic)
2498}
2499func (dst *CompiledCursor) XXX_Merge(src proto.Message) {
2500 xxx_messageInfo_CompiledCursor.Merge(dst, src)
2501}
2502func (m *CompiledCursor) XXX_Size() int {
2503 return xxx_messageInfo_CompiledCursor.Size(m)
2504}
2505func (m *CompiledCursor) XXX_DiscardUnknown() {
2506 xxx_messageInfo_CompiledCursor.DiscardUnknown(m)
2507}
2508
2509var xxx_messageInfo_CompiledCursor proto.InternalMessageInfo
2510
2511func (m *CompiledCursor) GetPosition() *CompiledCursor_Position {
2512 if m != nil {
2513 return m.Position
2514 }
2515 return nil
2516}
2517
2518type CompiledCursor_Position struct {
2519 StartKey *string `protobuf:"bytes,27,opt,name=start_key,json=startKey" json:"start_key,omitempty"`
2520 Indexvalue []*CompiledCursor_Position_IndexValue `protobuf:"group,29,rep,name=IndexValue,json=indexvalue" json:"indexvalue,omitempty"`
2521 Key *Reference `protobuf:"bytes,32,opt,name=key" json:"key,omitempty"`
2522 StartInclusive *bool `protobuf:"varint,28,opt,name=start_inclusive,json=startInclusive,def=1" json:"start_inclusive,omitempty"`
2523 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2524 XXX_unrecognized []byte `json:"-"`
2525 XXX_sizecache int32 `json:"-"`
2526}
2527
2528func (m *CompiledCursor_Position) Reset() { *m = CompiledCursor_Position{} }
2529func (m *CompiledCursor_Position) String() string { return proto.CompactTextString(m) }
2530func (*CompiledCursor_Position) ProtoMessage() {}
2531func (*CompiledCursor_Position) Descriptor() ([]byte, []int) {
2532 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{17, 0}
2533}
2534func (m *CompiledCursor_Position) XXX_Unmarshal(b []byte) error {
2535 return xxx_messageInfo_CompiledCursor_Position.Unmarshal(m, b)
2536}
2537func (m *CompiledCursor_Position) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2538 return xxx_messageInfo_CompiledCursor_Position.Marshal(b, m, deterministic)
2539}
2540func (dst *CompiledCursor_Position) XXX_Merge(src proto.Message) {
2541 xxx_messageInfo_CompiledCursor_Position.Merge(dst, src)
2542}
2543func (m *CompiledCursor_Position) XXX_Size() int {
2544 return xxx_messageInfo_CompiledCursor_Position.Size(m)
2545}
2546func (m *CompiledCursor_Position) XXX_DiscardUnknown() {
2547 xxx_messageInfo_CompiledCursor_Position.DiscardUnknown(m)
2548}
2549
2550var xxx_messageInfo_CompiledCursor_Position proto.InternalMessageInfo
2551
2552const Default_CompiledCursor_Position_StartInclusive bool = true
2553
2554func (m *CompiledCursor_Position) GetStartKey() string {
2555 if m != nil && m.StartKey != nil {
2556 return *m.StartKey
2557 }
2558 return ""
2559}
2560
2561func (m *CompiledCursor_Position) GetIndexvalue() []*CompiledCursor_Position_IndexValue {
2562 if m != nil {
2563 return m.Indexvalue
2564 }
2565 return nil
2566}
2567
2568func (m *CompiledCursor_Position) GetKey() *Reference {
2569 if m != nil {
2570 return m.Key
2571 }
2572 return nil
2573}
2574
2575func (m *CompiledCursor_Position) GetStartInclusive() bool {
2576 if m != nil && m.StartInclusive != nil {
2577 return *m.StartInclusive
2578 }
2579 return Default_CompiledCursor_Position_StartInclusive
2580}
2581
2582type CompiledCursor_Position_IndexValue struct {
2583 Property *string `protobuf:"bytes,30,opt,name=property" json:"property,omitempty"`
2584 Value *PropertyValue `protobuf:"bytes,31,req,name=value" json:"value,omitempty"`
2585 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2586 XXX_unrecognized []byte `json:"-"`
2587 XXX_sizecache int32 `json:"-"`
2588}
2589
2590func (m *CompiledCursor_Position_IndexValue) Reset() { *m = CompiledCursor_Position_IndexValue{} }
2591func (m *CompiledCursor_Position_IndexValue) String() string { return proto.CompactTextString(m) }
2592func (*CompiledCursor_Position_IndexValue) ProtoMessage() {}
2593func (*CompiledCursor_Position_IndexValue) Descriptor() ([]byte, []int) {
2594 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{17, 0, 0}
2595}
2596func (m *CompiledCursor_Position_IndexValue) XXX_Unmarshal(b []byte) error {
2597 return xxx_messageInfo_CompiledCursor_Position_IndexValue.Unmarshal(m, b)
2598}
2599func (m *CompiledCursor_Position_IndexValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2600 return xxx_messageInfo_CompiledCursor_Position_IndexValue.Marshal(b, m, deterministic)
2601}
2602func (dst *CompiledCursor_Position_IndexValue) XXX_Merge(src proto.Message) {
2603 xxx_messageInfo_CompiledCursor_Position_IndexValue.Merge(dst, src)
2604}
2605func (m *CompiledCursor_Position_IndexValue) XXX_Size() int {
2606 return xxx_messageInfo_CompiledCursor_Position_IndexValue.Size(m)
2607}
2608func (m *CompiledCursor_Position_IndexValue) XXX_DiscardUnknown() {
2609 xxx_messageInfo_CompiledCursor_Position_IndexValue.DiscardUnknown(m)
2610}
2611
2612var xxx_messageInfo_CompiledCursor_Position_IndexValue proto.InternalMessageInfo
2613
2614func (m *CompiledCursor_Position_IndexValue) GetProperty() string {
2615 if m != nil && m.Property != nil {
2616 return *m.Property
2617 }
2618 return ""
2619}
2620
2621func (m *CompiledCursor_Position_IndexValue) GetValue() *PropertyValue {
2622 if m != nil {
2623 return m.Value
2624 }
2625 return nil
2626}
2627
2628type Cursor struct {
2629 Cursor *uint64 `protobuf:"fixed64,1,req,name=cursor" json:"cursor,omitempty"`
2630 App *string `protobuf:"bytes,2,opt,name=app" json:"app,omitempty"`
2631 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2632 XXX_unrecognized []byte `json:"-"`
2633 XXX_sizecache int32 `json:"-"`
2634}
2635
2636func (m *Cursor) Reset() { *m = Cursor{} }
2637func (m *Cursor) String() string { return proto.CompactTextString(m) }
2638func (*Cursor) ProtoMessage() {}
2639func (*Cursor) Descriptor() ([]byte, []int) {
2640 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{18}
2641}
2642func (m *Cursor) XXX_Unmarshal(b []byte) error {
2643 return xxx_messageInfo_Cursor.Unmarshal(m, b)
2644}
2645func (m *Cursor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2646 return xxx_messageInfo_Cursor.Marshal(b, m, deterministic)
2647}
2648func (dst *Cursor) XXX_Merge(src proto.Message) {
2649 xxx_messageInfo_Cursor.Merge(dst, src)
2650}
2651func (m *Cursor) XXX_Size() int {
2652 return xxx_messageInfo_Cursor.Size(m)
2653}
2654func (m *Cursor) XXX_DiscardUnknown() {
2655 xxx_messageInfo_Cursor.DiscardUnknown(m)
2656}
2657
2658var xxx_messageInfo_Cursor proto.InternalMessageInfo
2659
2660func (m *Cursor) GetCursor() uint64 {
2661 if m != nil && m.Cursor != nil {
2662 return *m.Cursor
2663 }
2664 return 0
2665}
2666
2667func (m *Cursor) GetApp() string {
2668 if m != nil && m.App != nil {
2669 return *m.App
2670 }
2671 return ""
2672}
2673
2674type Error struct {
2675 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2676 XXX_unrecognized []byte `json:"-"`
2677 XXX_sizecache int32 `json:"-"`
2678}
2679
2680func (m *Error) Reset() { *m = Error{} }
2681func (m *Error) String() string { return proto.CompactTextString(m) }
2682func (*Error) ProtoMessage() {}
2683func (*Error) Descriptor() ([]byte, []int) {
2684 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{19}
2685}
2686func (m *Error) XXX_Unmarshal(b []byte) error {
2687 return xxx_messageInfo_Error.Unmarshal(m, b)
2688}
2689func (m *Error) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2690 return xxx_messageInfo_Error.Marshal(b, m, deterministic)
2691}
2692func (dst *Error) XXX_Merge(src proto.Message) {
2693 xxx_messageInfo_Error.Merge(dst, src)
2694}
2695func (m *Error) XXX_Size() int {
2696 return xxx_messageInfo_Error.Size(m)
2697}
2698func (m *Error) XXX_DiscardUnknown() {
2699 xxx_messageInfo_Error.DiscardUnknown(m)
2700}
2701
2702var xxx_messageInfo_Error proto.InternalMessageInfo
2703
2704type Cost struct {
2705 IndexWrites *int32 `protobuf:"varint,1,opt,name=index_writes,json=indexWrites" json:"index_writes,omitempty"`
2706 IndexWriteBytes *int32 `protobuf:"varint,2,opt,name=index_write_bytes,json=indexWriteBytes" json:"index_write_bytes,omitempty"`
2707 EntityWrites *int32 `protobuf:"varint,3,opt,name=entity_writes,json=entityWrites" json:"entity_writes,omitempty"`
2708 EntityWriteBytes *int32 `protobuf:"varint,4,opt,name=entity_write_bytes,json=entityWriteBytes" json:"entity_write_bytes,omitempty"`
2709 Commitcost *Cost_CommitCost `protobuf:"group,5,opt,name=CommitCost,json=commitcost" json:"commitcost,omitempty"`
2710 ApproximateStorageDelta *int32 `protobuf:"varint,8,opt,name=approximate_storage_delta,json=approximateStorageDelta" json:"approximate_storage_delta,omitempty"`
2711 IdSequenceUpdates *int32 `protobuf:"varint,9,opt,name=id_sequence_updates,json=idSequenceUpdates" json:"id_sequence_updates,omitempty"`
2712 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2713 XXX_unrecognized []byte `json:"-"`
2714 XXX_sizecache int32 `json:"-"`
2715}
2716
2717func (m *Cost) Reset() { *m = Cost{} }
2718func (m *Cost) String() string { return proto.CompactTextString(m) }
2719func (*Cost) ProtoMessage() {}
2720func (*Cost) Descriptor() ([]byte, []int) {
2721 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{20}
2722}
2723func (m *Cost) XXX_Unmarshal(b []byte) error {
2724 return xxx_messageInfo_Cost.Unmarshal(m, b)
2725}
2726func (m *Cost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2727 return xxx_messageInfo_Cost.Marshal(b, m, deterministic)
2728}
2729func (dst *Cost) XXX_Merge(src proto.Message) {
2730 xxx_messageInfo_Cost.Merge(dst, src)
2731}
2732func (m *Cost) XXX_Size() int {
2733 return xxx_messageInfo_Cost.Size(m)
2734}
2735func (m *Cost) XXX_DiscardUnknown() {
2736 xxx_messageInfo_Cost.DiscardUnknown(m)
2737}
2738
2739var xxx_messageInfo_Cost proto.InternalMessageInfo
2740
2741func (m *Cost) GetIndexWrites() int32 {
2742 if m != nil && m.IndexWrites != nil {
2743 return *m.IndexWrites
2744 }
2745 return 0
2746}
2747
2748func (m *Cost) GetIndexWriteBytes() int32 {
2749 if m != nil && m.IndexWriteBytes != nil {
2750 return *m.IndexWriteBytes
2751 }
2752 return 0
2753}
2754
2755func (m *Cost) GetEntityWrites() int32 {
2756 if m != nil && m.EntityWrites != nil {
2757 return *m.EntityWrites
2758 }
2759 return 0
2760}
2761
2762func (m *Cost) GetEntityWriteBytes() int32 {
2763 if m != nil && m.EntityWriteBytes != nil {
2764 return *m.EntityWriteBytes
2765 }
2766 return 0
2767}
2768
2769func (m *Cost) GetCommitcost() *Cost_CommitCost {
2770 if m != nil {
2771 return m.Commitcost
2772 }
2773 return nil
2774}
2775
2776func (m *Cost) GetApproximateStorageDelta() int32 {
2777 if m != nil && m.ApproximateStorageDelta != nil {
2778 return *m.ApproximateStorageDelta
2779 }
2780 return 0
2781}
2782
2783func (m *Cost) GetIdSequenceUpdates() int32 {
2784 if m != nil && m.IdSequenceUpdates != nil {
2785 return *m.IdSequenceUpdates
2786 }
2787 return 0
2788}
2789
2790type Cost_CommitCost struct {
2791 RequestedEntityPuts *int32 `protobuf:"varint,6,opt,name=requested_entity_puts,json=requestedEntityPuts" json:"requested_entity_puts,omitempty"`
2792 RequestedEntityDeletes *int32 `protobuf:"varint,7,opt,name=requested_entity_deletes,json=requestedEntityDeletes" json:"requested_entity_deletes,omitempty"`
2793 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2794 XXX_unrecognized []byte `json:"-"`
2795 XXX_sizecache int32 `json:"-"`
2796}
2797
2798func (m *Cost_CommitCost) Reset() { *m = Cost_CommitCost{} }
2799func (m *Cost_CommitCost) String() string { return proto.CompactTextString(m) }
2800func (*Cost_CommitCost) ProtoMessage() {}
2801func (*Cost_CommitCost) Descriptor() ([]byte, []int) {
2802 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{20, 0}
2803}
2804func (m *Cost_CommitCost) XXX_Unmarshal(b []byte) error {
2805 return xxx_messageInfo_Cost_CommitCost.Unmarshal(m, b)
2806}
2807func (m *Cost_CommitCost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2808 return xxx_messageInfo_Cost_CommitCost.Marshal(b, m, deterministic)
2809}
2810func (dst *Cost_CommitCost) XXX_Merge(src proto.Message) {
2811 xxx_messageInfo_Cost_CommitCost.Merge(dst, src)
2812}
2813func (m *Cost_CommitCost) XXX_Size() int {
2814 return xxx_messageInfo_Cost_CommitCost.Size(m)
2815}
2816func (m *Cost_CommitCost) XXX_DiscardUnknown() {
2817 xxx_messageInfo_Cost_CommitCost.DiscardUnknown(m)
2818}
2819
2820var xxx_messageInfo_Cost_CommitCost proto.InternalMessageInfo
2821
2822func (m *Cost_CommitCost) GetRequestedEntityPuts() int32 {
2823 if m != nil && m.RequestedEntityPuts != nil {
2824 return *m.RequestedEntityPuts
2825 }
2826 return 0
2827}
2828
2829func (m *Cost_CommitCost) GetRequestedEntityDeletes() int32 {
2830 if m != nil && m.RequestedEntityDeletes != nil {
2831 return *m.RequestedEntityDeletes
2832 }
2833 return 0
2834}
2835
2836type GetRequest struct {
2837 Header *InternalHeader `protobuf:"bytes,6,opt,name=header" json:"header,omitempty"`
2838 Key []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
2839 Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
2840 FailoverMs *int64 `protobuf:"varint,3,opt,name=failover_ms,json=failoverMs" json:"failover_ms,omitempty"`
2841 Strong *bool `protobuf:"varint,4,opt,name=strong" json:"strong,omitempty"`
2842 AllowDeferred *bool `protobuf:"varint,5,opt,name=allow_deferred,json=allowDeferred,def=0" json:"allow_deferred,omitempty"`
2843 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2844 XXX_unrecognized []byte `json:"-"`
2845 XXX_sizecache int32 `json:"-"`
2846}
2847
2848func (m *GetRequest) Reset() { *m = GetRequest{} }
2849func (m *GetRequest) String() string { return proto.CompactTextString(m) }
2850func (*GetRequest) ProtoMessage() {}
2851func (*GetRequest) Descriptor() ([]byte, []int) {
2852 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{21}
2853}
2854func (m *GetRequest) XXX_Unmarshal(b []byte) error {
2855 return xxx_messageInfo_GetRequest.Unmarshal(m, b)
2856}
2857func (m *GetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2858 return xxx_messageInfo_GetRequest.Marshal(b, m, deterministic)
2859}
2860func (dst *GetRequest) XXX_Merge(src proto.Message) {
2861 xxx_messageInfo_GetRequest.Merge(dst, src)
2862}
2863func (m *GetRequest) XXX_Size() int {
2864 return xxx_messageInfo_GetRequest.Size(m)
2865}
2866func (m *GetRequest) XXX_DiscardUnknown() {
2867 xxx_messageInfo_GetRequest.DiscardUnknown(m)
2868}
2869
2870var xxx_messageInfo_GetRequest proto.InternalMessageInfo
2871
2872const Default_GetRequest_AllowDeferred bool = false
2873
2874func (m *GetRequest) GetHeader() *InternalHeader {
2875 if m != nil {
2876 return m.Header
2877 }
2878 return nil
2879}
2880
2881func (m *GetRequest) GetKey() []*Reference {
2882 if m != nil {
2883 return m.Key
2884 }
2885 return nil
2886}
2887
2888func (m *GetRequest) GetTransaction() *Transaction {
2889 if m != nil {
2890 return m.Transaction
2891 }
2892 return nil
2893}
2894
2895func (m *GetRequest) GetFailoverMs() int64 {
2896 if m != nil && m.FailoverMs != nil {
2897 return *m.FailoverMs
2898 }
2899 return 0
2900}
2901
2902func (m *GetRequest) GetStrong() bool {
2903 if m != nil && m.Strong != nil {
2904 return *m.Strong
2905 }
2906 return false
2907}
2908
2909func (m *GetRequest) GetAllowDeferred() bool {
2910 if m != nil && m.AllowDeferred != nil {
2911 return *m.AllowDeferred
2912 }
2913 return Default_GetRequest_AllowDeferred
2914}
2915
2916type GetResponse struct {
2917 Entity []*GetResponse_Entity `protobuf:"group,1,rep,name=Entity,json=entity" json:"entity,omitempty"`
2918 Deferred []*Reference `protobuf:"bytes,5,rep,name=deferred" json:"deferred,omitempty"`
2919 InOrder *bool `protobuf:"varint,6,opt,name=in_order,json=inOrder,def=1" json:"in_order,omitempty"`
2920 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2921 XXX_unrecognized []byte `json:"-"`
2922 XXX_sizecache int32 `json:"-"`
2923}
2924
2925func (m *GetResponse) Reset() { *m = GetResponse{} }
2926func (m *GetResponse) String() string { return proto.CompactTextString(m) }
2927func (*GetResponse) ProtoMessage() {}
2928func (*GetResponse) Descriptor() ([]byte, []int) {
2929 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{22}
2930}
2931func (m *GetResponse) XXX_Unmarshal(b []byte) error {
2932 return xxx_messageInfo_GetResponse.Unmarshal(m, b)
2933}
2934func (m *GetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2935 return xxx_messageInfo_GetResponse.Marshal(b, m, deterministic)
2936}
2937func (dst *GetResponse) XXX_Merge(src proto.Message) {
2938 xxx_messageInfo_GetResponse.Merge(dst, src)
2939}
2940func (m *GetResponse) XXX_Size() int {
2941 return xxx_messageInfo_GetResponse.Size(m)
2942}
2943func (m *GetResponse) XXX_DiscardUnknown() {
2944 xxx_messageInfo_GetResponse.DiscardUnknown(m)
2945}
2946
2947var xxx_messageInfo_GetResponse proto.InternalMessageInfo
2948
2949const Default_GetResponse_InOrder bool = true
2950
2951func (m *GetResponse) GetEntity() []*GetResponse_Entity {
2952 if m != nil {
2953 return m.Entity
2954 }
2955 return nil
2956}
2957
2958func (m *GetResponse) GetDeferred() []*Reference {
2959 if m != nil {
2960 return m.Deferred
2961 }
2962 return nil
2963}
2964
2965func (m *GetResponse) GetInOrder() bool {
2966 if m != nil && m.InOrder != nil {
2967 return *m.InOrder
2968 }
2969 return Default_GetResponse_InOrder
2970}
2971
2972type GetResponse_Entity struct {
2973 Entity *EntityProto `protobuf:"bytes,2,opt,name=entity" json:"entity,omitempty"`
2974 Key *Reference `protobuf:"bytes,4,opt,name=key" json:"key,omitempty"`
2975 Version *int64 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"`
2976 XXX_NoUnkeyedLiteral struct{} `json:"-"`
2977 XXX_unrecognized []byte `json:"-"`
2978 XXX_sizecache int32 `json:"-"`
2979}
2980
2981func (m *GetResponse_Entity) Reset() { *m = GetResponse_Entity{} }
2982func (m *GetResponse_Entity) String() string { return proto.CompactTextString(m) }
2983func (*GetResponse_Entity) ProtoMessage() {}
2984func (*GetResponse_Entity) Descriptor() ([]byte, []int) {
2985 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{22, 0}
2986}
2987func (m *GetResponse_Entity) XXX_Unmarshal(b []byte) error {
2988 return xxx_messageInfo_GetResponse_Entity.Unmarshal(m, b)
2989}
2990func (m *GetResponse_Entity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
2991 return xxx_messageInfo_GetResponse_Entity.Marshal(b, m, deterministic)
2992}
2993func (dst *GetResponse_Entity) XXX_Merge(src proto.Message) {
2994 xxx_messageInfo_GetResponse_Entity.Merge(dst, src)
2995}
2996func (m *GetResponse_Entity) XXX_Size() int {
2997 return xxx_messageInfo_GetResponse_Entity.Size(m)
2998}
2999func (m *GetResponse_Entity) XXX_DiscardUnknown() {
3000 xxx_messageInfo_GetResponse_Entity.DiscardUnknown(m)
3001}
3002
3003var xxx_messageInfo_GetResponse_Entity proto.InternalMessageInfo
3004
3005func (m *GetResponse_Entity) GetEntity() *EntityProto {
3006 if m != nil {
3007 return m.Entity
3008 }
3009 return nil
3010}
3011
3012func (m *GetResponse_Entity) GetKey() *Reference {
3013 if m != nil {
3014 return m.Key
3015 }
3016 return nil
3017}
3018
3019func (m *GetResponse_Entity) GetVersion() int64 {
3020 if m != nil && m.Version != nil {
3021 return *m.Version
3022 }
3023 return 0
3024}
3025
3026type PutRequest struct {
3027 Header *InternalHeader `protobuf:"bytes,11,opt,name=header" json:"header,omitempty"`
3028 Entity []*EntityProto `protobuf:"bytes,1,rep,name=entity" json:"entity,omitempty"`
3029 Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
3030 CompositeIndex []*CompositeIndex `protobuf:"bytes,3,rep,name=composite_index,json=compositeIndex" json:"composite_index,omitempty"`
3031 Trusted *bool `protobuf:"varint,4,opt,name=trusted,def=0" json:"trusted,omitempty"`
3032 Force *bool `protobuf:"varint,7,opt,name=force,def=0" json:"force,omitempty"`
3033 MarkChanges *bool `protobuf:"varint,8,opt,name=mark_changes,json=markChanges,def=0" json:"mark_changes,omitempty"`
3034 Snapshot []*Snapshot `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"`
3035 AutoIdPolicy *PutRequest_AutoIdPolicy `protobuf:"varint,10,opt,name=auto_id_policy,json=autoIdPolicy,enum=appengine.PutRequest_AutoIdPolicy,def=0" json:"auto_id_policy,omitempty"`
3036 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3037 XXX_unrecognized []byte `json:"-"`
3038 XXX_sizecache int32 `json:"-"`
3039}
3040
3041func (m *PutRequest) Reset() { *m = PutRequest{} }
3042func (m *PutRequest) String() string { return proto.CompactTextString(m) }
3043func (*PutRequest) ProtoMessage() {}
3044func (*PutRequest) Descriptor() ([]byte, []int) {
3045 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{23}
3046}
3047func (m *PutRequest) XXX_Unmarshal(b []byte) error {
3048 return xxx_messageInfo_PutRequest.Unmarshal(m, b)
3049}
3050func (m *PutRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3051 return xxx_messageInfo_PutRequest.Marshal(b, m, deterministic)
3052}
3053func (dst *PutRequest) XXX_Merge(src proto.Message) {
3054 xxx_messageInfo_PutRequest.Merge(dst, src)
3055}
3056func (m *PutRequest) XXX_Size() int {
3057 return xxx_messageInfo_PutRequest.Size(m)
3058}
3059func (m *PutRequest) XXX_DiscardUnknown() {
3060 xxx_messageInfo_PutRequest.DiscardUnknown(m)
3061}
3062
3063var xxx_messageInfo_PutRequest proto.InternalMessageInfo
3064
3065const Default_PutRequest_Trusted bool = false
3066const Default_PutRequest_Force bool = false
3067const Default_PutRequest_MarkChanges bool = false
3068const Default_PutRequest_AutoIdPolicy PutRequest_AutoIdPolicy = PutRequest_CURRENT
3069
3070func (m *PutRequest) GetHeader() *InternalHeader {
3071 if m != nil {
3072 return m.Header
3073 }
3074 return nil
3075}
3076
3077func (m *PutRequest) GetEntity() []*EntityProto {
3078 if m != nil {
3079 return m.Entity
3080 }
3081 return nil
3082}
3083
3084func (m *PutRequest) GetTransaction() *Transaction {
3085 if m != nil {
3086 return m.Transaction
3087 }
3088 return nil
3089}
3090
3091func (m *PutRequest) GetCompositeIndex() []*CompositeIndex {
3092 if m != nil {
3093 return m.CompositeIndex
3094 }
3095 return nil
3096}
3097
3098func (m *PutRequest) GetTrusted() bool {
3099 if m != nil && m.Trusted != nil {
3100 return *m.Trusted
3101 }
3102 return Default_PutRequest_Trusted
3103}
3104
3105func (m *PutRequest) GetForce() bool {
3106 if m != nil && m.Force != nil {
3107 return *m.Force
3108 }
3109 return Default_PutRequest_Force
3110}
3111
3112func (m *PutRequest) GetMarkChanges() bool {
3113 if m != nil && m.MarkChanges != nil {
3114 return *m.MarkChanges
3115 }
3116 return Default_PutRequest_MarkChanges
3117}
3118
3119func (m *PutRequest) GetSnapshot() []*Snapshot {
3120 if m != nil {
3121 return m.Snapshot
3122 }
3123 return nil
3124}
3125
3126func (m *PutRequest) GetAutoIdPolicy() PutRequest_AutoIdPolicy {
3127 if m != nil && m.AutoIdPolicy != nil {
3128 return *m.AutoIdPolicy
3129 }
3130 return Default_PutRequest_AutoIdPolicy
3131}
3132
3133type PutResponse struct {
3134 Key []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
3135 Cost *Cost `protobuf:"bytes,2,opt,name=cost" json:"cost,omitempty"`
3136 Version []int64 `protobuf:"varint,3,rep,name=version" json:"version,omitempty"`
3137 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3138 XXX_unrecognized []byte `json:"-"`
3139 XXX_sizecache int32 `json:"-"`
3140}
3141
3142func (m *PutResponse) Reset() { *m = PutResponse{} }
3143func (m *PutResponse) String() string { return proto.CompactTextString(m) }
3144func (*PutResponse) ProtoMessage() {}
3145func (*PutResponse) Descriptor() ([]byte, []int) {
3146 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{24}
3147}
3148func (m *PutResponse) XXX_Unmarshal(b []byte) error {
3149 return xxx_messageInfo_PutResponse.Unmarshal(m, b)
3150}
3151func (m *PutResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3152 return xxx_messageInfo_PutResponse.Marshal(b, m, deterministic)
3153}
3154func (dst *PutResponse) XXX_Merge(src proto.Message) {
3155 xxx_messageInfo_PutResponse.Merge(dst, src)
3156}
3157func (m *PutResponse) XXX_Size() int {
3158 return xxx_messageInfo_PutResponse.Size(m)
3159}
3160func (m *PutResponse) XXX_DiscardUnknown() {
3161 xxx_messageInfo_PutResponse.DiscardUnknown(m)
3162}
3163
3164var xxx_messageInfo_PutResponse proto.InternalMessageInfo
3165
3166func (m *PutResponse) GetKey() []*Reference {
3167 if m != nil {
3168 return m.Key
3169 }
3170 return nil
3171}
3172
3173func (m *PutResponse) GetCost() *Cost {
3174 if m != nil {
3175 return m.Cost
3176 }
3177 return nil
3178}
3179
3180func (m *PutResponse) GetVersion() []int64 {
3181 if m != nil {
3182 return m.Version
3183 }
3184 return nil
3185}
3186
3187type TouchRequest struct {
3188 Header *InternalHeader `protobuf:"bytes,10,opt,name=header" json:"header,omitempty"`
3189 Key []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
3190 CompositeIndex []*CompositeIndex `protobuf:"bytes,2,rep,name=composite_index,json=compositeIndex" json:"composite_index,omitempty"`
3191 Force *bool `protobuf:"varint,3,opt,name=force,def=0" json:"force,omitempty"`
3192 Snapshot []*Snapshot `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"`
3193 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3194 XXX_unrecognized []byte `json:"-"`
3195 XXX_sizecache int32 `json:"-"`
3196}
3197
3198func (m *TouchRequest) Reset() { *m = TouchRequest{} }
3199func (m *TouchRequest) String() string { return proto.CompactTextString(m) }
3200func (*TouchRequest) ProtoMessage() {}
3201func (*TouchRequest) Descriptor() ([]byte, []int) {
3202 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{25}
3203}
3204func (m *TouchRequest) XXX_Unmarshal(b []byte) error {
3205 return xxx_messageInfo_TouchRequest.Unmarshal(m, b)
3206}
3207func (m *TouchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3208 return xxx_messageInfo_TouchRequest.Marshal(b, m, deterministic)
3209}
3210func (dst *TouchRequest) XXX_Merge(src proto.Message) {
3211 xxx_messageInfo_TouchRequest.Merge(dst, src)
3212}
3213func (m *TouchRequest) XXX_Size() int {
3214 return xxx_messageInfo_TouchRequest.Size(m)
3215}
3216func (m *TouchRequest) XXX_DiscardUnknown() {
3217 xxx_messageInfo_TouchRequest.DiscardUnknown(m)
3218}
3219
3220var xxx_messageInfo_TouchRequest proto.InternalMessageInfo
3221
3222const Default_TouchRequest_Force bool = false
3223
3224func (m *TouchRequest) GetHeader() *InternalHeader {
3225 if m != nil {
3226 return m.Header
3227 }
3228 return nil
3229}
3230
3231func (m *TouchRequest) GetKey() []*Reference {
3232 if m != nil {
3233 return m.Key
3234 }
3235 return nil
3236}
3237
3238func (m *TouchRequest) GetCompositeIndex() []*CompositeIndex {
3239 if m != nil {
3240 return m.CompositeIndex
3241 }
3242 return nil
3243}
3244
3245func (m *TouchRequest) GetForce() bool {
3246 if m != nil && m.Force != nil {
3247 return *m.Force
3248 }
3249 return Default_TouchRequest_Force
3250}
3251
3252func (m *TouchRequest) GetSnapshot() []*Snapshot {
3253 if m != nil {
3254 return m.Snapshot
3255 }
3256 return nil
3257}
3258
3259type TouchResponse struct {
3260 Cost *Cost `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"`
3261 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3262 XXX_unrecognized []byte `json:"-"`
3263 XXX_sizecache int32 `json:"-"`
3264}
3265
3266func (m *TouchResponse) Reset() { *m = TouchResponse{} }
3267func (m *TouchResponse) String() string { return proto.CompactTextString(m) }
3268func (*TouchResponse) ProtoMessage() {}
3269func (*TouchResponse) Descriptor() ([]byte, []int) {
3270 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{26}
3271}
3272func (m *TouchResponse) XXX_Unmarshal(b []byte) error {
3273 return xxx_messageInfo_TouchResponse.Unmarshal(m, b)
3274}
3275func (m *TouchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3276 return xxx_messageInfo_TouchResponse.Marshal(b, m, deterministic)
3277}
3278func (dst *TouchResponse) XXX_Merge(src proto.Message) {
3279 xxx_messageInfo_TouchResponse.Merge(dst, src)
3280}
3281func (m *TouchResponse) XXX_Size() int {
3282 return xxx_messageInfo_TouchResponse.Size(m)
3283}
3284func (m *TouchResponse) XXX_DiscardUnknown() {
3285 xxx_messageInfo_TouchResponse.DiscardUnknown(m)
3286}
3287
3288var xxx_messageInfo_TouchResponse proto.InternalMessageInfo
3289
3290func (m *TouchResponse) GetCost() *Cost {
3291 if m != nil {
3292 return m.Cost
3293 }
3294 return nil
3295}
3296
3297type DeleteRequest struct {
3298 Header *InternalHeader `protobuf:"bytes,10,opt,name=header" json:"header,omitempty"`
3299 Key []*Reference `protobuf:"bytes,6,rep,name=key" json:"key,omitempty"`
3300 Transaction *Transaction `protobuf:"bytes,5,opt,name=transaction" json:"transaction,omitempty"`
3301 Trusted *bool `protobuf:"varint,4,opt,name=trusted,def=0" json:"trusted,omitempty"`
3302 Force *bool `protobuf:"varint,7,opt,name=force,def=0" json:"force,omitempty"`
3303 MarkChanges *bool `protobuf:"varint,8,opt,name=mark_changes,json=markChanges,def=0" json:"mark_changes,omitempty"`
3304 Snapshot []*Snapshot `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"`
3305 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3306 XXX_unrecognized []byte `json:"-"`
3307 XXX_sizecache int32 `json:"-"`
3308}
3309
3310func (m *DeleteRequest) Reset() { *m = DeleteRequest{} }
3311func (m *DeleteRequest) String() string { return proto.CompactTextString(m) }
3312func (*DeleteRequest) ProtoMessage() {}
3313func (*DeleteRequest) Descriptor() ([]byte, []int) {
3314 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{27}
3315}
3316func (m *DeleteRequest) XXX_Unmarshal(b []byte) error {
3317 return xxx_messageInfo_DeleteRequest.Unmarshal(m, b)
3318}
3319func (m *DeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3320 return xxx_messageInfo_DeleteRequest.Marshal(b, m, deterministic)
3321}
3322func (dst *DeleteRequest) XXX_Merge(src proto.Message) {
3323 xxx_messageInfo_DeleteRequest.Merge(dst, src)
3324}
3325func (m *DeleteRequest) XXX_Size() int {
3326 return xxx_messageInfo_DeleteRequest.Size(m)
3327}
3328func (m *DeleteRequest) XXX_DiscardUnknown() {
3329 xxx_messageInfo_DeleteRequest.DiscardUnknown(m)
3330}
3331
3332var xxx_messageInfo_DeleteRequest proto.InternalMessageInfo
3333
3334const Default_DeleteRequest_Trusted bool = false
3335const Default_DeleteRequest_Force bool = false
3336const Default_DeleteRequest_MarkChanges bool = false
3337
3338func (m *DeleteRequest) GetHeader() *InternalHeader {
3339 if m != nil {
3340 return m.Header
3341 }
3342 return nil
3343}
3344
3345func (m *DeleteRequest) GetKey() []*Reference {
3346 if m != nil {
3347 return m.Key
3348 }
3349 return nil
3350}
3351
3352func (m *DeleteRequest) GetTransaction() *Transaction {
3353 if m != nil {
3354 return m.Transaction
3355 }
3356 return nil
3357}
3358
3359func (m *DeleteRequest) GetTrusted() bool {
3360 if m != nil && m.Trusted != nil {
3361 return *m.Trusted
3362 }
3363 return Default_DeleteRequest_Trusted
3364}
3365
3366func (m *DeleteRequest) GetForce() bool {
3367 if m != nil && m.Force != nil {
3368 return *m.Force
3369 }
3370 return Default_DeleteRequest_Force
3371}
3372
3373func (m *DeleteRequest) GetMarkChanges() bool {
3374 if m != nil && m.MarkChanges != nil {
3375 return *m.MarkChanges
3376 }
3377 return Default_DeleteRequest_MarkChanges
3378}
3379
3380func (m *DeleteRequest) GetSnapshot() []*Snapshot {
3381 if m != nil {
3382 return m.Snapshot
3383 }
3384 return nil
3385}
3386
3387type DeleteResponse struct {
3388 Cost *Cost `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"`
3389 Version []int64 `protobuf:"varint,3,rep,name=version" json:"version,omitempty"`
3390 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3391 XXX_unrecognized []byte `json:"-"`
3392 XXX_sizecache int32 `json:"-"`
3393}
3394
3395func (m *DeleteResponse) Reset() { *m = DeleteResponse{} }
3396func (m *DeleteResponse) String() string { return proto.CompactTextString(m) }
3397func (*DeleteResponse) ProtoMessage() {}
3398func (*DeleteResponse) Descriptor() ([]byte, []int) {
3399 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{28}
3400}
3401func (m *DeleteResponse) XXX_Unmarshal(b []byte) error {
3402 return xxx_messageInfo_DeleteResponse.Unmarshal(m, b)
3403}
3404func (m *DeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3405 return xxx_messageInfo_DeleteResponse.Marshal(b, m, deterministic)
3406}
3407func (dst *DeleteResponse) XXX_Merge(src proto.Message) {
3408 xxx_messageInfo_DeleteResponse.Merge(dst, src)
3409}
3410func (m *DeleteResponse) XXX_Size() int {
3411 return xxx_messageInfo_DeleteResponse.Size(m)
3412}
3413func (m *DeleteResponse) XXX_DiscardUnknown() {
3414 xxx_messageInfo_DeleteResponse.DiscardUnknown(m)
3415}
3416
3417var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo
3418
3419func (m *DeleteResponse) GetCost() *Cost {
3420 if m != nil {
3421 return m.Cost
3422 }
3423 return nil
3424}
3425
3426func (m *DeleteResponse) GetVersion() []int64 {
3427 if m != nil {
3428 return m.Version
3429 }
3430 return nil
3431}
3432
3433type NextRequest struct {
3434 Header *InternalHeader `protobuf:"bytes,5,opt,name=header" json:"header,omitempty"`
3435 Cursor *Cursor `protobuf:"bytes,1,req,name=cursor" json:"cursor,omitempty"`
3436 Count *int32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"`
3437 Offset *int32 `protobuf:"varint,4,opt,name=offset,def=0" json:"offset,omitempty"`
3438 Compile *bool `protobuf:"varint,3,opt,name=compile,def=0" json:"compile,omitempty"`
3439 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3440 XXX_unrecognized []byte `json:"-"`
3441 XXX_sizecache int32 `json:"-"`
3442}
3443
3444func (m *NextRequest) Reset() { *m = NextRequest{} }
3445func (m *NextRequest) String() string { return proto.CompactTextString(m) }
3446func (*NextRequest) ProtoMessage() {}
3447func (*NextRequest) Descriptor() ([]byte, []int) {
3448 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{29}
3449}
3450func (m *NextRequest) XXX_Unmarshal(b []byte) error {
3451 return xxx_messageInfo_NextRequest.Unmarshal(m, b)
3452}
3453func (m *NextRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3454 return xxx_messageInfo_NextRequest.Marshal(b, m, deterministic)
3455}
3456func (dst *NextRequest) XXX_Merge(src proto.Message) {
3457 xxx_messageInfo_NextRequest.Merge(dst, src)
3458}
3459func (m *NextRequest) XXX_Size() int {
3460 return xxx_messageInfo_NextRequest.Size(m)
3461}
3462func (m *NextRequest) XXX_DiscardUnknown() {
3463 xxx_messageInfo_NextRequest.DiscardUnknown(m)
3464}
3465
3466var xxx_messageInfo_NextRequest proto.InternalMessageInfo
3467
3468const Default_NextRequest_Offset int32 = 0
3469const Default_NextRequest_Compile bool = false
3470
3471func (m *NextRequest) GetHeader() *InternalHeader {
3472 if m != nil {
3473 return m.Header
3474 }
3475 return nil
3476}
3477
3478func (m *NextRequest) GetCursor() *Cursor {
3479 if m != nil {
3480 return m.Cursor
3481 }
3482 return nil
3483}
3484
3485func (m *NextRequest) GetCount() int32 {
3486 if m != nil && m.Count != nil {
3487 return *m.Count
3488 }
3489 return 0
3490}
3491
3492func (m *NextRequest) GetOffset() int32 {
3493 if m != nil && m.Offset != nil {
3494 return *m.Offset
3495 }
3496 return Default_NextRequest_Offset
3497}
3498
3499func (m *NextRequest) GetCompile() bool {
3500 if m != nil && m.Compile != nil {
3501 return *m.Compile
3502 }
3503 return Default_NextRequest_Compile
3504}
3505
3506type QueryResult struct {
3507 Cursor *Cursor `protobuf:"bytes,1,opt,name=cursor" json:"cursor,omitempty"`
3508 Result []*EntityProto `protobuf:"bytes,2,rep,name=result" json:"result,omitempty"`
3509 SkippedResults *int32 `protobuf:"varint,7,opt,name=skipped_results,json=skippedResults" json:"skipped_results,omitempty"`
3510 MoreResults *bool `protobuf:"varint,3,req,name=more_results,json=moreResults" json:"more_results,omitempty"`
3511 KeysOnly *bool `protobuf:"varint,4,opt,name=keys_only,json=keysOnly" json:"keys_only,omitempty"`
3512 IndexOnly *bool `protobuf:"varint,9,opt,name=index_only,json=indexOnly" json:"index_only,omitempty"`
3513 SmallOps *bool `protobuf:"varint,10,opt,name=small_ops,json=smallOps" json:"small_ops,omitempty"`
3514 CompiledQuery *CompiledQuery `protobuf:"bytes,5,opt,name=compiled_query,json=compiledQuery" json:"compiled_query,omitempty"`
3515 CompiledCursor *CompiledCursor `protobuf:"bytes,6,opt,name=compiled_cursor,json=compiledCursor" json:"compiled_cursor,omitempty"`
3516 Index []*CompositeIndex `protobuf:"bytes,8,rep,name=index" json:"index,omitempty"`
3517 Version []int64 `protobuf:"varint,11,rep,name=version" json:"version,omitempty"`
3518 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3519 XXX_unrecognized []byte `json:"-"`
3520 XXX_sizecache int32 `json:"-"`
3521}
3522
3523func (m *QueryResult) Reset() { *m = QueryResult{} }
3524func (m *QueryResult) String() string { return proto.CompactTextString(m) }
3525func (*QueryResult) ProtoMessage() {}
3526func (*QueryResult) Descriptor() ([]byte, []int) {
3527 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{30}
3528}
3529func (m *QueryResult) XXX_Unmarshal(b []byte) error {
3530 return xxx_messageInfo_QueryResult.Unmarshal(m, b)
3531}
3532func (m *QueryResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3533 return xxx_messageInfo_QueryResult.Marshal(b, m, deterministic)
3534}
3535func (dst *QueryResult) XXX_Merge(src proto.Message) {
3536 xxx_messageInfo_QueryResult.Merge(dst, src)
3537}
3538func (m *QueryResult) XXX_Size() int {
3539 return xxx_messageInfo_QueryResult.Size(m)
3540}
3541func (m *QueryResult) XXX_DiscardUnknown() {
3542 xxx_messageInfo_QueryResult.DiscardUnknown(m)
3543}
3544
3545var xxx_messageInfo_QueryResult proto.InternalMessageInfo
3546
3547func (m *QueryResult) GetCursor() *Cursor {
3548 if m != nil {
3549 return m.Cursor
3550 }
3551 return nil
3552}
3553
3554func (m *QueryResult) GetResult() []*EntityProto {
3555 if m != nil {
3556 return m.Result
3557 }
3558 return nil
3559}
3560
3561func (m *QueryResult) GetSkippedResults() int32 {
3562 if m != nil && m.SkippedResults != nil {
3563 return *m.SkippedResults
3564 }
3565 return 0
3566}
3567
3568func (m *QueryResult) GetMoreResults() bool {
3569 if m != nil && m.MoreResults != nil {
3570 return *m.MoreResults
3571 }
3572 return false
3573}
3574
3575func (m *QueryResult) GetKeysOnly() bool {
3576 if m != nil && m.KeysOnly != nil {
3577 return *m.KeysOnly
3578 }
3579 return false
3580}
3581
3582func (m *QueryResult) GetIndexOnly() bool {
3583 if m != nil && m.IndexOnly != nil {
3584 return *m.IndexOnly
3585 }
3586 return false
3587}
3588
3589func (m *QueryResult) GetSmallOps() bool {
3590 if m != nil && m.SmallOps != nil {
3591 return *m.SmallOps
3592 }
3593 return false
3594}
3595
3596func (m *QueryResult) GetCompiledQuery() *CompiledQuery {
3597 if m != nil {
3598 return m.CompiledQuery
3599 }
3600 return nil
3601}
3602
3603func (m *QueryResult) GetCompiledCursor() *CompiledCursor {
3604 if m != nil {
3605 return m.CompiledCursor
3606 }
3607 return nil
3608}
3609
3610func (m *QueryResult) GetIndex() []*CompositeIndex {
3611 if m != nil {
3612 return m.Index
3613 }
3614 return nil
3615}
3616
3617func (m *QueryResult) GetVersion() []int64 {
3618 if m != nil {
3619 return m.Version
3620 }
3621 return nil
3622}
3623
3624type AllocateIdsRequest struct {
3625 Header *InternalHeader `protobuf:"bytes,4,opt,name=header" json:"header,omitempty"`
3626 ModelKey *Reference `protobuf:"bytes,1,opt,name=model_key,json=modelKey" json:"model_key,omitempty"`
3627 Size *int64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
3628 Max *int64 `protobuf:"varint,3,opt,name=max" json:"max,omitempty"`
3629 Reserve []*Reference `protobuf:"bytes,5,rep,name=reserve" json:"reserve,omitempty"`
3630 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3631 XXX_unrecognized []byte `json:"-"`
3632 XXX_sizecache int32 `json:"-"`
3633}
3634
3635func (m *AllocateIdsRequest) Reset() { *m = AllocateIdsRequest{} }
3636func (m *AllocateIdsRequest) String() string { return proto.CompactTextString(m) }
3637func (*AllocateIdsRequest) ProtoMessage() {}
3638func (*AllocateIdsRequest) Descriptor() ([]byte, []int) {
3639 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{31}
3640}
3641func (m *AllocateIdsRequest) XXX_Unmarshal(b []byte) error {
3642 return xxx_messageInfo_AllocateIdsRequest.Unmarshal(m, b)
3643}
3644func (m *AllocateIdsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3645 return xxx_messageInfo_AllocateIdsRequest.Marshal(b, m, deterministic)
3646}
3647func (dst *AllocateIdsRequest) XXX_Merge(src proto.Message) {
3648 xxx_messageInfo_AllocateIdsRequest.Merge(dst, src)
3649}
3650func (m *AllocateIdsRequest) XXX_Size() int {
3651 return xxx_messageInfo_AllocateIdsRequest.Size(m)
3652}
3653func (m *AllocateIdsRequest) XXX_DiscardUnknown() {
3654 xxx_messageInfo_AllocateIdsRequest.DiscardUnknown(m)
3655}
3656
3657var xxx_messageInfo_AllocateIdsRequest proto.InternalMessageInfo
3658
3659func (m *AllocateIdsRequest) GetHeader() *InternalHeader {
3660 if m != nil {
3661 return m.Header
3662 }
3663 return nil
3664}
3665
3666func (m *AllocateIdsRequest) GetModelKey() *Reference {
3667 if m != nil {
3668 return m.ModelKey
3669 }
3670 return nil
3671}
3672
3673func (m *AllocateIdsRequest) GetSize() int64 {
3674 if m != nil && m.Size != nil {
3675 return *m.Size
3676 }
3677 return 0
3678}
3679
3680func (m *AllocateIdsRequest) GetMax() int64 {
3681 if m != nil && m.Max != nil {
3682 return *m.Max
3683 }
3684 return 0
3685}
3686
3687func (m *AllocateIdsRequest) GetReserve() []*Reference {
3688 if m != nil {
3689 return m.Reserve
3690 }
3691 return nil
3692}
3693
3694type AllocateIdsResponse struct {
3695 Start *int64 `protobuf:"varint,1,req,name=start" json:"start,omitempty"`
3696 End *int64 `protobuf:"varint,2,req,name=end" json:"end,omitempty"`
3697 Cost *Cost `protobuf:"bytes,3,opt,name=cost" json:"cost,omitempty"`
3698 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3699 XXX_unrecognized []byte `json:"-"`
3700 XXX_sizecache int32 `json:"-"`
3701}
3702
3703func (m *AllocateIdsResponse) Reset() { *m = AllocateIdsResponse{} }
3704func (m *AllocateIdsResponse) String() string { return proto.CompactTextString(m) }
3705func (*AllocateIdsResponse) ProtoMessage() {}
3706func (*AllocateIdsResponse) Descriptor() ([]byte, []int) {
3707 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{32}
3708}
3709func (m *AllocateIdsResponse) XXX_Unmarshal(b []byte) error {
3710 return xxx_messageInfo_AllocateIdsResponse.Unmarshal(m, b)
3711}
3712func (m *AllocateIdsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3713 return xxx_messageInfo_AllocateIdsResponse.Marshal(b, m, deterministic)
3714}
3715func (dst *AllocateIdsResponse) XXX_Merge(src proto.Message) {
3716 xxx_messageInfo_AllocateIdsResponse.Merge(dst, src)
3717}
3718func (m *AllocateIdsResponse) XXX_Size() int {
3719 return xxx_messageInfo_AllocateIdsResponse.Size(m)
3720}
3721func (m *AllocateIdsResponse) XXX_DiscardUnknown() {
3722 xxx_messageInfo_AllocateIdsResponse.DiscardUnknown(m)
3723}
3724
3725var xxx_messageInfo_AllocateIdsResponse proto.InternalMessageInfo
3726
3727func (m *AllocateIdsResponse) GetStart() int64 {
3728 if m != nil && m.Start != nil {
3729 return *m.Start
3730 }
3731 return 0
3732}
3733
3734func (m *AllocateIdsResponse) GetEnd() int64 {
3735 if m != nil && m.End != nil {
3736 return *m.End
3737 }
3738 return 0
3739}
3740
3741func (m *AllocateIdsResponse) GetCost() *Cost {
3742 if m != nil {
3743 return m.Cost
3744 }
3745 return nil
3746}
3747
3748type CompositeIndices struct {
3749 Index []*CompositeIndex `protobuf:"bytes,1,rep,name=index" json:"index,omitempty"`
3750 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3751 XXX_unrecognized []byte `json:"-"`
3752 XXX_sizecache int32 `json:"-"`
3753}
3754
3755func (m *CompositeIndices) Reset() { *m = CompositeIndices{} }
3756func (m *CompositeIndices) String() string { return proto.CompactTextString(m) }
3757func (*CompositeIndices) ProtoMessage() {}
3758func (*CompositeIndices) Descriptor() ([]byte, []int) {
3759 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{33}
3760}
3761func (m *CompositeIndices) XXX_Unmarshal(b []byte) error {
3762 return xxx_messageInfo_CompositeIndices.Unmarshal(m, b)
3763}
3764func (m *CompositeIndices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3765 return xxx_messageInfo_CompositeIndices.Marshal(b, m, deterministic)
3766}
3767func (dst *CompositeIndices) XXX_Merge(src proto.Message) {
3768 xxx_messageInfo_CompositeIndices.Merge(dst, src)
3769}
3770func (m *CompositeIndices) XXX_Size() int {
3771 return xxx_messageInfo_CompositeIndices.Size(m)
3772}
3773func (m *CompositeIndices) XXX_DiscardUnknown() {
3774 xxx_messageInfo_CompositeIndices.DiscardUnknown(m)
3775}
3776
3777var xxx_messageInfo_CompositeIndices proto.InternalMessageInfo
3778
3779func (m *CompositeIndices) GetIndex() []*CompositeIndex {
3780 if m != nil {
3781 return m.Index
3782 }
3783 return nil
3784}
3785
3786type AddActionsRequest struct {
3787 Header *InternalHeader `protobuf:"bytes,3,opt,name=header" json:"header,omitempty"`
3788 Transaction *Transaction `protobuf:"bytes,1,req,name=transaction" json:"transaction,omitempty"`
3789 Action []*Action `protobuf:"bytes,2,rep,name=action" json:"action,omitempty"`
3790 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3791 XXX_unrecognized []byte `json:"-"`
3792 XXX_sizecache int32 `json:"-"`
3793}
3794
3795func (m *AddActionsRequest) Reset() { *m = AddActionsRequest{} }
3796func (m *AddActionsRequest) String() string { return proto.CompactTextString(m) }
3797func (*AddActionsRequest) ProtoMessage() {}
3798func (*AddActionsRequest) Descriptor() ([]byte, []int) {
3799 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{34}
3800}
3801func (m *AddActionsRequest) XXX_Unmarshal(b []byte) error {
3802 return xxx_messageInfo_AddActionsRequest.Unmarshal(m, b)
3803}
3804func (m *AddActionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3805 return xxx_messageInfo_AddActionsRequest.Marshal(b, m, deterministic)
3806}
3807func (dst *AddActionsRequest) XXX_Merge(src proto.Message) {
3808 xxx_messageInfo_AddActionsRequest.Merge(dst, src)
3809}
3810func (m *AddActionsRequest) XXX_Size() int {
3811 return xxx_messageInfo_AddActionsRequest.Size(m)
3812}
3813func (m *AddActionsRequest) XXX_DiscardUnknown() {
3814 xxx_messageInfo_AddActionsRequest.DiscardUnknown(m)
3815}
3816
3817var xxx_messageInfo_AddActionsRequest proto.InternalMessageInfo
3818
3819func (m *AddActionsRequest) GetHeader() *InternalHeader {
3820 if m != nil {
3821 return m.Header
3822 }
3823 return nil
3824}
3825
3826func (m *AddActionsRequest) GetTransaction() *Transaction {
3827 if m != nil {
3828 return m.Transaction
3829 }
3830 return nil
3831}
3832
3833func (m *AddActionsRequest) GetAction() []*Action {
3834 if m != nil {
3835 return m.Action
3836 }
3837 return nil
3838}
3839
3840type AddActionsResponse struct {
3841 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3842 XXX_unrecognized []byte `json:"-"`
3843 XXX_sizecache int32 `json:"-"`
3844}
3845
3846func (m *AddActionsResponse) Reset() { *m = AddActionsResponse{} }
3847func (m *AddActionsResponse) String() string { return proto.CompactTextString(m) }
3848func (*AddActionsResponse) ProtoMessage() {}
3849func (*AddActionsResponse) Descriptor() ([]byte, []int) {
3850 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{35}
3851}
3852func (m *AddActionsResponse) XXX_Unmarshal(b []byte) error {
3853 return xxx_messageInfo_AddActionsResponse.Unmarshal(m, b)
3854}
3855func (m *AddActionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3856 return xxx_messageInfo_AddActionsResponse.Marshal(b, m, deterministic)
3857}
3858func (dst *AddActionsResponse) XXX_Merge(src proto.Message) {
3859 xxx_messageInfo_AddActionsResponse.Merge(dst, src)
3860}
3861func (m *AddActionsResponse) XXX_Size() int {
3862 return xxx_messageInfo_AddActionsResponse.Size(m)
3863}
3864func (m *AddActionsResponse) XXX_DiscardUnknown() {
3865 xxx_messageInfo_AddActionsResponse.DiscardUnknown(m)
3866}
3867
3868var xxx_messageInfo_AddActionsResponse proto.InternalMessageInfo
3869
3870type BeginTransactionRequest struct {
3871 Header *InternalHeader `protobuf:"bytes,3,opt,name=header" json:"header,omitempty"`
3872 App *string `protobuf:"bytes,1,req,name=app" json:"app,omitempty"`
3873 AllowMultipleEg *bool `protobuf:"varint,2,opt,name=allow_multiple_eg,json=allowMultipleEg,def=0" json:"allow_multiple_eg,omitempty"`
3874 DatabaseId *string `protobuf:"bytes,4,opt,name=database_id,json=databaseId" json:"database_id,omitempty"`
3875 Mode *BeginTransactionRequest_TransactionMode `protobuf:"varint,5,opt,name=mode,enum=appengine.BeginTransactionRequest_TransactionMode,def=0" json:"mode,omitempty"`
3876 PreviousTransaction *Transaction `protobuf:"bytes,7,opt,name=previous_transaction,json=previousTransaction" json:"previous_transaction,omitempty"`
3877 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3878 XXX_unrecognized []byte `json:"-"`
3879 XXX_sizecache int32 `json:"-"`
3880}
3881
3882func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} }
3883func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) }
3884func (*BeginTransactionRequest) ProtoMessage() {}
3885func (*BeginTransactionRequest) Descriptor() ([]byte, []int) {
3886 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{36}
3887}
3888func (m *BeginTransactionRequest) XXX_Unmarshal(b []byte) error {
3889 return xxx_messageInfo_BeginTransactionRequest.Unmarshal(m, b)
3890}
3891func (m *BeginTransactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3892 return xxx_messageInfo_BeginTransactionRequest.Marshal(b, m, deterministic)
3893}
3894func (dst *BeginTransactionRequest) XXX_Merge(src proto.Message) {
3895 xxx_messageInfo_BeginTransactionRequest.Merge(dst, src)
3896}
3897func (m *BeginTransactionRequest) XXX_Size() int {
3898 return xxx_messageInfo_BeginTransactionRequest.Size(m)
3899}
3900func (m *BeginTransactionRequest) XXX_DiscardUnknown() {
3901 xxx_messageInfo_BeginTransactionRequest.DiscardUnknown(m)
3902}
3903
3904var xxx_messageInfo_BeginTransactionRequest proto.InternalMessageInfo
3905
3906const Default_BeginTransactionRequest_AllowMultipleEg bool = false
3907const Default_BeginTransactionRequest_Mode BeginTransactionRequest_TransactionMode = BeginTransactionRequest_UNKNOWN
3908
3909func (m *BeginTransactionRequest) GetHeader() *InternalHeader {
3910 if m != nil {
3911 return m.Header
3912 }
3913 return nil
3914}
3915
3916func (m *BeginTransactionRequest) GetApp() string {
3917 if m != nil && m.App != nil {
3918 return *m.App
3919 }
3920 return ""
3921}
3922
3923func (m *BeginTransactionRequest) GetAllowMultipleEg() bool {
3924 if m != nil && m.AllowMultipleEg != nil {
3925 return *m.AllowMultipleEg
3926 }
3927 return Default_BeginTransactionRequest_AllowMultipleEg
3928}
3929
3930func (m *BeginTransactionRequest) GetDatabaseId() string {
3931 if m != nil && m.DatabaseId != nil {
3932 return *m.DatabaseId
3933 }
3934 return ""
3935}
3936
3937func (m *BeginTransactionRequest) GetMode() BeginTransactionRequest_TransactionMode {
3938 if m != nil && m.Mode != nil {
3939 return *m.Mode
3940 }
3941 return Default_BeginTransactionRequest_Mode
3942}
3943
3944func (m *BeginTransactionRequest) GetPreviousTransaction() *Transaction {
3945 if m != nil {
3946 return m.PreviousTransaction
3947 }
3948 return nil
3949}
3950
3951type CommitResponse struct {
3952 Cost *Cost `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"`
3953 Version []*CommitResponse_Version `protobuf:"group,3,rep,name=Version,json=version" json:"version,omitempty"`
3954 XXX_NoUnkeyedLiteral struct{} `json:"-"`
3955 XXX_unrecognized []byte `json:"-"`
3956 XXX_sizecache int32 `json:"-"`
3957}
3958
3959func (m *CommitResponse) Reset() { *m = CommitResponse{} }
3960func (m *CommitResponse) String() string { return proto.CompactTextString(m) }
3961func (*CommitResponse) ProtoMessage() {}
3962func (*CommitResponse) Descriptor() ([]byte, []int) {
3963 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{37}
3964}
3965func (m *CommitResponse) XXX_Unmarshal(b []byte) error {
3966 return xxx_messageInfo_CommitResponse.Unmarshal(m, b)
3967}
3968func (m *CommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
3969 return xxx_messageInfo_CommitResponse.Marshal(b, m, deterministic)
3970}
3971func (dst *CommitResponse) XXX_Merge(src proto.Message) {
3972 xxx_messageInfo_CommitResponse.Merge(dst, src)
3973}
3974func (m *CommitResponse) XXX_Size() int {
3975 return xxx_messageInfo_CommitResponse.Size(m)
3976}
3977func (m *CommitResponse) XXX_DiscardUnknown() {
3978 xxx_messageInfo_CommitResponse.DiscardUnknown(m)
3979}
3980
3981var xxx_messageInfo_CommitResponse proto.InternalMessageInfo
3982
3983func (m *CommitResponse) GetCost() *Cost {
3984 if m != nil {
3985 return m.Cost
3986 }
3987 return nil
3988}
3989
3990func (m *CommitResponse) GetVersion() []*CommitResponse_Version {
3991 if m != nil {
3992 return m.Version
3993 }
3994 return nil
3995}
3996
3997type CommitResponse_Version struct {
3998 RootEntityKey *Reference `protobuf:"bytes,4,req,name=root_entity_key,json=rootEntityKey" json:"root_entity_key,omitempty"`
3999 Version *int64 `protobuf:"varint,5,req,name=version" json:"version,omitempty"`
4000 XXX_NoUnkeyedLiteral struct{} `json:"-"`
4001 XXX_unrecognized []byte `json:"-"`
4002 XXX_sizecache int32 `json:"-"`
4003}
4004
4005func (m *CommitResponse_Version) Reset() { *m = CommitResponse_Version{} }
4006func (m *CommitResponse_Version) String() string { return proto.CompactTextString(m) }
4007func (*CommitResponse_Version) ProtoMessage() {}
4008func (*CommitResponse_Version) Descriptor() ([]byte, []int) {
4009 return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{37, 0}
4010}
4011func (m *CommitResponse_Version) XXX_Unmarshal(b []byte) error {
4012 return xxx_messageInfo_CommitResponse_Version.Unmarshal(m, b)
4013}
4014func (m *CommitResponse_Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
4015 return xxx_messageInfo_CommitResponse_Version.Marshal(b, m, deterministic)
4016}
4017func (dst *CommitResponse_Version) XXX_Merge(src proto.Message) {
4018 xxx_messageInfo_CommitResponse_Version.Merge(dst, src)
4019}
4020func (m *CommitResponse_Version) XXX_Size() int {
4021 return xxx_messageInfo_CommitResponse_Version.Size(m)
4022}
4023func (m *CommitResponse_Version) XXX_DiscardUnknown() {
4024 xxx_messageInfo_CommitResponse_Version.DiscardUnknown(m)
4025}
4026
4027var xxx_messageInfo_CommitResponse_Version proto.InternalMessageInfo
4028
4029func (m *CommitResponse_Version) GetRootEntityKey() *Reference {
4030 if m != nil {
4031 return m.RootEntityKey
4032 }
4033 return nil
4034}
4035
4036func (m *CommitResponse_Version) GetVersion() int64 {
4037 if m != nil && m.Version != nil {
4038 return *m.Version
4039 }
4040 return 0
4041}
4042
4043func init() {
4044 proto.RegisterType((*Action)(nil), "appengine.Action")
4045 proto.RegisterType((*PropertyValue)(nil), "appengine.PropertyValue")
4046 proto.RegisterType((*PropertyValue_PointValue)(nil), "appengine.PropertyValue.PointValue")
4047 proto.RegisterType((*PropertyValue_UserValue)(nil), "appengine.PropertyValue.UserValue")
4048 proto.RegisterType((*PropertyValue_ReferenceValue)(nil), "appengine.PropertyValue.ReferenceValue")
4049 proto.RegisterType((*PropertyValue_ReferenceValue_PathElement)(nil), "appengine.PropertyValue.ReferenceValue.PathElement")
4050 proto.RegisterType((*Property)(nil), "appengine.Property")
4051 proto.RegisterType((*Path)(nil), "appengine.Path")
4052 proto.RegisterType((*Path_Element)(nil), "appengine.Path.Element")
4053 proto.RegisterType((*Reference)(nil), "appengine.Reference")
4054 proto.RegisterType((*User)(nil), "appengine.User")
4055 proto.RegisterType((*EntityProto)(nil), "appengine.EntityProto")
4056 proto.RegisterType((*CompositeProperty)(nil), "appengine.CompositeProperty")
4057 proto.RegisterType((*Index)(nil), "appengine.Index")
4058 proto.RegisterType((*Index_Property)(nil), "appengine.Index.Property")
4059 proto.RegisterType((*CompositeIndex)(nil), "appengine.CompositeIndex")
4060 proto.RegisterType((*IndexPostfix)(nil), "appengine.IndexPostfix")
4061 proto.RegisterType((*IndexPostfix_IndexValue)(nil), "appengine.IndexPostfix.IndexValue")
4062 proto.RegisterType((*IndexPosition)(nil), "appengine.IndexPosition")
4063 proto.RegisterType((*Snapshot)(nil), "appengine.Snapshot")
4064 proto.RegisterType((*InternalHeader)(nil), "appengine.InternalHeader")
4065 proto.RegisterType((*Transaction)(nil), "appengine.Transaction")
4066 proto.RegisterType((*Query)(nil), "appengine.Query")
4067 proto.RegisterType((*Query_Filter)(nil), "appengine.Query.Filter")
4068 proto.RegisterType((*Query_Order)(nil), "appengine.Query.Order")
4069 proto.RegisterType((*CompiledQuery)(nil), "appengine.CompiledQuery")
4070 proto.RegisterType((*CompiledQuery_PrimaryScan)(nil), "appengine.CompiledQuery.PrimaryScan")
4071 proto.RegisterType((*CompiledQuery_MergeJoinScan)(nil), "appengine.CompiledQuery.MergeJoinScan")
4072 proto.RegisterType((*CompiledQuery_EntityFilter)(nil), "appengine.CompiledQuery.EntityFilter")
4073 proto.RegisterType((*CompiledCursor)(nil), "appengine.CompiledCursor")
4074 proto.RegisterType((*CompiledCursor_Position)(nil), "appengine.CompiledCursor.Position")
4075 proto.RegisterType((*CompiledCursor_Position_IndexValue)(nil), "appengine.CompiledCursor.Position.IndexValue")
4076 proto.RegisterType((*Cursor)(nil), "appengine.Cursor")
4077 proto.RegisterType((*Error)(nil), "appengine.Error")
4078 proto.RegisterType((*Cost)(nil), "appengine.Cost")
4079 proto.RegisterType((*Cost_CommitCost)(nil), "appengine.Cost.CommitCost")
4080 proto.RegisterType((*GetRequest)(nil), "appengine.GetRequest")
4081 proto.RegisterType((*GetResponse)(nil), "appengine.GetResponse")
4082 proto.RegisterType((*GetResponse_Entity)(nil), "appengine.GetResponse.Entity")
4083 proto.RegisterType((*PutRequest)(nil), "appengine.PutRequest")
4084 proto.RegisterType((*PutResponse)(nil), "appengine.PutResponse")
4085 proto.RegisterType((*TouchRequest)(nil), "appengine.TouchRequest")
4086 proto.RegisterType((*TouchResponse)(nil), "appengine.TouchResponse")
4087 proto.RegisterType((*DeleteRequest)(nil), "appengine.DeleteRequest")
4088 proto.RegisterType((*DeleteResponse)(nil), "appengine.DeleteResponse")
4089 proto.RegisterType((*NextRequest)(nil), "appengine.NextRequest")
4090 proto.RegisterType((*QueryResult)(nil), "appengine.QueryResult")
4091 proto.RegisterType((*AllocateIdsRequest)(nil), "appengine.AllocateIdsRequest")
4092 proto.RegisterType((*AllocateIdsResponse)(nil), "appengine.AllocateIdsResponse")
4093 proto.RegisterType((*CompositeIndices)(nil), "appengine.CompositeIndices")
4094 proto.RegisterType((*AddActionsRequest)(nil), "appengine.AddActionsRequest")
4095 proto.RegisterType((*AddActionsResponse)(nil), "appengine.AddActionsResponse")
4096 proto.RegisterType((*BeginTransactionRequest)(nil), "appengine.BeginTransactionRequest")
4097 proto.RegisterType((*CommitResponse)(nil), "appengine.CommitResponse")
4098 proto.RegisterType((*CommitResponse_Version)(nil), "appengine.CommitResponse.Version")
4099}
4100
4101func init() {
4102 proto.RegisterFile("google.golang.org/appengine/internal/datastore/datastore_v3.proto", fileDescriptor_datastore_v3_83b17b80c34f6179)
4103}
4104
4105var fileDescriptor_datastore_v3_83b17b80c34f6179 = []byte{
4106 // 4156 bytes of a gzipped FileDescriptorProto
4107 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0xe3, 0x46,
4108 0x76, 0x37, 0xc1, 0xef, 0x47, 0x89, 0x82, 0x5a, 0xf3, 0xc1, 0xa1, 0x3f, 0x46, 0xc6, 0xac, 0x6d,
4109 0xd9, 0x6b, 0x73, 0x6c, 0xf9, 0x23, 0x5b, 0x4a, 0x76, 0x1d, 0x4a, 0xc4, 0x68, 0x90, 0xa1, 0x48,
4110 0xb9, 0x09, 0xd9, 0x9e, 0x5c, 0x50, 0x18, 0xa2, 0x29, 0x21, 0x43, 0x02, 0x30, 0x00, 0x6a, 0x46,
4111 0x93, 0xe4, 0x90, 0x4b, 0x2a, 0x55, 0x5b, 0xa9, 0x1c, 0x92, 0x4a, 0x25, 0xf9, 0x07, 0x72, 0xc8,
4112 0x39, 0x95, 0xaa, 0x54, 0xf6, 0x98, 0x5b, 0x0e, 0x7b, 0xc9, 0x31, 0x95, 0x73, 0xf2, 0x27, 0x24,
4113 0x39, 0xa4, 0xfa, 0x75, 0x03, 0x02, 0x28, 0x4a, 0x23, 0x6d, 0xf6, 0x90, 0x13, 0xd1, 0xef, 0xfd,
4114 0xba, 0xf1, 0xfa, 0xf5, 0xfb, 0x6c, 0x10, 0xba, 0xc7, 0xbe, 0x7f, 0x3c, 0x65, 0x9d, 0x63, 0x7f,
4115 0x6a, 0x7b, 0xc7, 0x1d, 0x3f, 0x3c, 0x7e, 0x68, 0x07, 0x01, 0xf3, 0x8e, 0x5d, 0x8f, 0x3d, 0x74,
4116 0xbd, 0x98, 0x85, 0x9e, 0x3d, 0x7d, 0xe8, 0xd8, 0xb1, 0x1d, 0xc5, 0x7e, 0xc8, 0xce, 0x9f, 0xac,
4117 0xd3, 0xcf, 0x3b, 0x41, 0xe8, 0xc7, 0x3e, 0xa9, 0xa7, 0x13, 0xb4, 0x1a, 0x54, 0xba, 0xe3, 0xd8,
4118 0xf5, 0x3d, 0xed, 0x1f, 0x2b, 0xb0, 0x7a, 0x18, 0xfa, 0x01, 0x0b, 0xe3, 0xb3, 0x6f, 0xed, 0xe9,
4119 0x9c, 0x91, 0x77, 0x00, 0x5c, 0x2f, 0xfe, 0xea, 0x0b, 0x1c, 0xb5, 0x0a, 0x9b, 0x85, 0xad, 0x22,
4120 0xcd, 0x50, 0x88, 0x06, 0x2b, 0xcf, 0x7c, 0x7f, 0xca, 0x6c, 0x4f, 0x20, 0x94, 0xcd, 0xc2, 0x56,
4121 0x8d, 0xe6, 0x68, 0x64, 0x13, 0x1a, 0x51, 0x1c, 0xba, 0xde, 0xb1, 0x80, 0x14, 0x37, 0x0b, 0x5b,
4122 0x75, 0x9a, 0x25, 0x71, 0x84, 0xe3, 0xcf, 0x9f, 0x4d, 0x99, 0x40, 0x94, 0x36, 0x0b, 0x5b, 0x05,
4123 0x9a, 0x25, 0x91, 0x3d, 0x80, 0xc0, 0x77, 0xbd, 0xf8, 0x14, 0x01, 0xe5, 0xcd, 0xc2, 0x16, 0x6c,
4124 0x3f, 0xe8, 0xa4, 0x7b, 0xe8, 0xe4, 0xa4, 0xee, 0x1c, 0x72, 0x28, 0x3e, 0xd2, 0xcc, 0x34, 0xf2,
4125 0xdb, 0x50, 0x9f, 0x47, 0x2c, 0x14, 0x6b, 0xd4, 0x70, 0x0d, 0xed, 0xd2, 0x35, 0x8e, 0x22, 0x16,
4126 0x8a, 0x25, 0xce, 0x27, 0x91, 0x21, 0x34, 0x43, 0x36, 0x61, 0x21, 0xf3, 0xc6, 0x4c, 0x2c, 0xb3,
4127 0x82, 0xcb, 0x7c, 0x70, 0xe9, 0x32, 0x34, 0x81, 0x8b, 0xb5, 0x16, 0xa6, 0xb7, 0xb7, 0x00, 0xce,
4128 0x85, 0x25, 0x2b, 0x50, 0x78, 0xd9, 0xaa, 0x6c, 0x2a, 0x5b, 0x05, 0x5a, 0x78, 0xc9, 0x47, 0x67,
4129 0xad, 0xaa, 0x18, 0x9d, 0xb5, 0xff, 0xa9, 0x00, 0xf5, 0x54, 0x26, 0x72, 0x0b, 0xca, 0x6c, 0x66,
4130 0xbb, 0xd3, 0x56, 0x7d, 0x53, 0xd9, 0xaa, 0x53, 0x31, 0x20, 0xf7, 0xa1, 0x61, 0xcf, 0xe3, 0x13,
4131 0xcb, 0xf1, 0x67, 0xb6, 0xeb, 0xb5, 0x00, 0x79, 0xc0, 0x49, 0x3d, 0xa4, 0x90, 0x36, 0xd4, 0x3c,
4132 0x77, 0xfc, 0xdc, 0xb3, 0x67, 0xac, 0xd5, 0xc0, 0x73, 0x48, 0xc7, 0xe4, 0x13, 0x20, 0x13, 0xe6,
4133 0xb0, 0xd0, 0x8e, 0x99, 0x63, 0xb9, 0x0e, 0xf3, 0x62, 0x37, 0x3e, 0x6b, 0xdd, 0x46, 0xd4, 0x7a,
4134 0xca, 0x31, 0x24, 0x23, 0x0f, 0x0f, 0x42, 0xff, 0xd4, 0x75, 0x58, 0xd8, 0xba, 0xb3, 0x00, 0x3f,
4135 0x94, 0x8c, 0xf6, 0xbf, 0x17, 0xa0, 0x99, 0xd7, 0x05, 0x51, 0xa1, 0x68, 0x07, 0x41, 0x6b, 0x15,
4136 0xa5, 0xe4, 0x8f, 0xe4, 0x6d, 0x00, 0x2e, 0x8a, 0x15, 0x05, 0xf6, 0x98, 0xb5, 0x6e, 0xe1, 0x5a,
4137 0x75, 0x4e, 0x19, 0x71, 0x02, 0x39, 0x82, 0x46, 0x60, 0xc7, 0x27, 0x6c, 0xca, 0x66, 0xcc, 0x8b,
4138 0x5b, 0xcd, 0xcd, 0xe2, 0x16, 0x6c, 0x7f, 0x7e, 0x4d, 0xd5, 0x77, 0x0e, 0xed, 0xf8, 0x44, 0x17,
4139 0x53, 0x69, 0x76, 0x9d, 0xb6, 0x0e, 0x8d, 0x0c, 0x8f, 0x10, 0x28, 0xc5, 0x67, 0x01, 0x6b, 0xad,
4140 0xa1, 0x5c, 0xf8, 0x4c, 0x9a, 0xa0, 0xb8, 0x4e, 0x4b, 0x45, 0xf3, 0x57, 0x5c, 0x87, 0x63, 0x50,
4141 0x87, 0xeb, 0x28, 0x22, 0x3e, 0x6b, 0xff, 0x51, 0x86, 0x5a, 0x22, 0x00, 0xe9, 0x42, 0x75, 0xc6,
4142 0x6c, 0xcf, 0xf5, 0x8e, 0xd1, 0x69, 0x9a, 0xdb, 0x6f, 0x2e, 0x11, 0xb3, 0x73, 0x20, 0x20, 0x3b,
4143 0x30, 0x18, 0x5a, 0x07, 0x7a, 0x77, 0x60, 0x0c, 0xf6, 0x69, 0x32, 0x8f, 0x1f, 0xa6, 0x7c, 0xb4,
4144 0xe6, 0xa1, 0x8b, 0x9e, 0x55, 0xa7, 0x20, 0x49, 0x47, 0xa1, 0x9b, 0x0a, 0x51, 0x14, 0x82, 0xe2,
4145 0x21, 0x76, 0xa0, 0x9c, 0xb8, 0x88, 0xb2, 0xd5, 0xd8, 0x6e, 0x5d, 0xa6, 0x1c, 0x2a, 0x60, 0xdc,
4146 0x20, 0x66, 0xf3, 0x69, 0xec, 0x06, 0x53, 0xee, 0x76, 0xca, 0x56, 0x8d, 0xa6, 0x63, 0xf2, 0x1e,
4147 0x40, 0xc4, 0xec, 0x70, 0x7c, 0x62, 0x3f, 0x9b, 0xb2, 0x56, 0x85, 0x7b, 0xf6, 0x4e, 0x79, 0x62,
4148 0x4f, 0x23, 0x46, 0x33, 0x0c, 0x62, 0xc3, 0xdd, 0x49, 0x1c, 0x59, 0xb1, 0xff, 0x9c, 0x79, 0xee,
4149 0x2b, 0x9b, 0x07, 0x12, 0xcb, 0x0f, 0xf8, 0x0f, 0xfa, 0x58, 0x73, 0xfb, 0xc3, 0x65, 0x5b, 0x7f,
4150 0x14, 0x47, 0x66, 0x66, 0xc6, 0x10, 0x27, 0xd0, 0xdb, 0x93, 0x65, 0x64, 0xd2, 0x86, 0xca, 0xd4,
4151 0x1f, 0xdb, 0x53, 0xd6, 0xaa, 0x73, 0x2d, 0xec, 0x28, 0xcc, 0xa3, 0x92, 0xa2, 0xfd, 0xb3, 0x02,
4152 0x55, 0xa9, 0x47, 0xd2, 0x84, 0x8c, 0x26, 0xd5, 0x37, 0x48, 0x0d, 0x4a, 0xbb, 0xfd, 0xe1, 0xae,
4153 0xda, 0xe4, 0x4f, 0xa6, 0xfe, 0xbd, 0xa9, 0xae, 0x71, 0xcc, 0xee, 0x53, 0x53, 0x1f, 0x99, 0x94,
4154 0x63, 0x54, 0xb2, 0x0e, 0xab, 0x5d, 0x73, 0x78, 0x60, 0xed, 0x75, 0x4d, 0x7d, 0x7f, 0x48, 0x9f,
4155 0xaa, 0x05, 0xb2, 0x0a, 0x75, 0x24, 0xf5, 0x8d, 0xc1, 0x13, 0x55, 0xe1, 0x33, 0x70, 0x68, 0x1a,
4156 0x66, 0x5f, 0x57, 0x8b, 0x44, 0x85, 0x15, 0x31, 0x63, 0x38, 0x30, 0xf5, 0x81, 0xa9, 0x96, 0x52,
4157 0xca, 0xe8, 0xe8, 0xe0, 0xa0, 0x4b, 0x9f, 0xaa, 0x65, 0xb2, 0x06, 0x0d, 0xa4, 0x74, 0x8f, 0xcc,
4158 0xc7, 0x43, 0xaa, 0x56, 0x48, 0x03, 0xaa, 0xfb, 0x3d, 0xeb, 0xbb, 0xc7, 0xfa, 0x40, 0xad, 0x92,
4159 0x15, 0xa8, 0xed, 0xf7, 0x2c, 0xfd, 0xa0, 0x6b, 0xf4, 0xd5, 0x1a, 0x9f, 0xbd, 0xaf, 0x0f, 0xe9,
4160 0x68, 0x64, 0x1d, 0x0e, 0x8d, 0x81, 0xa9, 0xd6, 0x49, 0x1d, 0xca, 0xfb, 0x3d, 0xcb, 0x38, 0x50,
4161 0x81, 0x10, 0x68, 0xee, 0xf7, 0xac, 0xc3, 0xc7, 0xc3, 0x81, 0x3e, 0x38, 0x3a, 0xd8, 0xd5, 0xa9,
4162 0xda, 0x20, 0xb7, 0x40, 0xe5, 0xb4, 0xe1, 0xc8, 0xec, 0xf6, 0xbb, 0xbd, 0x1e, 0xd5, 0x47, 0x23,
4163 0x75, 0x85, 0x4b, 0xbd, 0xdf, 0xb3, 0x68, 0xd7, 0xe4, 0xfb, 0x5a, 0xe5, 0x2f, 0xe4, 0x7b, 0x7f,
4164 0xa2, 0x3f, 0x55, 0xd7, 0xf9, 0x2b, 0xf4, 0x81, 0x69, 0x98, 0x4f, 0xad, 0x43, 0x3a, 0x34, 0x87,
4165 0xea, 0x06, 0x17, 0xd0, 0x18, 0xf4, 0xf4, 0xef, 0xad, 0x6f, 0xbb, 0xfd, 0x23, 0x5d, 0x25, 0xda,
4166 0x8f, 0xe1, 0xf6, 0xd2, 0x33, 0xe1, 0xaa, 0x7b, 0x6c, 0x1e, 0xf4, 0xd5, 0x02, 0x7f, 0xe2, 0x9b,
4167 0x52, 0x15, 0xed, 0x0f, 0xa0, 0xc4, 0x5d, 0x86, 0x7c, 0x06, 0xd5, 0xc4, 0x1b, 0x0b, 0xe8, 0x8d,
4168 0x77, 0xb3, 0x67, 0x6d, 0xc7, 0x27, 0x9d, 0xc4, 0xe3, 0x12, 0x5c, 0xbb, 0x0b, 0xd5, 0x45, 0x4f,
4169 0x53, 0x2e, 0x78, 0x5a, 0xf1, 0x82, 0xa7, 0x95, 0x32, 0x9e, 0x66, 0x43, 0x3d, 0xf5, 0xed, 0x9b,
4170 0x47, 0x91, 0x07, 0x50, 0xe2, 0xde, 0xdf, 0x6a, 0xa2, 0x87, 0xac, 0x2d, 0x08, 0x4c, 0x91, 0xa9,
4171 0xfd, 0x43, 0x01, 0x4a, 0x3c, 0xda, 0x9e, 0x07, 0xda, 0xc2, 0x15, 0x81, 0x56, 0xb9, 0x32, 0xd0,
4172 0x16, 0xaf, 0x15, 0x68, 0x2b, 0x37, 0x0b, 0xb4, 0xd5, 0x4b, 0x02, 0xad, 0xf6, 0x67, 0x45, 0x68,
4173 0xe8, 0x38, 0xf3, 0x10, 0x13, 0xfd, 0xfb, 0x50, 0x7c, 0xce, 0xce, 0x50, 0x3f, 0x8d, 0xed, 0x5b,
4174 0x99, 0xdd, 0xa6, 0x2a, 0xa4, 0x1c, 0x40, 0xb6, 0x61, 0x45, 0xbc, 0xd0, 0x3a, 0x0e, 0xfd, 0x79,
4175 0xd0, 0x52, 0x97, 0xab, 0xa7, 0x21, 0x40, 0xfb, 0x1c, 0x43, 0xde, 0x83, 0xb2, 0xff, 0xc2, 0x63,
4176 0x21, 0xc6, 0xc1, 0x3c, 0x98, 0x2b, 0x8f, 0x0a, 0x2e, 0x79, 0x08, 0xa5, 0xe7, 0xae, 0xe7, 0xe0,
4177 0x19, 0xe6, 0x23, 0x61, 0x46, 0xd0, 0xce, 0x13, 0xd7, 0x73, 0x28, 0x02, 0xc9, 0x3d, 0xa8, 0xf1,
4178 0x5f, 0x8c, 0x7b, 0x65, 0xdc, 0x68, 0x95, 0x8f, 0x79, 0xd0, 0x7b, 0x08, 0xb5, 0x40, 0xc6, 0x10,
4179 0x4c, 0x00, 0x8d, 0xed, 0x8d, 0x25, 0xe1, 0x85, 0xa6, 0x20, 0xf2, 0x15, 0xac, 0x84, 0xf6, 0x0b,
4180 0x2b, 0x9d, 0xb4, 0x76, 0xf9, 0xa4, 0x46, 0x68, 0xbf, 0x48, 0x23, 0x38, 0x81, 0x52, 0x68, 0x7b,
4181 0xcf, 0x5b, 0x64, 0xb3, 0xb0, 0x55, 0xa6, 0xf8, 0xac, 0x7d, 0x01, 0x25, 0x2e, 0x25, 0x8f, 0x08,
4182 0xfb, 0x3d, 0xf4, 0xff, 0xee, 0x9e, 0xa9, 0x16, 0x12, 0x7f, 0xfe, 0x96, 0x47, 0x03, 0x45, 0x72,
4183 0x0f, 0xf4, 0xd1, 0xa8, 0xbb, 0xaf, 0xab, 0x45, 0xad, 0x07, 0xeb, 0x7b, 0xfe, 0x2c, 0xf0, 0x23,
4184 0x37, 0x66, 0xe9, 0xf2, 0xf7, 0xa0, 0xe6, 0x7a, 0x0e, 0x7b, 0x69, 0xb9, 0x0e, 0x9a, 0x56, 0x91,
4185 0x56, 0x71, 0x6c, 0x38, 0xdc, 0xe4, 0x4e, 0x65, 0x31, 0x55, 0xe4, 0x26, 0x87, 0x03, 0xed, 0x2f,
4186 0x15, 0x28, 0x1b, 0x1c, 0xc1, 0x8d, 0x4f, 0x9e, 0x14, 0x7a, 0x8f, 0x30, 0x4c, 0x10, 0x24, 0x93,
4187 0xfb, 0x50, 0x1b, 0x6a, 0xb6, 0x37, 0x66, 0xbc, 0xe2, 0xc3, 0x3c, 0x50, 0xa3, 0xe9, 0x98, 0x7c,
4188 0x99, 0xd1, 0x9f, 0x82, 0x2e, 0x7b, 0x2f, 0xa3, 0x0a, 0x7c, 0xc1, 0x12, 0x2d, 0xb6, 0xff, 0xaa,
4189 0x90, 0x49, 0x6e, 0xcb, 0x12, 0x4f, 0x1f, 0xea, 0x8e, 0x1b, 0x32, 0xac, 0x23, 0xe5, 0x41, 0x3f,
4190 0xb8, 0x74, 0xe1, 0x4e, 0x2f, 0x81, 0xee, 0xd4, 0xbb, 0xa3, 0x3d, 0x7d, 0xd0, 0xe3, 0x99, 0xef,
4191 0x7c, 0x01, 0xed, 0x23, 0xa8, 0xa7, 0x10, 0x0c, 0xc7, 0x09, 0x48, 0x2d, 0x70, 0xf5, 0xf6, 0xf4,
4192 0x74, 0xac, 0x68, 0x7f, 0xad, 0x40, 0x33, 0xd5, 0xaf, 0xd0, 0xd0, 0x6d, 0xa8, 0xd8, 0x41, 0x90,
4193 0xa8, 0xb6, 0x4e, 0xcb, 0x76, 0x10, 0x18, 0x8e, 0x8c, 0x2d, 0x0a, 0x6a, 0x9b, 0xc7, 0x96, 0x4f,
4194 0x01, 0x1c, 0x36, 0x71, 0x3d, 0x17, 0x85, 0x2e, 0xa2, 0xc1, 0xab, 0x8b, 0x42, 0xd3, 0x0c, 0x86,
4195 0x7c, 0x09, 0xe5, 0x28, 0xb6, 0x63, 0x91, 0x2b, 0x9b, 0xdb, 0xf7, 0x33, 0xe0, 0xbc, 0x08, 0x9d,
4196 0x11, 0x87, 0x51, 0x81, 0x26, 0x5f, 0xc1, 0x2d, 0xdf, 0x9b, 0x9e, 0x59, 0xf3, 0x88, 0x59, 0xee,
4197 0xc4, 0x0a, 0xd9, 0x0f, 0x73, 0x37, 0x64, 0x4e, 0x3e, 0xa7, 0xae, 0x73, 0xc8, 0x51, 0xc4, 0x8c,
4198 0x09, 0x95, 0x7c, 0xed, 0x6b, 0x28, 0xe3, 0x3a, 0x7c, 0xcf, 0xdf, 0x51, 0xc3, 0xd4, 0xad, 0xe1,
4199 0xa0, 0xff, 0x54, 0xe8, 0x80, 0xea, 0xdd, 0x9e, 0x85, 0x44, 0x55, 0xe1, 0xc1, 0xbe, 0xa7, 0xf7,
4200 0x75, 0x53, 0xef, 0xa9, 0x45, 0x9e, 0x3d, 0x74, 0x4a, 0x87, 0x54, 0x2d, 0x69, 0xff, 0x53, 0x80,
4201 0x15, 0x94, 0xe7, 0xd0, 0x8f, 0xe2, 0x89, 0xfb, 0x92, 0xec, 0x41, 0x43, 0x98, 0xdd, 0xa9, 0x2c,
4202 0xe8, 0xb9, 0x33, 0x68, 0x8b, 0x7b, 0x96, 0x68, 0x31, 0x90, 0x75, 0xb4, 0x9b, 0x3e, 0x27, 0x21,
4203 0x45, 0x41, 0xa7, 0xbf, 0x22, 0xa4, 0xbc, 0x05, 0x95, 0x67, 0x6c, 0xe2, 0x87, 0x22, 0x04, 0xd6,
4204 0x76, 0x4a, 0x71, 0x38, 0x67, 0x54, 0xd2, 0xda, 0x36, 0xc0, 0xf9, 0xfa, 0xe4, 0x01, 0xac, 0x26,
4205 0xc6, 0x66, 0xa1, 0x71, 0x89, 0x93, 0x5b, 0x49, 0x88, 0x83, 0x5c, 0x75, 0xa3, 0x5c, 0xab, 0xba,
4206 0xd1, 0xbe, 0x86, 0xd5, 0x64, 0x3f, 0xe2, 0xfc, 0x54, 0x21, 0x79, 0x01, 0x63, 0xca, 0x82, 0x8c,
4207 0xca, 0x45, 0x19, 0xb5, 0x9f, 0x41, 0x6d, 0xe4, 0xd9, 0x41, 0x74, 0xe2, 0xc7, 0xdc, 0x7a, 0xe2,
4208 0x48, 0xfa, 0xaa, 0x12, 0x47, 0x9a, 0x06, 0x15, 0x7e, 0x38, 0xf3, 0x88, 0xbb, 0xbf, 0x31, 0xe8,
4209 0xee, 0x99, 0xc6, 0xb7, 0xba, 0xfa, 0x06, 0x01, 0xa8, 0xc8, 0xe7, 0x82, 0xa6, 0x41, 0xd3, 0x90,
4210 0xed, 0xd8, 0x63, 0x66, 0x3b, 0x2c, 0xe4, 0x12, 0xfc, 0xe0, 0x47, 0x89, 0x04, 0x3f, 0xf8, 0x91,
4211 0xf6, 0x17, 0x05, 0x68, 0x98, 0xa1, 0xed, 0x45, 0xb6, 0x30, 0xf7, 0xcf, 0xa0, 0x72, 0x82, 0x58,
4212 0x74, 0xa3, 0xc6, 0x82, 0x7f, 0x66, 0x17, 0xa3, 0x12, 0x48, 0xee, 0x40, 0xe5, 0xc4, 0xf6, 0x9c,
4213 0xa9, 0xd0, 0x5a, 0x85, 0xca, 0x51, 0x92, 0x1b, 0x95, 0xf3, 0xdc, 0xb8, 0x05, 0x2b, 0x33, 0x3b,
4214 0x7c, 0x6e, 0x8d, 0x4f, 0x6c, 0xef, 0x98, 0x45, 0xf2, 0x60, 0xa4, 0x05, 0x36, 0x38, 0x6b, 0x4f,
4215 0x70, 0xb4, 0xbf, 0x5f, 0x81, 0xf2, 0x37, 0x73, 0x16, 0x9e, 0x65, 0x04, 0xfa, 0xe0, 0xba, 0x02,
4216 0xc9, 0x17, 0x17, 0x2e, 0x4b, 0xca, 0x6f, 0x2f, 0x26, 0x65, 0x22, 0x53, 0x84, 0xc8, 0x95, 0x22,
4217 0x0b, 0x7c, 0x9a, 0x09, 0x63, 0xeb, 0x57, 0xd8, 0xda, 0x79, 0x70, 0x7b, 0x08, 0x95, 0x89, 0x3b,
4218 0x8d, 0x51, 0x75, 0x8b, 0xd5, 0x08, 0xee, 0xa5, 0xf3, 0x08, 0xd9, 0x54, 0xc2, 0xc8, 0xbb, 0xb0,
4219 0x22, 0x2a, 0x59, 0xeb, 0x07, 0xce, 0xc6, 0x82, 0x95, 0xf7, 0xa6, 0x48, 0x13, 0xbb, 0xff, 0x18,
4220 0xca, 0x7e, 0xc8, 0x37, 0x5f, 0xc7, 0x25, 0xef, 0x5c, 0x58, 0x72, 0xc8, 0xb9, 0x54, 0x80, 0xc8,
4221 0x87, 0x50, 0x3a, 0x71, 0xbd, 0x18, 0xb3, 0x46, 0x73, 0xfb, 0xf6, 0x05, 0xf0, 0x63, 0xd7, 0x8b,
4222 0x29, 0x42, 0x78, 0x98, 0x1f, 0xfb, 0x73, 0x2f, 0x6e, 0xdd, 0xc5, 0x0c, 0x23, 0x06, 0xe4, 0x1e,
4223 0x54, 0xfc, 0xc9, 0x24, 0x62, 0x31, 0x76, 0x96, 0xe5, 0x9d, 0xc2, 0xa7, 0x54, 0x12, 0xf8, 0x84,
4224 0xa9, 0x3b, 0x73, 0x63, 0xec, 0x43, 0xca, 0x54, 0x0c, 0xc8, 0x2e, 0xac, 0x8d, 0xfd, 0x59, 0xe0,
4225 0x4e, 0x99, 0x63, 0x8d, 0xe7, 0x61, 0xe4, 0x87, 0xad, 0x77, 0x2e, 0x1c, 0xd3, 0x9e, 0x44, 0xec,
4226 0x21, 0x80, 0x36, 0xc7, 0xb9, 0x31, 0x31, 0x60, 0x83, 0x79, 0x8e, 0xb5, 0xb8, 0xce, 0xfd, 0xd7,
4227 0xad, 0xb3, 0xce, 0x3c, 0x27, 0x4f, 0x4a, 0xc4, 0xc1, 0x48, 0x68, 0x61, 0xcc, 0x68, 0x6d, 0x60,
4228 0x90, 0xb9, 0x77, 0x69, 0xac, 0x14, 0xe2, 0x64, 0xc2, 0xf7, 0x6f, 0xc0, 0x2d, 0x19, 0x22, 0xad,
4229 0x80, 0x85, 0x13, 0x36, 0x8e, 0xad, 0x60, 0x6a, 0x7b, 0x58, 0xca, 0xa5, 0xc6, 0x4a, 0x24, 0xe4,
4230 0x50, 0x20, 0x0e, 0xa7, 0xb6, 0x47, 0x34, 0xa8, 0x3f, 0x67, 0x67, 0x91, 0xc5, 0x23, 0x29, 0x76,
4231 0xae, 0x29, 0xba, 0xc6, 0xe9, 0x43, 0x6f, 0x7a, 0x46, 0x7e, 0x02, 0x8d, 0xf8, 0xdc, 0xdb, 0xb0,
4232 0x61, 0x6d, 0xe4, 0x4e, 0x35, 0xe3, 0x8b, 0x34, 0x0b, 0x25, 0xf7, 0xa1, 0x2a, 0x35, 0xd4, 0xba,
4233 0x97, 0x5d, 0x3b, 0xa1, 0xf2, 0xc4, 0x3c, 0xb1, 0xdd, 0xa9, 0x7f, 0xca, 0x42, 0x6b, 0x16, 0xb5,
4234 0xda, 0xe2, 0xb6, 0x24, 0x21, 0x1d, 0x44, 0xdc, 0x4f, 0xa3, 0x38, 0xf4, 0xbd, 0xe3, 0xd6, 0x26,
4235 0xde, 0x93, 0xc8, 0xd1, 0xc5, 0xe0, 0xf7, 0x2e, 0x66, 0xfe, 0x7c, 0xf0, 0xfb, 0x1c, 0xee, 0x60,
4236 0x65, 0x66, 0x3d, 0x3b, 0xb3, 0xf2, 0x68, 0x0d, 0xd1, 0x1b, 0xc8, 0xdd, 0x3d, 0x3b, 0xcc, 0x4e,
4237 0x6a, 0x43, 0xcd, 0x71, 0xa3, 0xd8, 0xf5, 0xc6, 0x71, 0xab, 0x85, 0xef, 0x4c, 0xc7, 0xe4, 0x33,
4238 0xb8, 0x3d, 0x73, 0x3d, 0x2b, 0xb2, 0x27, 0xcc, 0x8a, 0x5d, 0xee, 0x9b, 0x6c, 0xec, 0x7b, 0x4e,
4239 0xd4, 0x7a, 0x80, 0x82, 0x93, 0x99, 0xeb, 0x8d, 0xec, 0x09, 0x33, 0xdd, 0x19, 0x1b, 0x09, 0x0e,
4240 0xf9, 0x08, 0xd6, 0x11, 0x1e, 0xb2, 0x60, 0xea, 0x8e, 0x6d, 0xf1, 0xfa, 0x1f, 0xe1, 0xeb, 0xd7,
4241 0x38, 0x83, 0x0a, 0x3a, 0xbe, 0xfa, 0x63, 0x68, 0x06, 0x2c, 0x8c, 0xdc, 0x28, 0xb6, 0xa4, 0x45,
4242 0xbf, 0x97, 0xd5, 0xda, 0xaa, 0x64, 0x0e, 0x91, 0xd7, 0xfe, 0xcf, 0x02, 0x54, 0x84, 0x73, 0x92,
4243 0x4f, 0x41, 0xf1, 0x03, 0xbc, 0x06, 0x69, 0x6e, 0x6f, 0x5e, 0xe2, 0xc1, 0x9d, 0x61, 0xc0, 0xeb,
4244 0x5e, 0x3f, 0xa4, 0x8a, 0x1f, 0xdc, 0xb8, 0x28, 0xd4, 0xfe, 0x10, 0x6a, 0xc9, 0x02, 0xbc, 0xbc,
4245 0xe8, 0xeb, 0xa3, 0x91, 0x65, 0x3e, 0xee, 0x0e, 0xd4, 0x02, 0xb9, 0x03, 0x24, 0x1d, 0x5a, 0x43,
4246 0x6a, 0xe9, 0xdf, 0x1c, 0x75, 0xfb, 0xaa, 0x82, 0x5d, 0x1a, 0xd5, 0xbb, 0xa6, 0x4e, 0x05, 0xb2,
4247 0x48, 0xee, 0xc1, 0xed, 0x2c, 0xe5, 0x1c, 0x5c, 0xc2, 0x14, 0x8c, 0x8f, 0x65, 0x52, 0x01, 0xc5,
4248 0x18, 0xa8, 0x15, 0x9e, 0x16, 0xf4, 0xef, 0x8d, 0x91, 0x39, 0x52, 0xab, 0xed, 0xbf, 0x29, 0x40,
4249 0x19, 0xc3, 0x06, 0x3f, 0x9f, 0x54, 0x72, 0x71, 0x5d, 0x73, 0x5e, 0xb9, 0x1a, 0xd9, 0x92, 0xaa,
4250 0x81, 0x01, 0x65, 0x73, 0x79, 0xf4, 0xf9, 0xb5, 0xd6, 0x53, 0x3f, 0x85, 0x12, 0x8f, 0x52, 0xbc,
4251 0x43, 0x1c, 0xd2, 0x9e, 0x4e, 0xad, 0x47, 0x06, 0x1d, 0xf1, 0x2a, 0x97, 0x40, 0xb3, 0x3b, 0xd8,
4252 0xd3, 0x47, 0xe6, 0x30, 0xa1, 0xa1, 0x56, 0x1e, 0x19, 0x7d, 0x33, 0x45, 0x15, 0xb5, 0x9f, 0xd7,
4253 0x60, 0x35, 0x89, 0x09, 0x22, 0x82, 0x3e, 0x82, 0x46, 0x10, 0xba, 0x33, 0x3b, 0x3c, 0x8b, 0xc6,
4254 0xb6, 0x87, 0x49, 0x01, 0xb6, 0x7f, 0xb4, 0x24, 0xaa, 0x88, 0x1d, 0x1d, 0x0a, 0xec, 0x68, 0x6c,
4255 0x7b, 0x34, 0x3b, 0x91, 0xf4, 0x61, 0x75, 0xc6, 0xc2, 0x63, 0xf6, 0x7b, 0xbe, 0xeb, 0xe1, 0x4a,
4256 0x55, 0x8c, 0xc8, 0xef, 0x5f, 0xba, 0xd2, 0x01, 0x47, 0xff, 0x8e, 0xef, 0x7a, 0xb8, 0x56, 0x7e,
4257 0x32, 0xf9, 0x04, 0xea, 0xa2, 0x12, 0x72, 0xd8, 0x04, 0x63, 0xc5, 0xb2, 0xda, 0x4f, 0xd4, 0xe8,
4258 0x3d, 0x36, 0xc9, 0xc4, 0x65, 0xb8, 0x34, 0x2e, 0x37, 0xb2, 0x71, 0xf9, 0xcd, 0x6c, 0x2c, 0x5a,
4259 0x11, 0x55, 0x78, 0x1a, 0x84, 0x2e, 0x38, 0x7c, 0x6b, 0x89, 0xc3, 0x77, 0x60, 0x23, 0xf1, 0x55,
4260 0xcb, 0xf5, 0x26, 0xee, 0x4b, 0x2b, 0x72, 0x5f, 0x89, 0xd8, 0x53, 0xa6, 0xeb, 0x09, 0xcb, 0xe0,
4261 0x9c, 0x91, 0xfb, 0x8a, 0x11, 0x23, 0xe9, 0xe0, 0x64, 0x0e, 0x5c, 0xc5, 0xab, 0xc9, 0xf7, 0x2e,
4262 0x55, 0x8f, 0x68, 0xbe, 0x64, 0x46, 0xcc, 0x4d, 0x6d, 0xff, 0x52, 0x81, 0x46, 0xe6, 0x1c, 0x78,
4263 0xf6, 0x16, 0xca, 0x42, 0x61, 0xc5, 0x55, 0x94, 0x50, 0x1f, 0x4a, 0xfa, 0x26, 0xd4, 0xa3, 0xd8,
4264 0x0e, 0x63, 0x8b, 0x17, 0x57, 0xb2, 0xdd, 0x45, 0xc2, 0x13, 0x76, 0x46, 0x3e, 0x80, 0x35, 0xc1,
4265 0x74, 0xbd, 0xf1, 0x74, 0x1e, 0xb9, 0xa7, 0xa2, 0x99, 0xaf, 0xd1, 0x26, 0x92, 0x8d, 0x84, 0x4a,
4266 0xee, 0x42, 0x95, 0x67, 0x21, 0xbe, 0x86, 0x68, 0xfa, 0x2a, 0xcc, 0x73, 0xf8, 0x0a, 0x0f, 0x60,
4267 0x95, 0x33, 0xce, 0xe7, 0x57, 0xc4, 0x2d, 0x33, 0xf3, 0x9c, 0xf3, 0xd9, 0x1d, 0xd8, 0x10, 0xaf,
4268 0x09, 0x44, 0xf1, 0x2a, 0x2b, 0xdc, 0x3b, 0xa8, 0xd8, 0x75, 0x64, 0xc9, 0xb2, 0x56, 0x14, 0x9c,
4269 0x1f, 0x01, 0xcf, 0x5e, 0x0b, 0xe8, 0xbb, 0x22, 0x94, 0x31, 0xcf, 0xc9, 0x61, 0x77, 0xe1, 0x1d,
4270 0x8e, 0x9d, 0x7b, 0x76, 0x10, 0x4c, 0x5d, 0xe6, 0x58, 0x53, 0xff, 0x18, 0x43, 0x66, 0x14, 0xdb,
4271 0xb3, 0xc0, 0x9a, 0x47, 0xad, 0x0d, 0x0c, 0x99, 0x6d, 0xe6, 0x39, 0x47, 0x09, 0xa8, 0xef, 0x1f,
4272 0x9b, 0x09, 0xe4, 0x28, 0x6a, 0xff, 0x3e, 0xac, 0xe6, 0xec, 0x71, 0x41, 0xa7, 0x35, 0x74, 0xfe,
4273 0x8c, 0x4e, 0xdf, 0x85, 0x95, 0x20, 0x64, 0xe7, 0xa2, 0xd5, 0x51, 0xb4, 0x86, 0xa0, 0x09, 0xb1,
4274 0xb6, 0x60, 0x05, 0x79, 0x96, 0x20, 0xe6, 0xf3, 0x63, 0x03, 0x59, 0x87, 0xc8, 0x69, 0xbf, 0x80,
4275 0x95, 0xec, 0x69, 0x93, 0x77, 0x33, 0x69, 0xa1, 0x99, 0xcb, 0x93, 0x69, 0x76, 0x48, 0x2a, 0xb2,
4276 0xf5, 0x4b, 0x2a, 0x32, 0x72, 0x9d, 0x8a, 0x4c, 0xfb, 0x2f, 0xd9, 0x9c, 0x65, 0x2a, 0x84, 0x9f,
4277 0x41, 0x2d, 0x90, 0xf5, 0x38, 0x5a, 0x52, 0xfe, 0x12, 0x3e, 0x0f, 0xee, 0x24, 0x95, 0x3b, 0x4d,
4278 0xe7, 0xb4, 0xff, 0x56, 0x81, 0x5a, 0x5a, 0xd0, 0xe7, 0x2c, 0xef, 0xcd, 0x05, 0xcb, 0x3b, 0x90,
4279 0x1a, 0x16, 0x0a, 0x7c, 0x1b, 0xa3, 0xc5, 0x27, 0xaf, 0x7f, 0xd7, 0xc5, 0xb6, 0xe7, 0x34, 0xdb,
4280 0xf6, 0x6c, 0xbe, 0xae, 0xed, 0xf9, 0xe4, 0xa2, 0xc1, 0xbf, 0x95, 0xe9, 0x2d, 0x16, 0xcc, 0xbe,
4281 0xfd, 0x7d, 0xae, 0x0f, 0xca, 0x26, 0x84, 0x77, 0xc4, 0x7e, 0xd2, 0x84, 0x90, 0xb6, 0x3f, 0xf7,
4282 0xaf, 0xd7, 0xfe, 0x6c, 0x43, 0x45, 0xea, 0xfc, 0x0e, 0x54, 0x64, 0x4d, 0x27, 0x1b, 0x04, 0x31,
4283 0x3a, 0x6f, 0x10, 0x0a, 0xb2, 0x4e, 0xd7, 0x7e, 0xae, 0x40, 0x59, 0x0f, 0x43, 0x3f, 0xd4, 0xfe,
4284 0x48, 0x81, 0x3a, 0x3e, 0xed, 0xf9, 0x0e, 0xe3, 0xd9, 0x60, 0xb7, 0xdb, 0xb3, 0xa8, 0xfe, 0xcd,
4285 0x91, 0x8e, 0xd9, 0xa0, 0x0d, 0x77, 0xf6, 0x86, 0x83, 0xbd, 0x23, 0x4a, 0xf5, 0x81, 0x69, 0x99,
4286 0xb4, 0x3b, 0x18, 0xf1, 0xb6, 0x67, 0x38, 0x50, 0x15, 0x9e, 0x29, 0x8c, 0x81, 0xa9, 0xd3, 0x41,
4287 0xb7, 0x6f, 0x89, 0x56, 0xb4, 0x88, 0x77, 0xb3, 0xba, 0xde, 0xb3, 0xf0, 0xd6, 0x51, 0x2d, 0xf1,
4288 0x96, 0xd5, 0x34, 0x0e, 0xf4, 0xe1, 0x91, 0xa9, 0x96, 0xc9, 0x6d, 0x58, 0x3f, 0xd4, 0xe9, 0x81,
4289 0x31, 0x1a, 0x19, 0xc3, 0x81, 0xd5, 0xd3, 0x07, 0x86, 0xde, 0x53, 0x2b, 0x7c, 0x9d, 0x5d, 0x63,
4290 0xdf, 0xec, 0xee, 0xf6, 0x75, 0xb9, 0x4e, 0x95, 0x6c, 0xc2, 0x5b, 0x7b, 0xc3, 0x83, 0x03, 0xc3,
4291 0x34, 0xf5, 0x9e, 0xb5, 0x7b, 0x64, 0x5a, 0x23, 0xd3, 0xe8, 0xf7, 0xad, 0xee, 0xe1, 0x61, 0xff,
4292 0x29, 0x4f, 0x60, 0x35, 0x72, 0x17, 0x36, 0xf6, 0xba, 0x87, 0xdd, 0x5d, 0xa3, 0x6f, 0x98, 0x4f,
4293 0xad, 0x9e, 0x31, 0xe2, 0xf3, 0x7b, 0x6a, 0x9d, 0x27, 0x6c, 0x93, 0x3e, 0xb5, 0xba, 0x7d, 0x14,
4294 0xcd, 0xd4, 0xad, 0xdd, 0xee, 0xde, 0x13, 0x7d, 0xd0, 0x53, 0x81, 0x0b, 0x30, 0xea, 0x3e, 0xd2,
4295 0x2d, 0x2e, 0x92, 0x65, 0x0e, 0x87, 0xd6, 0xb0, 0xdf, 0x53, 0x1b, 0xda, 0xbf, 0x14, 0xa1, 0xb4,
4296 0xe7, 0x47, 0x31, 0xf7, 0x46, 0xe1, 0xac, 0x2f, 0x42, 0x37, 0x66, 0xa2, 0x7f, 0x2b, 0x53, 0xd1,
4297 0x4b, 0x7f, 0x87, 0x24, 0x1e, 0x50, 0x32, 0x10, 0xeb, 0xd9, 0x19, 0xc7, 0x29, 0x88, 0x5b, 0x3b,
4298 0xc7, 0xed, 0x72, 0xb2, 0x88, 0x68, 0x78, 0x85, 0x23, 0xd7, 0x2b, 0x22, 0x4e, 0x06, 0x61, 0xb9,
4299 0xe0, 0xc7, 0x40, 0xb2, 0x20, 0xb9, 0x62, 0x09, 0x91, 0x6a, 0x06, 0x29, 0x96, 0xdc, 0x01, 0x18,
4300 0xfb, 0xb3, 0x99, 0x1b, 0x8f, 0xfd, 0x28, 0x96, 0x5f, 0xc8, 0xda, 0x39, 0x63, 0x8f, 0x62, 0x6e,
4301 0xf1, 0x33, 0x37, 0xe6, 0x8f, 0x34, 0x83, 0x26, 0x3b, 0x70, 0xcf, 0x0e, 0x82, 0xd0, 0x7f, 0xe9,
4302 0xce, 0xec, 0x98, 0x59, 0xdc, 0x73, 0xed, 0x63, 0x66, 0x39, 0x6c, 0x1a, 0xdb, 0xd8, 0x13, 0x95,
4303 0xe9, 0xdd, 0x0c, 0x60, 0x24, 0xf8, 0x3d, 0xce, 0xe6, 0x71, 0xd7, 0x75, 0xac, 0x88, 0xfd, 0x30,
4304 0xe7, 0x1e, 0x60, 0xcd, 0x03, 0xc7, 0xe6, 0x62, 0xd6, 0x45, 0x96, 0x72, 0x9d, 0x91, 0xe4, 0x1c,
4305 0x09, 0x46, 0xfb, 0x15, 0xc0, 0xb9, 0x14, 0x64, 0x1b, 0x6e, 0xf3, 0x3a, 0x9e, 0x45, 0x31, 0x73,
4306 0x2c, 0xb9, 0xdb, 0x60, 0x1e, 0x47, 0x18, 0xe2, 0xcb, 0x74, 0x23, 0x65, 0xca, 0x9b, 0xc2, 0x79,
4307 0x1c, 0x91, 0x9f, 0x40, 0xeb, 0xc2, 0x1c, 0x87, 0x4d, 0x19, 0x7f, 0x6d, 0x15, 0xa7, 0xdd, 0x59,
4308 0x98, 0xd6, 0x13, 0x5c, 0xed, 0x4f, 0x14, 0x80, 0x7d, 0x16, 0x53, 0xc1, 0xcd, 0x34, 0xb6, 0x95,
4309 0xeb, 0x36, 0xb6, 0xef, 0x27, 0x17, 0x08, 0xc5, 0xab, 0x63, 0xc0, 0x42, 0x97, 0xa1, 0xdc, 0xa4,
4310 0xcb, 0xc8, 0x35, 0x11, 0xc5, 0x2b, 0x9a, 0x88, 0x52, 0xae, 0x89, 0xf8, 0x18, 0x9a, 0xf6, 0x74,
4311 0xea, 0xbf, 0xe0, 0x05, 0x0d, 0x0b, 0x43, 0xe6, 0xa0, 0x11, 0x9c, 0xd7, 0xdb, 0xc8, 0xec, 0x49,
4312 0x9e, 0xf6, 0xe7, 0x0a, 0x34, 0x50, 0x15, 0x51, 0xe0, 0x7b, 0x11, 0x23, 0x5f, 0x42, 0x45, 0x5e,
4313 0x44, 0x8b, 0x8b, 0xfc, 0xb7, 0x33, 0xb2, 0x66, 0x70, 0xb2, 0x68, 0xa0, 0x12, 0xcc, 0x33, 0x42,
4314 0xe6, 0x75, 0x97, 0x2b, 0x25, 0x45, 0x91, 0xfb, 0x50, 0x73, 0x3d, 0x4b, 0xb4, 0xd4, 0x95, 0x4c,
4315 0x58, 0xac, 0xba, 0x1e, 0xd6, 0xb2, 0xed, 0x57, 0x50, 0x11, 0x2f, 0x21, 0x9d, 0x54, 0xa6, 0x8b,
4316 0xfa, 0xcb, 0xdc, 0x1c, 0xa7, 0xc2, 0xc8, 0xc3, 0x29, 0xbd, 0x2e, 0x40, 0xb7, 0xa0, 0x7a, 0xca,
4317 0x9b, 0x0f, 0xbc, 0xf4, 0xe3, 0xea, 0x4d, 0x86, 0xda, 0x1f, 0x97, 0x00, 0x0e, 0xe7, 0x4b, 0x0c,
4318 0xa4, 0x71, 0x5d, 0x03, 0xe9, 0xe4, 0xf4, 0xf8, 0x7a, 0x99, 0x7f, 0x75, 0x43, 0x59, 0xd2, 0x69,
4319 0x17, 0x6f, 0xda, 0x69, 0xdf, 0x87, 0x6a, 0x1c, 0xce, 0xb9, 0xa3, 0x08, 0x63, 0x4a, 0x5b, 0x5a,
4320 0x49, 0x25, 0x6f, 0x42, 0x79, 0xe2, 0x87, 0x63, 0x86, 0x8e, 0x95, 0xb2, 0x05, 0xed, 0xc2, 0x65,
4321 0x52, 0xed, 0xb2, 0xcb, 0x24, 0xde, 0xa0, 0x45, 0xf2, 0x1e, 0x0d, 0x0b, 0x99, 0x7c, 0x83, 0x96,
4322 0x5c, 0xb1, 0xd1, 0x14, 0x44, 0xbe, 0x81, 0xa6, 0x3d, 0x8f, 0x7d, 0xcb, 0xe5, 0x15, 0xda, 0xd4,
4323 0x1d, 0x9f, 0x61, 0xd9, 0xdd, 0xcc, 0x7f, 0xaf, 0x4f, 0x0f, 0xaa, 0xd3, 0x9d, 0xc7, 0xbe, 0xe1,
4324 0x1c, 0x22, 0x72, 0xa7, 0x2a, 0x93, 0x12, 0x5d, 0xb1, 0x33, 0x64, 0xed, 0xc7, 0xb0, 0x92, 0x85,
4325 0xf1, 0x04, 0x24, 0x81, 0xea, 0x1b, 0x3c, 0x3b, 0x8d, 0x78, 0x6a, 0x1b, 0x98, 0x46, 0xb7, 0xaf,
4326 0x16, 0xb4, 0x18, 0x1a, 0xb8, 0xbc, 0xf4, 0x8e, 0xeb, 0xba, 0xfd, 0x03, 0x28, 0x61, 0xf8, 0x55,
4327 0x2e, 0x7c, 0x0f, 0xc1, 0x98, 0x8b, 0xcc, 0xbc, 0xf9, 0x15, 0xb3, 0xe6, 0xf7, 0xdf, 0x05, 0x58,
4328 0x31, 0xfd, 0xf9, 0xf8, 0xe4, 0xa2, 0x01, 0xc2, 0xaf, 0x3b, 0x42, 0x2d, 0x31, 0x1f, 0xe5, 0xa6,
4329 0xe6, 0x93, 0x5a, 0x47, 0x71, 0x89, 0x75, 0xdc, 0xf4, 0xcc, 0xb5, 0x2f, 0x60, 0x55, 0x6e, 0x5e,
4330 0x6a, 0x3d, 0xd1, 0x66, 0xe1, 0x0a, 0x6d, 0x6a, 0xbf, 0x50, 0x60, 0x55, 0xc4, 0xf7, 0xff, 0xbb,
4331 0xd2, 0x2a, 0x37, 0x0c, 0xeb, 0xe5, 0x1b, 0x5d, 0x1e, 0xfd, 0xbf, 0xf4, 0x34, 0x6d, 0x08, 0xcd,
4332 0x44, 0x7d, 0x37, 0x50, 0xfb, 0x15, 0x46, 0xfc, 0x8b, 0x02, 0x34, 0x06, 0xec, 0xe5, 0x92, 0x20,
4333 0x5a, 0xbe, 0xee, 0x71, 0x7c, 0x98, 0x2b, 0x57, 0x1b, 0xdb, 0xeb, 0x59, 0x19, 0xc4, 0xd5, 0x63,
4334 0x52, 0xc1, 0xa6, 0xb7, 0xa8, 0xca, 0xf2, 0x5b, 0xd4, 0xd2, 0x62, 0xb7, 0x9e, 0xb9, 0xc5, 0x2b,
4335 0x2e, 0xbb, 0xc5, 0xd3, 0xfe, 0xad, 0x08, 0x0d, 0x6c, 0x90, 0x29, 0x8b, 0xe6, 0xd3, 0x38, 0x27,
4336 0x4c, 0xe1, 0x6a, 0x61, 0x3a, 0x50, 0x09, 0x71, 0x92, 0x74, 0xa5, 0x4b, 0x83, 0xbf, 0x40, 0x61,
4337 0x6b, 0xfc, 0xdc, 0x0d, 0x02, 0xe6, 0x58, 0x82, 0x92, 0x14, 0x30, 0x4d, 0x49, 0x16, 0x22, 0x44,
4338 0xbc, 0xfc, 0x9c, 0xf9, 0x21, 0x4b, 0x51, 0x45, 0xbc, 0x4f, 0x68, 0x70, 0x5a, 0x02, 0xc9, 0xdd,
4339 0x37, 0x88, 0xca, 0xe0, 0xfc, 0xbe, 0x21, 0xed, 0x35, 0x91, 0x5b, 0x47, 0xae, 0xe8, 0x35, 0x91,
4340 0xcd, 0xbb, 0xa8, 0x99, 0x3d, 0x9d, 0x5a, 0x7e, 0x10, 0xa1, 0xd3, 0xd4, 0x68, 0x0d, 0x09, 0xc3,
4341 0x20, 0x22, 0x5f, 0x43, 0x7a, 0x5d, 0x2c, 0x6f, 0xc9, 0xc5, 0x39, 0xb6, 0x2e, 0xbb, 0x58, 0xa0,
4342 0xab, 0xe3, 0xdc, 0xfd, 0xcf, 0x92, 0x1b, 0xea, 0xca, 0x4d, 0x6f, 0xa8, 0x1f, 0x42, 0x59, 0xc4,
4343 0xa8, 0xda, 0xeb, 0x62, 0x94, 0xc0, 0x65, 0xed, 0xb3, 0x91, 0xb7, 0xcf, 0x5f, 0x16, 0x80, 0x74,
4344 0xa7, 0x53, 0x7f, 0x6c, 0xc7, 0xcc, 0x70, 0xa2, 0x8b, 0x66, 0x7a, 0xed, 0xcf, 0x2e, 0x9f, 0x41,
4345 0x7d, 0xe6, 0x3b, 0x6c, 0x6a, 0x25, 0xdf, 0x94, 0x2e, 0xad, 0x7e, 0x10, 0xc6, 0x5b, 0x52, 0x02,
4346 0x25, 0xbc, 0xc4, 0x51, 0xb0, 0xee, 0xc0, 0x67, 0xde, 0x84, 0xcd, 0xec, 0x97, 0xb2, 0x14, 0xe1,
4347 0x8f, 0xa4, 0x03, 0xd5, 0x90, 0x45, 0x2c, 0x3c, 0x65, 0x57, 0x16, 0x55, 0x09, 0x48, 0x7b, 0x06,
4348 0x1b, 0xb9, 0x1d, 0x49, 0x47, 0xbe, 0x85, 0x5f, 0x2b, 0xc3, 0x58, 0x7e, 0xb4, 0x12, 0x03, 0xfe,
4349 0x3a, 0xe6, 0x25, 0x9f, 0x41, 0xf9, 0x63, 0xea, 0xf0, 0xc5, 0xab, 0xe2, 0xec, 0x1e, 0xa8, 0x59,
4350 0x4d, 0xbb, 0x63, 0x0c, 0x36, 0xf2, 0x54, 0x0a, 0xd7, 0x3b, 0x15, 0xed, 0xef, 0x0a, 0xb0, 0xde,
4351 0x75, 0x1c, 0xf1, 0x77, 0xc3, 0x25, 0xaa, 0x2f, 0x5e, 0x57, 0xf5, 0x0b, 0x81, 0x58, 0x84, 0x89,
4352 0x6b, 0x05, 0xe2, 0x0f, 0xa1, 0x92, 0xd6, 0x5a, 0xc5, 0x05, 0x77, 0x16, 0x72, 0x51, 0x09, 0xd0,
4353 0x6e, 0x01, 0xc9, 0x0a, 0x2b, 0xb4, 0xaa, 0xfd, 0x69, 0x11, 0xee, 0xee, 0xb2, 0x63, 0xd7, 0xcb,
4354 0xbe, 0xe2, 0x57, 0xdf, 0xc9, 0xc5, 0x4f, 0x65, 0x9f, 0xc1, 0xba, 0x28, 0xe4, 0x93, 0x7f, 0x62,
4355 0x59, 0xec, 0x58, 0x7e, 0x9d, 0x94, 0xb1, 0x6a, 0x0d, 0xf9, 0x07, 0x92, 0xad, 0xe3, 0x7f, 0xc5,
4356 0x1c, 0x3b, 0xb6, 0x9f, 0xd9, 0x11, 0xb3, 0x5c, 0x47, 0xfe, 0x59, 0x06, 0x12, 0x92, 0xe1, 0x90,
4357 0x21, 0x94, 0xb8, 0x0d, 0xa2, 0xeb, 0x36, 0xb7, 0xb7, 0x33, 0x62, 0x5d, 0xb2, 0x95, 0xac, 0x02,
4358 0x0f, 0x7c, 0x87, 0xed, 0x54, 0x8f, 0x06, 0x4f, 0x06, 0xc3, 0xef, 0x06, 0x14, 0x17, 0x22, 0x06,
4359 0xdc, 0x0a, 0x42, 0x76, 0xea, 0xfa, 0xf3, 0xc8, 0xca, 0x9e, 0x44, 0xf5, 0xca, 0x94, 0xb8, 0x91,
4360 0xcc, 0xc9, 0x10, 0xb5, 0x9f, 0xc2, 0xda, 0xc2, 0xcb, 0x78, 0x6d, 0x26, 0x5f, 0xa7, 0xbe, 0x41,
4361 0x56, 0xa1, 0x8e, 0x1f, 0xbb, 0x97, 0x7f, 0xfb, 0xd6, 0xfe, 0xb5, 0x80, 0x57, 0x4c, 0x33, 0x37,
4362 0xbe, 0x59, 0x06, 0xfb, 0xcd, 0x7c, 0x06, 0x83, 0xed, 0x77, 0xf3, 0xe6, 0x9b, 0x59, 0xb0, 0xf3,
4363 0xad, 0x00, 0xa6, 0x41, 0xa4, 0x6d, 0x43, 0x55, 0xd2, 0xc8, 0x6f, 0xc1, 0x5a, 0xe8, 0xfb, 0x71,
4364 0xd2, 0x89, 0x8a, 0x0e, 0xe4, 0xf2, 0x3f, 0xdb, 0xac, 0x72, 0xb0, 0x48, 0x06, 0x4f, 0xf2, 0xbd,
4365 0x48, 0x59, 0xfc, 0x0d, 0x44, 0x0e, 0x77, 0x1b, 0xbf, 0x5b, 0x4f, 0xff, 0xb7, 0xfb, 0xbf, 0x01,
4366 0x00, 0x00, 0xff, 0xff, 0x35, 0x9f, 0x30, 0x98, 0xf2, 0x2b, 0x00, 0x00,
4367}
diff --git a/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
new file mode 100644
index 0000000..497b4d9
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
@@ -0,0 +1,551 @@
1syntax = "proto2";
2option go_package = "datastore";
3
4package appengine;
5
6message Action{}
7
8message PropertyValue {
9 optional int64 int64Value = 1;
10 optional bool booleanValue = 2;
11 optional string stringValue = 3;
12 optional double doubleValue = 4;
13
14 optional group PointValue = 5 {
15 required double x = 6;
16 required double y = 7;
17 }
18
19 optional group UserValue = 8 {
20 required string email = 9;
21 required string auth_domain = 10;
22 optional string nickname = 11;
23 optional string federated_identity = 21;
24 optional string federated_provider = 22;
25 }
26
27 optional group ReferenceValue = 12 {
28 required string app = 13;
29 optional string name_space = 20;
30 repeated group PathElement = 14 {
31 required string type = 15;
32 optional int64 id = 16;
33 optional string name = 17;
34 }
35 }
36}
37
38message Property {
39 enum Meaning {
40 NO_MEANING = 0;
41 BLOB = 14;
42 TEXT = 15;
43 BYTESTRING = 16;
44
45 ATOM_CATEGORY = 1;
46 ATOM_LINK = 2;
47 ATOM_TITLE = 3;
48 ATOM_CONTENT = 4;
49 ATOM_SUMMARY = 5;
50 ATOM_AUTHOR = 6;
51
52 GD_WHEN = 7;
53 GD_EMAIL = 8;
54 GEORSS_POINT = 9;
55 GD_IM = 10;
56
57 GD_PHONENUMBER = 11;
58 GD_POSTALADDRESS = 12;
59
60 GD_RATING = 13;
61
62 BLOBKEY = 17;
63 ENTITY_PROTO = 19;
64
65 INDEX_VALUE = 18;
66 };
67
68 optional Meaning meaning = 1 [default = NO_MEANING];
69 optional string meaning_uri = 2;
70
71 required string name = 3;
72
73 required PropertyValue value = 5;
74
75 required bool multiple = 4;
76
77 optional bool searchable = 6 [default=false];
78
79 enum FtsTokenizationOption {
80 HTML = 1;
81 ATOM = 2;
82 }
83
84 optional FtsTokenizationOption fts_tokenization_option = 8;
85
86 optional string locale = 9 [default = "en"];
87}
88
89message Path {
90 repeated group Element = 1 {
91 required string type = 2;
92 optional int64 id = 3;
93 optional string name = 4;
94 }
95}
96
97message Reference {
98 required string app = 13;
99 optional string name_space = 20;
100 required Path path = 14;
101}
102
103message User {
104 required string email = 1;
105 required string auth_domain = 2;
106 optional string nickname = 3;
107 optional string federated_identity = 6;
108 optional string federated_provider = 7;
109}
110
111message EntityProto {
112 required Reference key = 13;
113 required Path entity_group = 16;
114 optional User owner = 17;
115
116 enum Kind {
117 GD_CONTACT = 1;
118 GD_EVENT = 2;
119 GD_MESSAGE = 3;
120 }
121 optional Kind kind = 4;
122 optional string kind_uri = 5;
123
124 repeated Property property = 14;
125 repeated Property raw_property = 15;
126
127 optional int32 rank = 18;
128}
129
130message CompositeProperty {
131 required int64 index_id = 1;
132 repeated string value = 2;
133}
134
135message Index {
136 required string entity_type = 1;
137 required bool ancestor = 5;
138 repeated group Property = 2 {
139 required string name = 3;
140 enum Direction {
141 ASCENDING = 1;
142 DESCENDING = 2;
143 }
144 optional Direction direction = 4 [default = ASCENDING];
145 }
146}
147
148message CompositeIndex {
149 required string app_id = 1;
150 required int64 id = 2;
151 required Index definition = 3;
152
153 enum State {
154 WRITE_ONLY = 1;
155 READ_WRITE = 2;
156 DELETED = 3;
157 ERROR = 4;
158 }
159 required State state = 4;
160
161 optional bool only_use_if_required = 6 [default = false];
162}
163
164message IndexPostfix {
165 message IndexValue {
166 required string property_name = 1;
167 required PropertyValue value = 2;
168 }
169
170 repeated IndexValue index_value = 1;
171
172 optional Reference key = 2;
173
174 optional bool before = 3 [default=true];
175}
176
177message IndexPosition {
178 optional string key = 1;
179
180 optional bool before = 2 [default=true];
181}
182
183message Snapshot {
184 enum Status {
185 INACTIVE = 0;
186 ACTIVE = 1;
187 }
188
189 required int64 ts = 1;
190}
191
192message InternalHeader {
193 optional string qos = 1;
194}
195
196message Transaction {
197 optional InternalHeader header = 4;
198 required fixed64 handle = 1;
199 required string app = 2;
200 optional bool mark_changes = 3 [default = false];
201}
202
203message Query {
204 optional InternalHeader header = 39;
205
206 required string app = 1;
207 optional string name_space = 29;
208
209 optional string kind = 3;
210 optional Reference ancestor = 17;
211
212 repeated group Filter = 4 {
213 enum Operator {
214 LESS_THAN = 1;
215 LESS_THAN_OR_EQUAL = 2;
216 GREATER_THAN = 3;
217 GREATER_THAN_OR_EQUAL = 4;
218 EQUAL = 5;
219 IN = 6;
220 EXISTS = 7;
221 }
222
223 required Operator op = 6;
224 repeated Property property = 14;
225 }
226
227 optional string search_query = 8;
228
229 repeated group Order = 9 {
230 enum Direction {
231 ASCENDING = 1;
232 DESCENDING = 2;
233 }
234
235 required string property = 10;
236 optional Direction direction = 11 [default = ASCENDING];
237 }
238
239 enum Hint {
240 ORDER_FIRST = 1;
241 ANCESTOR_FIRST = 2;
242 FILTER_FIRST = 3;
243 }
244 optional Hint hint = 18;
245
246 optional int32 count = 23;
247
248 optional int32 offset = 12 [default = 0];
249
250 optional int32 limit = 16;
251
252 optional CompiledCursor compiled_cursor = 30;
253 optional CompiledCursor end_compiled_cursor = 31;
254
255 repeated CompositeIndex composite_index = 19;
256
257 optional bool require_perfect_plan = 20 [default = false];
258
259 optional bool keys_only = 21 [default = false];
260
261 optional Transaction transaction = 22;
262
263 optional bool compile = 25 [default = false];
264
265 optional int64 failover_ms = 26;
266
267 optional bool strong = 32;
268
269 repeated string property_name = 33;
270
271 repeated string group_by_property_name = 34;
272
273 optional bool distinct = 24;
274
275 optional int64 min_safe_time_seconds = 35;
276
277 repeated string safe_replica_name = 36;
278
279 optional bool persist_offset = 37 [default=false];
280}
281
282message CompiledQuery {
283 required group PrimaryScan = 1 {
284 optional string index_name = 2;
285
286 optional string start_key = 3;
287 optional bool start_inclusive = 4;
288 optional string end_key = 5;
289 optional bool end_inclusive = 6;
290
291 repeated string start_postfix_value = 22;
292 repeated string end_postfix_value = 23;
293
294 optional int64 end_unapplied_log_timestamp_us = 19;
295 }
296
297 repeated group MergeJoinScan = 7 {
298 required string index_name = 8;
299
300 repeated string prefix_value = 9;
301
302 optional bool value_prefix = 20 [default=false];
303 }
304
305 optional Index index_def = 21;
306
307 optional int32 offset = 10 [default = 0];
308
309 optional int32 limit = 11;
310
311 required bool keys_only = 12;
312
313 repeated string property_name = 24;
314
315 optional int32 distinct_infix_size = 25;
316
317 optional group EntityFilter = 13 {
318 optional bool distinct = 14 [default=false];
319
320 optional string kind = 17;
321 optional Reference ancestor = 18;
322 }
323}
324
325message CompiledCursor {
326 optional group Position = 2 {
327 optional string start_key = 27;
328
329 repeated group IndexValue = 29 {
330 optional string property = 30;
331 required PropertyValue value = 31;
332 }
333
334 optional Reference key = 32;
335
336 optional bool start_inclusive = 28 [default=true];
337 }
338}
339
340message Cursor {
341 required fixed64 cursor = 1;
342
343 optional string app = 2;
344}
345
346message Error {
347 enum ErrorCode {
348 BAD_REQUEST = 1;
349 CONCURRENT_TRANSACTION = 2;
350 INTERNAL_ERROR = 3;
351 NEED_INDEX = 4;
352 TIMEOUT = 5;
353 PERMISSION_DENIED = 6;
354 BIGTABLE_ERROR = 7;
355 COMMITTED_BUT_STILL_APPLYING = 8;
356 CAPABILITY_DISABLED = 9;
357 TRY_ALTERNATE_BACKEND = 10;
358 SAFE_TIME_TOO_OLD = 11;
359 }
360}
361
362message Cost {
363 optional int32 index_writes = 1;
364 optional int32 index_write_bytes = 2;
365 optional int32 entity_writes = 3;
366 optional int32 entity_write_bytes = 4;
367 optional group CommitCost = 5 {
368 optional int32 requested_entity_puts = 6;
369 optional int32 requested_entity_deletes = 7;
370 };
371 optional int32 approximate_storage_delta = 8;
372 optional int32 id_sequence_updates = 9;
373}
374
375message GetRequest {
376 optional InternalHeader header = 6;
377
378 repeated Reference key = 1;
379 optional Transaction transaction = 2;
380
381 optional int64 failover_ms = 3;
382
383 optional bool strong = 4;
384
385 optional bool allow_deferred = 5 [default=false];
386}
387
388message GetResponse {
389 repeated group Entity = 1 {
390 optional EntityProto entity = 2;
391 optional Reference key = 4;
392
393 optional int64 version = 3;
394 }
395
396 repeated Reference deferred = 5;
397
398 optional bool in_order = 6 [default=true];
399}
400
401message PutRequest {
402 optional InternalHeader header = 11;
403
404 repeated EntityProto entity = 1;
405 optional Transaction transaction = 2;
406 repeated CompositeIndex composite_index = 3;
407
408 optional bool trusted = 4 [default = false];
409
410 optional bool force = 7 [default = false];
411
412 optional bool mark_changes = 8 [default = false];
413 repeated Snapshot snapshot = 9;
414
415 enum AutoIdPolicy {
416 CURRENT = 0;
417 SEQUENTIAL = 1;
418 }
419 optional AutoIdPolicy auto_id_policy = 10 [default = CURRENT];
420}
421
422message PutResponse {
423 repeated Reference key = 1;
424 optional Cost cost = 2;
425 repeated int64 version = 3;
426}
427
428message TouchRequest {
429 optional InternalHeader header = 10;
430
431 repeated Reference key = 1;
432 repeated CompositeIndex composite_index = 2;
433 optional bool force = 3 [default = false];
434 repeated Snapshot snapshot = 9;
435}
436
437message TouchResponse {
438 optional Cost cost = 1;
439}
440
441message DeleteRequest {
442 optional InternalHeader header = 10;
443
444 repeated Reference key = 6;
445 optional Transaction transaction = 5;
446
447 optional bool trusted = 4 [default = false];
448
449 optional bool force = 7 [default = false];
450
451 optional bool mark_changes = 8 [default = false];
452 repeated Snapshot snapshot = 9;
453}
454
455message DeleteResponse {
456 optional Cost cost = 1;
457 repeated int64 version = 3;
458}
459
460message NextRequest {
461 optional InternalHeader header = 5;
462
463 required Cursor cursor = 1;
464 optional int32 count = 2;
465
466 optional int32 offset = 4 [default = 0];
467
468 optional bool compile = 3 [default = false];
469}
470
471message QueryResult {
472 optional Cursor cursor = 1;
473
474 repeated EntityProto result = 2;
475
476 optional int32 skipped_results = 7;
477
478 required bool more_results = 3;
479
480 optional bool keys_only = 4;
481
482 optional bool index_only = 9;
483
484 optional bool small_ops = 10;
485
486 optional CompiledQuery compiled_query = 5;
487
488 optional CompiledCursor compiled_cursor = 6;
489
490 repeated CompositeIndex index = 8;
491
492 repeated int64 version = 11;
493}
494
495message AllocateIdsRequest {
496 optional InternalHeader header = 4;
497
498 optional Reference model_key = 1;
499
500 optional int64 size = 2;
501
502 optional int64 max = 3;
503
504 repeated Reference reserve = 5;
505}
506
507message AllocateIdsResponse {
508 required int64 start = 1;
509 required int64 end = 2;
510 optional Cost cost = 3;
511}
512
513message CompositeIndices {
514 repeated CompositeIndex index = 1;
515}
516
517message AddActionsRequest {
518 optional InternalHeader header = 3;
519
520 required Transaction transaction = 1;
521 repeated Action action = 2;
522}
523
524message AddActionsResponse {
525}
526
527message BeginTransactionRequest {
528 optional InternalHeader header = 3;
529
530 required string app = 1;
531 optional bool allow_multiple_eg = 2 [default = false];
532 optional string database_id = 4;
533
534 enum TransactionMode {
535 UNKNOWN = 0;
536 READ_ONLY = 1;
537 READ_WRITE = 2;
538 }
539 optional TransactionMode mode = 5 [default = UNKNOWN];
540
541 optional Transaction previous_transaction = 7;
542}
543
544message CommitResponse {
545 optional Cost cost = 1;
546
547 repeated group Version = 3 {
548 required Reference root_entity_key = 4;
549 required int64 version = 5;
550 }
551}
diff --git a/vendor/google.golang.org/appengine/internal/identity.go b/vendor/google.golang.org/appengine/internal/identity.go
new file mode 100644
index 0000000..9b4134e
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/identity.go
@@ -0,0 +1,55 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package internal
6
7import (
8 "os"
9
10 netcontext "golang.org/x/net/context"
11)
12
13var (
14 // This is set to true in identity_classic.go, which is behind the appengine build tag.
15 // The appengine build tag is set for the first generation runtimes (<= Go 1.9) but not
16 // the second generation runtimes (>= Go 1.11), so this indicates whether we're on a
17 // first-gen runtime. See IsStandard below for the second-gen check.
18 appengineStandard bool
19
20 // This is set to true in identity_flex.go, which is behind the appenginevm build tag.
21 appengineFlex bool
22)
23
24// AppID is the implementation of the wrapper function of the same name in
25// ../identity.go. See that file for commentary.
26func AppID(c netcontext.Context) string {
27 return appID(FullyQualifiedAppID(c))
28}
29
30// IsStandard is the implementation of the wrapper function of the same name in
31// ../appengine.go. See that file for commentary.
32func IsStandard() bool {
33 // appengineStandard will be true for first-gen runtimes (<= Go 1.9) but not
34 // second-gen (>= Go 1.11).
35 return appengineStandard || IsSecondGen()
36}
37
38// IsStandard is the implementation of the wrapper function of the same name in
39// ../appengine.go. See that file for commentary.
40func IsSecondGen() bool {
41 // Second-gen runtimes set $GAE_ENV so we use that to check if we're on a second-gen runtime.
42 return os.Getenv("GAE_ENV") == "standard"
43}
44
45// IsFlex is the implementation of the wrapper function of the same name in
46// ../appengine.go. See that file for commentary.
47func IsFlex() bool {
48 return appengineFlex
49}
50
51// IsAppEngine is the implementation of the wrapper function of the same name in
52// ../appengine.go. See that file for commentary.
53func IsAppEngine() bool {
54 return IsStandard() || IsFlex()
55}
diff --git a/vendor/google.golang.org/appengine/internal/identity_classic.go b/vendor/google.golang.org/appengine/internal/identity_classic.go
new file mode 100644
index 0000000..4e979f4
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/identity_classic.go
@@ -0,0 +1,61 @@
1// Copyright 2015 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build appengine
6
7package internal
8
9import (
10 "appengine"
11
12 netcontext "golang.org/x/net/context"
13)
14
15func init() {
16 appengineStandard = true
17}
18
19func DefaultVersionHostname(ctx netcontext.Context) string {
20 c := fromContext(ctx)
21 if c == nil {
22 panic(errNotAppEngineContext)
23 }
24 return appengine.DefaultVersionHostname(c)
25}
26
27func Datacenter(_ netcontext.Context) string { return appengine.Datacenter() }
28func ServerSoftware() string { return appengine.ServerSoftware() }
29func InstanceID() string { return appengine.InstanceID() }
30func IsDevAppServer() bool { return appengine.IsDevAppServer() }
31
32func RequestID(ctx netcontext.Context) string {
33 c := fromContext(ctx)
34 if c == nil {
35 panic(errNotAppEngineContext)
36 }
37 return appengine.RequestID(c)
38}
39
40func ModuleName(ctx netcontext.Context) string {
41 c := fromContext(ctx)
42 if c == nil {
43 panic(errNotAppEngineContext)
44 }
45 return appengine.ModuleName(c)
46}
47func VersionID(ctx netcontext.Context) string {
48 c := fromContext(ctx)
49 if c == nil {
50 panic(errNotAppEngineContext)
51 }
52 return appengine.VersionID(c)
53}
54
55func fullyQualifiedAppID(ctx netcontext.Context) string {
56 c := fromContext(ctx)
57 if c == nil {
58 panic(errNotAppEngineContext)
59 }
60 return c.FullyQualifiedAppID()
61}
diff --git a/vendor/google.golang.org/appengine/internal/identity_flex.go b/vendor/google.golang.org/appengine/internal/identity_flex.go
new file mode 100644
index 0000000..d5e2e7b
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/identity_flex.go
@@ -0,0 +1,11 @@
1// Copyright 2018 Google LLC. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build appenginevm
6
7package internal
8
9func init() {
10 appengineFlex = true
11}
diff --git a/vendor/google.golang.org/appengine/internal/identity_vm.go b/vendor/google.golang.org/appengine/internal/identity_vm.go
new file mode 100644
index 0000000..5d80672
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/identity_vm.go
@@ -0,0 +1,134 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build !appengine
6
7package internal
8
9import (
10 "log"
11 "net/http"
12 "os"
13 "strings"
14
15 netcontext "golang.org/x/net/context"
16)
17
18// These functions are implementations of the wrapper functions
19// in ../appengine/identity.go. See that file for commentary.
20
21const (
22 hDefaultVersionHostname = "X-AppEngine-Default-Version-Hostname"
23 hRequestLogId = "X-AppEngine-Request-Log-Id"
24 hDatacenter = "X-AppEngine-Datacenter"
25)
26
27func ctxHeaders(ctx netcontext.Context) http.Header {
28 c := fromContext(ctx)
29 if c == nil {
30 return nil
31 }
32 return c.Request().Header
33}
34
35func DefaultVersionHostname(ctx netcontext.Context) string {
36 return ctxHeaders(ctx).Get(hDefaultVersionHostname)
37}
38
39func RequestID(ctx netcontext.Context) string {
40 return ctxHeaders(ctx).Get(hRequestLogId)
41}
42
43func Datacenter(ctx netcontext.Context) string {
44 if dc := ctxHeaders(ctx).Get(hDatacenter); dc != "" {
45 return dc
46 }
47 // If the header isn't set, read zone from the metadata service.
48 // It has the format projects/[NUMERIC_PROJECT_ID]/zones/[ZONE]
49 zone, err := getMetadata("instance/zone")
50 if err != nil {
51 log.Printf("Datacenter: %v", err)
52 return ""
53 }
54 parts := strings.Split(string(zone), "/")
55 if len(parts) == 0 {
56 return ""
57 }
58 return parts[len(parts)-1]
59}
60
61func ServerSoftware() string {
62 // TODO(dsymonds): Remove fallback when we've verified this.
63 if s := os.Getenv("SERVER_SOFTWARE"); s != "" {
64 return s
65 }
66 if s := os.Getenv("GAE_ENV"); s != "" {
67 return s
68 }
69 return "Google App Engine/1.x.x"
70}
71
72// TODO(dsymonds): Remove the metadata fetches.
73
74func ModuleName(_ netcontext.Context) string {
75 if s := os.Getenv("GAE_MODULE_NAME"); s != "" {
76 return s
77 }
78 if s := os.Getenv("GAE_SERVICE"); s != "" {
79 return s
80 }
81 return string(mustGetMetadata("instance/attributes/gae_backend_name"))
82}
83
84func VersionID(_ netcontext.Context) string {
85 if s1, s2 := os.Getenv("GAE_MODULE_VERSION"), os.Getenv("GAE_MINOR_VERSION"); s1 != "" && s2 != "" {
86 return s1 + "." + s2
87 }
88 if s1, s2 := os.Getenv("GAE_VERSION"), os.Getenv("GAE_DEPLOYMENT_ID"); s1 != "" && s2 != "" {
89 return s1 + "." + s2
90 }
91 return string(mustGetMetadata("instance/attributes/gae_backend_version")) + "." + string(mustGetMetadata("instance/attributes/gae_backend_minor_version"))
92}
93
94func InstanceID() string {
95 if s := os.Getenv("GAE_MODULE_INSTANCE"); s != "" {
96 return s
97 }
98 if s := os.Getenv("GAE_INSTANCE"); s != "" {
99 return s
100 }
101 return string(mustGetMetadata("instance/attributes/gae_backend_instance"))
102}
103
104func partitionlessAppID() string {
105 // gae_project has everything except the partition prefix.
106 if appID := os.Getenv("GAE_LONG_APP_ID"); appID != "" {
107 return appID
108 }
109 if project := os.Getenv("GOOGLE_CLOUD_PROJECT"); project != "" {
110 return project
111 }
112 return string(mustGetMetadata("instance/attributes/gae_project"))
113}
114
115func fullyQualifiedAppID(_ netcontext.Context) string {
116 if s := os.Getenv("GAE_APPLICATION"); s != "" {
117 return s
118 }
119 appID := partitionlessAppID()
120
121 part := os.Getenv("GAE_PARTITION")
122 if part == "" {
123 part = string(mustGetMetadata("instance/attributes/gae_partition"))
124 }
125
126 if part != "" {
127 appID = part + "~" + appID
128 }
129 return appID
130}
131
132func IsDevAppServer() bool {
133 return os.Getenv("RUN_WITH_DEVAPPSERVER") != ""
134}
diff --git a/vendor/google.golang.org/appengine/internal/internal.go b/vendor/google.golang.org/appengine/internal/internal.go
new file mode 100644
index 0000000..051ea39
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/internal.go
@@ -0,0 +1,110 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// Package internal provides support for package appengine.
6//
7// Programs should not use this package directly. Its API is not stable.
8// Use packages appengine and appengine/* instead.
9package internal
10
11import (
12 "fmt"
13
14 "github.com/golang/protobuf/proto"
15
16 remotepb "google.golang.org/appengine/internal/remote_api"
17)
18
19// errorCodeMaps is a map of service name to the error code map for the service.
20var errorCodeMaps = make(map[string]map[int32]string)
21
22// RegisterErrorCodeMap is called from API implementations to register their
23// error code map. This should only be called from init functions.
24func RegisterErrorCodeMap(service string, m map[int32]string) {
25 errorCodeMaps[service] = m
26}
27
28type timeoutCodeKey struct {
29 service string
30 code int32
31}
32
33// timeoutCodes is the set of service+code pairs that represent timeouts.
34var timeoutCodes = make(map[timeoutCodeKey]bool)
35
36func RegisterTimeoutErrorCode(service string, code int32) {
37 timeoutCodes[timeoutCodeKey{service, code}] = true
38}
39
40// APIError is the type returned by appengine.Context's Call method
41// when an API call fails in an API-specific way. This may be, for instance,
42// a taskqueue API call failing with TaskQueueServiceError::UNKNOWN_QUEUE.
43type APIError struct {
44 Service string
45 Detail string
46 Code int32 // API-specific error code
47}
48
49func (e *APIError) Error() string {
50 if e.Code == 0 {
51 if e.Detail == "" {
52 return "APIError <empty>"
53 }
54 return e.Detail
55 }
56 s := fmt.Sprintf("API error %d", e.Code)
57 if m, ok := errorCodeMaps[e.Service]; ok {
58 s += " (" + e.Service + ": " + m[e.Code] + ")"
59 } else {
60 // Shouldn't happen, but provide a bit more detail if it does.
61 s = e.Service + " " + s
62 }
63 if e.Detail != "" {
64 s += ": " + e.Detail
65 }
66 return s
67}
68
69func (e *APIError) IsTimeout() bool {
70 return timeoutCodes[timeoutCodeKey{e.Service, e.Code}]
71}
72
73// CallError is the type returned by appengine.Context's Call method when an
74// API call fails in a generic way, such as RpcError::CAPABILITY_DISABLED.
75type CallError struct {
76 Detail string
77 Code int32
78 // TODO: Remove this if we get a distinguishable error code.
79 Timeout bool
80}
81
82func (e *CallError) Error() string {
83 var msg string
84 switch remotepb.RpcError_ErrorCode(e.Code) {
85 case remotepb.RpcError_UNKNOWN:
86 return e.Detail
87 case remotepb.RpcError_OVER_QUOTA:
88 msg = "Over quota"
89 case remotepb.RpcError_CAPABILITY_DISABLED:
90 msg = "Capability disabled"
91 case remotepb.RpcError_CANCELLED:
92 msg = "Canceled"
93 default:
94 msg = fmt.Sprintf("Call error %d", e.Code)
95 }
96 s := msg + ": " + e.Detail
97 if e.Timeout {
98 s += " (timeout)"
99 }
100 return s
101}
102
103func (e *CallError) IsTimeout() bool {
104 return e.Timeout
105}
106
107// NamespaceMods is a map from API service to a function that will mutate an RPC request to attach a namespace.
108// The function should be prepared to be called on the same message more than once; it should only modify the
109// RPC request the first time.
110var NamespaceMods = make(map[string]func(m proto.Message, namespace string))
diff --git a/vendor/google.golang.org/appengine/internal/log/log_service.pb.go b/vendor/google.golang.org/appengine/internal/log/log_service.pb.go
new file mode 100644
index 0000000..8545ac4
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/log/log_service.pb.go
@@ -0,0 +1,1313 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/log/log_service.proto
3
4package log
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type LogServiceError_ErrorCode int32
22
23const (
24 LogServiceError_OK LogServiceError_ErrorCode = 0
25 LogServiceError_INVALID_REQUEST LogServiceError_ErrorCode = 1
26 LogServiceError_STORAGE_ERROR LogServiceError_ErrorCode = 2
27)
28
29var LogServiceError_ErrorCode_name = map[int32]string{
30 0: "OK",
31 1: "INVALID_REQUEST",
32 2: "STORAGE_ERROR",
33}
34var LogServiceError_ErrorCode_value = map[string]int32{
35 "OK": 0,
36 "INVALID_REQUEST": 1,
37 "STORAGE_ERROR": 2,
38}
39
40func (x LogServiceError_ErrorCode) Enum() *LogServiceError_ErrorCode {
41 p := new(LogServiceError_ErrorCode)
42 *p = x
43 return p
44}
45func (x LogServiceError_ErrorCode) String() string {
46 return proto.EnumName(LogServiceError_ErrorCode_name, int32(x))
47}
48func (x *LogServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
49 value, err := proto.UnmarshalJSONEnum(LogServiceError_ErrorCode_value, data, "LogServiceError_ErrorCode")
50 if err != nil {
51 return err
52 }
53 *x = LogServiceError_ErrorCode(value)
54 return nil
55}
56func (LogServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
57 return fileDescriptor_log_service_f054fd4b5012319d, []int{0, 0}
58}
59
60type LogServiceError struct {
61 XXX_NoUnkeyedLiteral struct{} `json:"-"`
62 XXX_unrecognized []byte `json:"-"`
63 XXX_sizecache int32 `json:"-"`
64}
65
66func (m *LogServiceError) Reset() { *m = LogServiceError{} }
67func (m *LogServiceError) String() string { return proto.CompactTextString(m) }
68func (*LogServiceError) ProtoMessage() {}
69func (*LogServiceError) Descriptor() ([]byte, []int) {
70 return fileDescriptor_log_service_f054fd4b5012319d, []int{0}
71}
72func (m *LogServiceError) XXX_Unmarshal(b []byte) error {
73 return xxx_messageInfo_LogServiceError.Unmarshal(m, b)
74}
75func (m *LogServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
76 return xxx_messageInfo_LogServiceError.Marshal(b, m, deterministic)
77}
78func (dst *LogServiceError) XXX_Merge(src proto.Message) {
79 xxx_messageInfo_LogServiceError.Merge(dst, src)
80}
81func (m *LogServiceError) XXX_Size() int {
82 return xxx_messageInfo_LogServiceError.Size(m)
83}
84func (m *LogServiceError) XXX_DiscardUnknown() {
85 xxx_messageInfo_LogServiceError.DiscardUnknown(m)
86}
87
88var xxx_messageInfo_LogServiceError proto.InternalMessageInfo
89
90type UserAppLogLine struct {
91 TimestampUsec *int64 `protobuf:"varint,1,req,name=timestamp_usec,json=timestampUsec" json:"timestamp_usec,omitempty"`
92 Level *int64 `protobuf:"varint,2,req,name=level" json:"level,omitempty"`
93 Message *string `protobuf:"bytes,3,req,name=message" json:"message,omitempty"`
94 XXX_NoUnkeyedLiteral struct{} `json:"-"`
95 XXX_unrecognized []byte `json:"-"`
96 XXX_sizecache int32 `json:"-"`
97}
98
99func (m *UserAppLogLine) Reset() { *m = UserAppLogLine{} }
100func (m *UserAppLogLine) String() string { return proto.CompactTextString(m) }
101func (*UserAppLogLine) ProtoMessage() {}
102func (*UserAppLogLine) Descriptor() ([]byte, []int) {
103 return fileDescriptor_log_service_f054fd4b5012319d, []int{1}
104}
105func (m *UserAppLogLine) XXX_Unmarshal(b []byte) error {
106 return xxx_messageInfo_UserAppLogLine.Unmarshal(m, b)
107}
108func (m *UserAppLogLine) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
109 return xxx_messageInfo_UserAppLogLine.Marshal(b, m, deterministic)
110}
111func (dst *UserAppLogLine) XXX_Merge(src proto.Message) {
112 xxx_messageInfo_UserAppLogLine.Merge(dst, src)
113}
114func (m *UserAppLogLine) XXX_Size() int {
115 return xxx_messageInfo_UserAppLogLine.Size(m)
116}
117func (m *UserAppLogLine) XXX_DiscardUnknown() {
118 xxx_messageInfo_UserAppLogLine.DiscardUnknown(m)
119}
120
121var xxx_messageInfo_UserAppLogLine proto.InternalMessageInfo
122
123func (m *UserAppLogLine) GetTimestampUsec() int64 {
124 if m != nil && m.TimestampUsec != nil {
125 return *m.TimestampUsec
126 }
127 return 0
128}
129
130func (m *UserAppLogLine) GetLevel() int64 {
131 if m != nil && m.Level != nil {
132 return *m.Level
133 }
134 return 0
135}
136
137func (m *UserAppLogLine) GetMessage() string {
138 if m != nil && m.Message != nil {
139 return *m.Message
140 }
141 return ""
142}
143
144type UserAppLogGroup struct {
145 LogLine []*UserAppLogLine `protobuf:"bytes,2,rep,name=log_line,json=logLine" json:"log_line,omitempty"`
146 XXX_NoUnkeyedLiteral struct{} `json:"-"`
147 XXX_unrecognized []byte `json:"-"`
148 XXX_sizecache int32 `json:"-"`
149}
150
151func (m *UserAppLogGroup) Reset() { *m = UserAppLogGroup{} }
152func (m *UserAppLogGroup) String() string { return proto.CompactTextString(m) }
153func (*UserAppLogGroup) ProtoMessage() {}
154func (*UserAppLogGroup) Descriptor() ([]byte, []int) {
155 return fileDescriptor_log_service_f054fd4b5012319d, []int{2}
156}
157func (m *UserAppLogGroup) XXX_Unmarshal(b []byte) error {
158 return xxx_messageInfo_UserAppLogGroup.Unmarshal(m, b)
159}
160func (m *UserAppLogGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
161 return xxx_messageInfo_UserAppLogGroup.Marshal(b, m, deterministic)
162}
163func (dst *UserAppLogGroup) XXX_Merge(src proto.Message) {
164 xxx_messageInfo_UserAppLogGroup.Merge(dst, src)
165}
166func (m *UserAppLogGroup) XXX_Size() int {
167 return xxx_messageInfo_UserAppLogGroup.Size(m)
168}
169func (m *UserAppLogGroup) XXX_DiscardUnknown() {
170 xxx_messageInfo_UserAppLogGroup.DiscardUnknown(m)
171}
172
173var xxx_messageInfo_UserAppLogGroup proto.InternalMessageInfo
174
175func (m *UserAppLogGroup) GetLogLine() []*UserAppLogLine {
176 if m != nil {
177 return m.LogLine
178 }
179 return nil
180}
181
182type FlushRequest struct {
183 Logs []byte `protobuf:"bytes,1,opt,name=logs" json:"logs,omitempty"`
184 XXX_NoUnkeyedLiteral struct{} `json:"-"`
185 XXX_unrecognized []byte `json:"-"`
186 XXX_sizecache int32 `json:"-"`
187}
188
189func (m *FlushRequest) Reset() { *m = FlushRequest{} }
190func (m *FlushRequest) String() string { return proto.CompactTextString(m) }
191func (*FlushRequest) ProtoMessage() {}
192func (*FlushRequest) Descriptor() ([]byte, []int) {
193 return fileDescriptor_log_service_f054fd4b5012319d, []int{3}
194}
195func (m *FlushRequest) XXX_Unmarshal(b []byte) error {
196 return xxx_messageInfo_FlushRequest.Unmarshal(m, b)
197}
198func (m *FlushRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
199 return xxx_messageInfo_FlushRequest.Marshal(b, m, deterministic)
200}
201func (dst *FlushRequest) XXX_Merge(src proto.Message) {
202 xxx_messageInfo_FlushRequest.Merge(dst, src)
203}
204func (m *FlushRequest) XXX_Size() int {
205 return xxx_messageInfo_FlushRequest.Size(m)
206}
207func (m *FlushRequest) XXX_DiscardUnknown() {
208 xxx_messageInfo_FlushRequest.DiscardUnknown(m)
209}
210
211var xxx_messageInfo_FlushRequest proto.InternalMessageInfo
212
213func (m *FlushRequest) GetLogs() []byte {
214 if m != nil {
215 return m.Logs
216 }
217 return nil
218}
219
220type SetStatusRequest struct {
221 Status *string `protobuf:"bytes,1,req,name=status" json:"status,omitempty"`
222 XXX_NoUnkeyedLiteral struct{} `json:"-"`
223 XXX_unrecognized []byte `json:"-"`
224 XXX_sizecache int32 `json:"-"`
225}
226
227func (m *SetStatusRequest) Reset() { *m = SetStatusRequest{} }
228func (m *SetStatusRequest) String() string { return proto.CompactTextString(m) }
229func (*SetStatusRequest) ProtoMessage() {}
230func (*SetStatusRequest) Descriptor() ([]byte, []int) {
231 return fileDescriptor_log_service_f054fd4b5012319d, []int{4}
232}
233func (m *SetStatusRequest) XXX_Unmarshal(b []byte) error {
234 return xxx_messageInfo_SetStatusRequest.Unmarshal(m, b)
235}
236func (m *SetStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
237 return xxx_messageInfo_SetStatusRequest.Marshal(b, m, deterministic)
238}
239func (dst *SetStatusRequest) XXX_Merge(src proto.Message) {
240 xxx_messageInfo_SetStatusRequest.Merge(dst, src)
241}
242func (m *SetStatusRequest) XXX_Size() int {
243 return xxx_messageInfo_SetStatusRequest.Size(m)
244}
245func (m *SetStatusRequest) XXX_DiscardUnknown() {
246 xxx_messageInfo_SetStatusRequest.DiscardUnknown(m)
247}
248
249var xxx_messageInfo_SetStatusRequest proto.InternalMessageInfo
250
251func (m *SetStatusRequest) GetStatus() string {
252 if m != nil && m.Status != nil {
253 return *m.Status
254 }
255 return ""
256}
257
258type LogOffset struct {
259 RequestId []byte `protobuf:"bytes,1,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
260 XXX_NoUnkeyedLiteral struct{} `json:"-"`
261 XXX_unrecognized []byte `json:"-"`
262 XXX_sizecache int32 `json:"-"`
263}
264
265func (m *LogOffset) Reset() { *m = LogOffset{} }
266func (m *LogOffset) String() string { return proto.CompactTextString(m) }
267func (*LogOffset) ProtoMessage() {}
268func (*LogOffset) Descriptor() ([]byte, []int) {
269 return fileDescriptor_log_service_f054fd4b5012319d, []int{5}
270}
271func (m *LogOffset) XXX_Unmarshal(b []byte) error {
272 return xxx_messageInfo_LogOffset.Unmarshal(m, b)
273}
274func (m *LogOffset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
275 return xxx_messageInfo_LogOffset.Marshal(b, m, deterministic)
276}
277func (dst *LogOffset) XXX_Merge(src proto.Message) {
278 xxx_messageInfo_LogOffset.Merge(dst, src)
279}
280func (m *LogOffset) XXX_Size() int {
281 return xxx_messageInfo_LogOffset.Size(m)
282}
283func (m *LogOffset) XXX_DiscardUnknown() {
284 xxx_messageInfo_LogOffset.DiscardUnknown(m)
285}
286
287var xxx_messageInfo_LogOffset proto.InternalMessageInfo
288
289func (m *LogOffset) GetRequestId() []byte {
290 if m != nil {
291 return m.RequestId
292 }
293 return nil
294}
295
296type LogLine struct {
297 Time *int64 `protobuf:"varint,1,req,name=time" json:"time,omitempty"`
298 Level *int32 `protobuf:"varint,2,req,name=level" json:"level,omitempty"`
299 LogMessage *string `protobuf:"bytes,3,req,name=log_message,json=logMessage" json:"log_message,omitempty"`
300 XXX_NoUnkeyedLiteral struct{} `json:"-"`
301 XXX_unrecognized []byte `json:"-"`
302 XXX_sizecache int32 `json:"-"`
303}
304
305func (m *LogLine) Reset() { *m = LogLine{} }
306func (m *LogLine) String() string { return proto.CompactTextString(m) }
307func (*LogLine) ProtoMessage() {}
308func (*LogLine) Descriptor() ([]byte, []int) {
309 return fileDescriptor_log_service_f054fd4b5012319d, []int{6}
310}
311func (m *LogLine) XXX_Unmarshal(b []byte) error {
312 return xxx_messageInfo_LogLine.Unmarshal(m, b)
313}
314func (m *LogLine) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
315 return xxx_messageInfo_LogLine.Marshal(b, m, deterministic)
316}
317func (dst *LogLine) XXX_Merge(src proto.Message) {
318 xxx_messageInfo_LogLine.Merge(dst, src)
319}
320func (m *LogLine) XXX_Size() int {
321 return xxx_messageInfo_LogLine.Size(m)
322}
323func (m *LogLine) XXX_DiscardUnknown() {
324 xxx_messageInfo_LogLine.DiscardUnknown(m)
325}
326
327var xxx_messageInfo_LogLine proto.InternalMessageInfo
328
329func (m *LogLine) GetTime() int64 {
330 if m != nil && m.Time != nil {
331 return *m.Time
332 }
333 return 0
334}
335
336func (m *LogLine) GetLevel() int32 {
337 if m != nil && m.Level != nil {
338 return *m.Level
339 }
340 return 0
341}
342
343func (m *LogLine) GetLogMessage() string {
344 if m != nil && m.LogMessage != nil {
345 return *m.LogMessage
346 }
347 return ""
348}
349
350type RequestLog struct {
351 AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
352 ModuleId *string `protobuf:"bytes,37,opt,name=module_id,json=moduleId,def=default" json:"module_id,omitempty"`
353 VersionId *string `protobuf:"bytes,2,req,name=version_id,json=versionId" json:"version_id,omitempty"`
354 RequestId []byte `protobuf:"bytes,3,req,name=request_id,json=requestId" json:"request_id,omitempty"`
355 Offset *LogOffset `protobuf:"bytes,35,opt,name=offset" json:"offset,omitempty"`
356 Ip *string `protobuf:"bytes,4,req,name=ip" json:"ip,omitempty"`
357 Nickname *string `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"`
358 StartTime *int64 `protobuf:"varint,6,req,name=start_time,json=startTime" json:"start_time,omitempty"`
359 EndTime *int64 `protobuf:"varint,7,req,name=end_time,json=endTime" json:"end_time,omitempty"`
360 Latency *int64 `protobuf:"varint,8,req,name=latency" json:"latency,omitempty"`
361 Mcycles *int64 `protobuf:"varint,9,req,name=mcycles" json:"mcycles,omitempty"`
362 Method *string `protobuf:"bytes,10,req,name=method" json:"method,omitempty"`
363 Resource *string `protobuf:"bytes,11,req,name=resource" json:"resource,omitempty"`
364 HttpVersion *string `protobuf:"bytes,12,req,name=http_version,json=httpVersion" json:"http_version,omitempty"`
365 Status *int32 `protobuf:"varint,13,req,name=status" json:"status,omitempty"`
366 ResponseSize *int64 `protobuf:"varint,14,req,name=response_size,json=responseSize" json:"response_size,omitempty"`
367 Referrer *string `protobuf:"bytes,15,opt,name=referrer" json:"referrer,omitempty"`
368 UserAgent *string `protobuf:"bytes,16,opt,name=user_agent,json=userAgent" json:"user_agent,omitempty"`
369 UrlMapEntry *string `protobuf:"bytes,17,req,name=url_map_entry,json=urlMapEntry" json:"url_map_entry,omitempty"`
370 Combined *string `protobuf:"bytes,18,req,name=combined" json:"combined,omitempty"`
371 ApiMcycles *int64 `protobuf:"varint,19,opt,name=api_mcycles,json=apiMcycles" json:"api_mcycles,omitempty"`
372 Host *string `protobuf:"bytes,20,opt,name=host" json:"host,omitempty"`
373 Cost *float64 `protobuf:"fixed64,21,opt,name=cost" json:"cost,omitempty"`
374 TaskQueueName *string `protobuf:"bytes,22,opt,name=task_queue_name,json=taskQueueName" json:"task_queue_name,omitempty"`
375 TaskName *string `protobuf:"bytes,23,opt,name=task_name,json=taskName" json:"task_name,omitempty"`
376 WasLoadingRequest *bool `protobuf:"varint,24,opt,name=was_loading_request,json=wasLoadingRequest" json:"was_loading_request,omitempty"`
377 PendingTime *int64 `protobuf:"varint,25,opt,name=pending_time,json=pendingTime" json:"pending_time,omitempty"`
378 ReplicaIndex *int32 `protobuf:"varint,26,opt,name=replica_index,json=replicaIndex,def=-1" json:"replica_index,omitempty"`
379 Finished *bool `protobuf:"varint,27,opt,name=finished,def=1" json:"finished,omitempty"`
380 CloneKey []byte `protobuf:"bytes,28,opt,name=clone_key,json=cloneKey" json:"clone_key,omitempty"`
381 Line []*LogLine `protobuf:"bytes,29,rep,name=line" json:"line,omitempty"`
382 LinesIncomplete *bool `protobuf:"varint,36,opt,name=lines_incomplete,json=linesIncomplete" json:"lines_incomplete,omitempty"`
383 AppEngineRelease []byte `protobuf:"bytes,38,opt,name=app_engine_release,json=appEngineRelease" json:"app_engine_release,omitempty"`
384 ExitReason *int32 `protobuf:"varint,30,opt,name=exit_reason,json=exitReason" json:"exit_reason,omitempty"`
385 WasThrottledForTime *bool `protobuf:"varint,31,opt,name=was_throttled_for_time,json=wasThrottledForTime" json:"was_throttled_for_time,omitempty"`
386 WasThrottledForRequests *bool `protobuf:"varint,32,opt,name=was_throttled_for_requests,json=wasThrottledForRequests" json:"was_throttled_for_requests,omitempty"`
387 ThrottledTime *int64 `protobuf:"varint,33,opt,name=throttled_time,json=throttledTime" json:"throttled_time,omitempty"`
388 ServerName []byte `protobuf:"bytes,34,opt,name=server_name,json=serverName" json:"server_name,omitempty"`
389 XXX_NoUnkeyedLiteral struct{} `json:"-"`
390 XXX_unrecognized []byte `json:"-"`
391 XXX_sizecache int32 `json:"-"`
392}
393
394func (m *RequestLog) Reset() { *m = RequestLog{} }
395func (m *RequestLog) String() string { return proto.CompactTextString(m) }
396func (*RequestLog) ProtoMessage() {}
397func (*RequestLog) Descriptor() ([]byte, []int) {
398 return fileDescriptor_log_service_f054fd4b5012319d, []int{7}
399}
400func (m *RequestLog) XXX_Unmarshal(b []byte) error {
401 return xxx_messageInfo_RequestLog.Unmarshal(m, b)
402}
403func (m *RequestLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
404 return xxx_messageInfo_RequestLog.Marshal(b, m, deterministic)
405}
406func (dst *RequestLog) XXX_Merge(src proto.Message) {
407 xxx_messageInfo_RequestLog.Merge(dst, src)
408}
409func (m *RequestLog) XXX_Size() int {
410 return xxx_messageInfo_RequestLog.Size(m)
411}
412func (m *RequestLog) XXX_DiscardUnknown() {
413 xxx_messageInfo_RequestLog.DiscardUnknown(m)
414}
415
416var xxx_messageInfo_RequestLog proto.InternalMessageInfo
417
418const Default_RequestLog_ModuleId string = "default"
419const Default_RequestLog_ReplicaIndex int32 = -1
420const Default_RequestLog_Finished bool = true
421
422func (m *RequestLog) GetAppId() string {
423 if m != nil && m.AppId != nil {
424 return *m.AppId
425 }
426 return ""
427}
428
429func (m *RequestLog) GetModuleId() string {
430 if m != nil && m.ModuleId != nil {
431 return *m.ModuleId
432 }
433 return Default_RequestLog_ModuleId
434}
435
436func (m *RequestLog) GetVersionId() string {
437 if m != nil && m.VersionId != nil {
438 return *m.VersionId
439 }
440 return ""
441}
442
443func (m *RequestLog) GetRequestId() []byte {
444 if m != nil {
445 return m.RequestId
446 }
447 return nil
448}
449
450func (m *RequestLog) GetOffset() *LogOffset {
451 if m != nil {
452 return m.Offset
453 }
454 return nil
455}
456
457func (m *RequestLog) GetIp() string {
458 if m != nil && m.Ip != nil {
459 return *m.Ip
460 }
461 return ""
462}
463
464func (m *RequestLog) GetNickname() string {
465 if m != nil && m.Nickname != nil {
466 return *m.Nickname
467 }
468 return ""
469}
470
471func (m *RequestLog) GetStartTime() int64 {
472 if m != nil && m.StartTime != nil {
473 return *m.StartTime
474 }
475 return 0
476}
477
478func (m *RequestLog) GetEndTime() int64 {
479 if m != nil && m.EndTime != nil {
480 return *m.EndTime
481 }
482 return 0
483}
484
485func (m *RequestLog) GetLatency() int64 {
486 if m != nil && m.Latency != nil {
487 return *m.Latency
488 }
489 return 0
490}
491
492func (m *RequestLog) GetMcycles() int64 {
493 if m != nil && m.Mcycles != nil {
494 return *m.Mcycles
495 }
496 return 0
497}
498
499func (m *RequestLog) GetMethod() string {
500 if m != nil && m.Method != nil {
501 return *m.Method
502 }
503 return ""
504}
505
506func (m *RequestLog) GetResource() string {
507 if m != nil && m.Resource != nil {
508 return *m.Resource
509 }
510 return ""
511}
512
513func (m *RequestLog) GetHttpVersion() string {
514 if m != nil && m.HttpVersion != nil {
515 return *m.HttpVersion
516 }
517 return ""
518}
519
520func (m *RequestLog) GetStatus() int32 {
521 if m != nil && m.Status != nil {
522 return *m.Status
523 }
524 return 0
525}
526
527func (m *RequestLog) GetResponseSize() int64 {
528 if m != nil && m.ResponseSize != nil {
529 return *m.ResponseSize
530 }
531 return 0
532}
533
534func (m *RequestLog) GetReferrer() string {
535 if m != nil && m.Referrer != nil {
536 return *m.Referrer
537 }
538 return ""
539}
540
541func (m *RequestLog) GetUserAgent() string {
542 if m != nil && m.UserAgent != nil {
543 return *m.UserAgent
544 }
545 return ""
546}
547
548func (m *RequestLog) GetUrlMapEntry() string {
549 if m != nil && m.UrlMapEntry != nil {
550 return *m.UrlMapEntry
551 }
552 return ""
553}
554
555func (m *RequestLog) GetCombined() string {
556 if m != nil && m.Combined != nil {
557 return *m.Combined
558 }
559 return ""
560}
561
562func (m *RequestLog) GetApiMcycles() int64 {
563 if m != nil && m.ApiMcycles != nil {
564 return *m.ApiMcycles
565 }
566 return 0
567}
568
569func (m *RequestLog) GetHost() string {
570 if m != nil && m.Host != nil {
571 return *m.Host
572 }
573 return ""
574}
575
576func (m *RequestLog) GetCost() float64 {
577 if m != nil && m.Cost != nil {
578 return *m.Cost
579 }
580 return 0
581}
582
583func (m *RequestLog) GetTaskQueueName() string {
584 if m != nil && m.TaskQueueName != nil {
585 return *m.TaskQueueName
586 }
587 return ""
588}
589
590func (m *RequestLog) GetTaskName() string {
591 if m != nil && m.TaskName != nil {
592 return *m.TaskName
593 }
594 return ""
595}
596
597func (m *RequestLog) GetWasLoadingRequest() bool {
598 if m != nil && m.WasLoadingRequest != nil {
599 return *m.WasLoadingRequest
600 }
601 return false
602}
603
604func (m *RequestLog) GetPendingTime() int64 {
605 if m != nil && m.PendingTime != nil {
606 return *m.PendingTime
607 }
608 return 0
609}
610
611func (m *RequestLog) GetReplicaIndex() int32 {
612 if m != nil && m.ReplicaIndex != nil {
613 return *m.ReplicaIndex
614 }
615 return Default_RequestLog_ReplicaIndex
616}
617
618func (m *RequestLog) GetFinished() bool {
619 if m != nil && m.Finished != nil {
620 return *m.Finished
621 }
622 return Default_RequestLog_Finished
623}
624
625func (m *RequestLog) GetCloneKey() []byte {
626 if m != nil {
627 return m.CloneKey
628 }
629 return nil
630}
631
632func (m *RequestLog) GetLine() []*LogLine {
633 if m != nil {
634 return m.Line
635 }
636 return nil
637}
638
639func (m *RequestLog) GetLinesIncomplete() bool {
640 if m != nil && m.LinesIncomplete != nil {
641 return *m.LinesIncomplete
642 }
643 return false
644}
645
646func (m *RequestLog) GetAppEngineRelease() []byte {
647 if m != nil {
648 return m.AppEngineRelease
649 }
650 return nil
651}
652
653func (m *RequestLog) GetExitReason() int32 {
654 if m != nil && m.ExitReason != nil {
655 return *m.ExitReason
656 }
657 return 0
658}
659
660func (m *RequestLog) GetWasThrottledForTime() bool {
661 if m != nil && m.WasThrottledForTime != nil {
662 return *m.WasThrottledForTime
663 }
664 return false
665}
666
667func (m *RequestLog) GetWasThrottledForRequests() bool {
668 if m != nil && m.WasThrottledForRequests != nil {
669 return *m.WasThrottledForRequests
670 }
671 return false
672}
673
674func (m *RequestLog) GetThrottledTime() int64 {
675 if m != nil && m.ThrottledTime != nil {
676 return *m.ThrottledTime
677 }
678 return 0
679}
680
681func (m *RequestLog) GetServerName() []byte {
682 if m != nil {
683 return m.ServerName
684 }
685 return nil
686}
687
688type LogModuleVersion struct {
689 ModuleId *string `protobuf:"bytes,1,opt,name=module_id,json=moduleId,def=default" json:"module_id,omitempty"`
690 VersionId *string `protobuf:"bytes,2,opt,name=version_id,json=versionId" json:"version_id,omitempty"`
691 XXX_NoUnkeyedLiteral struct{} `json:"-"`
692 XXX_unrecognized []byte `json:"-"`
693 XXX_sizecache int32 `json:"-"`
694}
695
696func (m *LogModuleVersion) Reset() { *m = LogModuleVersion{} }
697func (m *LogModuleVersion) String() string { return proto.CompactTextString(m) }
698func (*LogModuleVersion) ProtoMessage() {}
699func (*LogModuleVersion) Descriptor() ([]byte, []int) {
700 return fileDescriptor_log_service_f054fd4b5012319d, []int{8}
701}
702func (m *LogModuleVersion) XXX_Unmarshal(b []byte) error {
703 return xxx_messageInfo_LogModuleVersion.Unmarshal(m, b)
704}
705func (m *LogModuleVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
706 return xxx_messageInfo_LogModuleVersion.Marshal(b, m, deterministic)
707}
708func (dst *LogModuleVersion) XXX_Merge(src proto.Message) {
709 xxx_messageInfo_LogModuleVersion.Merge(dst, src)
710}
711func (m *LogModuleVersion) XXX_Size() int {
712 return xxx_messageInfo_LogModuleVersion.Size(m)
713}
714func (m *LogModuleVersion) XXX_DiscardUnknown() {
715 xxx_messageInfo_LogModuleVersion.DiscardUnknown(m)
716}
717
718var xxx_messageInfo_LogModuleVersion proto.InternalMessageInfo
719
720const Default_LogModuleVersion_ModuleId string = "default"
721
722func (m *LogModuleVersion) GetModuleId() string {
723 if m != nil && m.ModuleId != nil {
724 return *m.ModuleId
725 }
726 return Default_LogModuleVersion_ModuleId
727}
728
729func (m *LogModuleVersion) GetVersionId() string {
730 if m != nil && m.VersionId != nil {
731 return *m.VersionId
732 }
733 return ""
734}
735
736type LogReadRequest struct {
737 AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
738 VersionId []string `protobuf:"bytes,2,rep,name=version_id,json=versionId" json:"version_id,omitempty"`
739 ModuleVersion []*LogModuleVersion `protobuf:"bytes,19,rep,name=module_version,json=moduleVersion" json:"module_version,omitempty"`
740 StartTime *int64 `protobuf:"varint,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
741 EndTime *int64 `protobuf:"varint,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
742 Offset *LogOffset `protobuf:"bytes,5,opt,name=offset" json:"offset,omitempty"`
743 RequestId [][]byte `protobuf:"bytes,6,rep,name=request_id,json=requestId" json:"request_id,omitempty"`
744 MinimumLogLevel *int32 `protobuf:"varint,7,opt,name=minimum_log_level,json=minimumLogLevel" json:"minimum_log_level,omitempty"`
745 IncludeIncomplete *bool `protobuf:"varint,8,opt,name=include_incomplete,json=includeIncomplete" json:"include_incomplete,omitempty"`
746 Count *int64 `protobuf:"varint,9,opt,name=count" json:"count,omitempty"`
747 CombinedLogRegex *string `protobuf:"bytes,14,opt,name=combined_log_regex,json=combinedLogRegex" json:"combined_log_regex,omitempty"`
748 HostRegex *string `protobuf:"bytes,15,opt,name=host_regex,json=hostRegex" json:"host_regex,omitempty"`
749 ReplicaIndex *int32 `protobuf:"varint,16,opt,name=replica_index,json=replicaIndex" json:"replica_index,omitempty"`
750 IncludeAppLogs *bool `protobuf:"varint,10,opt,name=include_app_logs,json=includeAppLogs" json:"include_app_logs,omitempty"`
751 AppLogsPerRequest *int32 `protobuf:"varint,17,opt,name=app_logs_per_request,json=appLogsPerRequest" json:"app_logs_per_request,omitempty"`
752 IncludeHost *bool `protobuf:"varint,11,opt,name=include_host,json=includeHost" json:"include_host,omitempty"`
753 IncludeAll *bool `protobuf:"varint,12,opt,name=include_all,json=includeAll" json:"include_all,omitempty"`
754 CacheIterator *bool `protobuf:"varint,13,opt,name=cache_iterator,json=cacheIterator" json:"cache_iterator,omitempty"`
755 NumShards *int32 `protobuf:"varint,18,opt,name=num_shards,json=numShards" json:"num_shards,omitempty"`
756 XXX_NoUnkeyedLiteral struct{} `json:"-"`
757 XXX_unrecognized []byte `json:"-"`
758 XXX_sizecache int32 `json:"-"`
759}
760
761func (m *LogReadRequest) Reset() { *m = LogReadRequest{} }
762func (m *LogReadRequest) String() string { return proto.CompactTextString(m) }
763func (*LogReadRequest) ProtoMessage() {}
764func (*LogReadRequest) Descriptor() ([]byte, []int) {
765 return fileDescriptor_log_service_f054fd4b5012319d, []int{9}
766}
767func (m *LogReadRequest) XXX_Unmarshal(b []byte) error {
768 return xxx_messageInfo_LogReadRequest.Unmarshal(m, b)
769}
770func (m *LogReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
771 return xxx_messageInfo_LogReadRequest.Marshal(b, m, deterministic)
772}
773func (dst *LogReadRequest) XXX_Merge(src proto.Message) {
774 xxx_messageInfo_LogReadRequest.Merge(dst, src)
775}
776func (m *LogReadRequest) XXX_Size() int {
777 return xxx_messageInfo_LogReadRequest.Size(m)
778}
779func (m *LogReadRequest) XXX_DiscardUnknown() {
780 xxx_messageInfo_LogReadRequest.DiscardUnknown(m)
781}
782
783var xxx_messageInfo_LogReadRequest proto.InternalMessageInfo
784
785func (m *LogReadRequest) GetAppId() string {
786 if m != nil && m.AppId != nil {
787 return *m.AppId
788 }
789 return ""
790}
791
792func (m *LogReadRequest) GetVersionId() []string {
793 if m != nil {
794 return m.VersionId
795 }
796 return nil
797}
798
799func (m *LogReadRequest) GetModuleVersion() []*LogModuleVersion {
800 if m != nil {
801 return m.ModuleVersion
802 }
803 return nil
804}
805
806func (m *LogReadRequest) GetStartTime() int64 {
807 if m != nil && m.StartTime != nil {
808 return *m.StartTime
809 }
810 return 0
811}
812
813func (m *LogReadRequest) GetEndTime() int64 {
814 if m != nil && m.EndTime != nil {
815 return *m.EndTime
816 }
817 return 0
818}
819
820func (m *LogReadRequest) GetOffset() *LogOffset {
821 if m != nil {
822 return m.Offset
823 }
824 return nil
825}
826
827func (m *LogReadRequest) GetRequestId() [][]byte {
828 if m != nil {
829 return m.RequestId
830 }
831 return nil
832}
833
834func (m *LogReadRequest) GetMinimumLogLevel() int32 {
835 if m != nil && m.MinimumLogLevel != nil {
836 return *m.MinimumLogLevel
837 }
838 return 0
839}
840
841func (m *LogReadRequest) GetIncludeIncomplete() bool {
842 if m != nil && m.IncludeIncomplete != nil {
843 return *m.IncludeIncomplete
844 }
845 return false
846}
847
848func (m *LogReadRequest) GetCount() int64 {
849 if m != nil && m.Count != nil {
850 return *m.Count
851 }
852 return 0
853}
854
855func (m *LogReadRequest) GetCombinedLogRegex() string {
856 if m != nil && m.CombinedLogRegex != nil {
857 return *m.CombinedLogRegex
858 }
859 return ""
860}
861
862func (m *LogReadRequest) GetHostRegex() string {
863 if m != nil && m.HostRegex != nil {
864 return *m.HostRegex
865 }
866 return ""
867}
868
869func (m *LogReadRequest) GetReplicaIndex() int32 {
870 if m != nil && m.ReplicaIndex != nil {
871 return *m.ReplicaIndex
872 }
873 return 0
874}
875
876func (m *LogReadRequest) GetIncludeAppLogs() bool {
877 if m != nil && m.IncludeAppLogs != nil {
878 return *m.IncludeAppLogs
879 }
880 return false
881}
882
883func (m *LogReadRequest) GetAppLogsPerRequest() int32 {
884 if m != nil && m.AppLogsPerRequest != nil {
885 return *m.AppLogsPerRequest
886 }
887 return 0
888}
889
890func (m *LogReadRequest) GetIncludeHost() bool {
891 if m != nil && m.IncludeHost != nil {
892 return *m.IncludeHost
893 }
894 return false
895}
896
897func (m *LogReadRequest) GetIncludeAll() bool {
898 if m != nil && m.IncludeAll != nil {
899 return *m.IncludeAll
900 }
901 return false
902}
903
904func (m *LogReadRequest) GetCacheIterator() bool {
905 if m != nil && m.CacheIterator != nil {
906 return *m.CacheIterator
907 }
908 return false
909}
910
911func (m *LogReadRequest) GetNumShards() int32 {
912 if m != nil && m.NumShards != nil {
913 return *m.NumShards
914 }
915 return 0
916}
917
918type LogReadResponse struct {
919 Log []*RequestLog `protobuf:"bytes,1,rep,name=log" json:"log,omitempty"`
920 Offset *LogOffset `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
921 LastEndTime *int64 `protobuf:"varint,3,opt,name=last_end_time,json=lastEndTime" json:"last_end_time,omitempty"`
922 XXX_NoUnkeyedLiteral struct{} `json:"-"`
923 XXX_unrecognized []byte `json:"-"`
924 XXX_sizecache int32 `json:"-"`
925}
926
927func (m *LogReadResponse) Reset() { *m = LogReadResponse{} }
928func (m *LogReadResponse) String() string { return proto.CompactTextString(m) }
929func (*LogReadResponse) ProtoMessage() {}
930func (*LogReadResponse) Descriptor() ([]byte, []int) {
931 return fileDescriptor_log_service_f054fd4b5012319d, []int{10}
932}
933func (m *LogReadResponse) XXX_Unmarshal(b []byte) error {
934 return xxx_messageInfo_LogReadResponse.Unmarshal(m, b)
935}
936func (m *LogReadResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
937 return xxx_messageInfo_LogReadResponse.Marshal(b, m, deterministic)
938}
939func (dst *LogReadResponse) XXX_Merge(src proto.Message) {
940 xxx_messageInfo_LogReadResponse.Merge(dst, src)
941}
942func (m *LogReadResponse) XXX_Size() int {
943 return xxx_messageInfo_LogReadResponse.Size(m)
944}
945func (m *LogReadResponse) XXX_DiscardUnknown() {
946 xxx_messageInfo_LogReadResponse.DiscardUnknown(m)
947}
948
949var xxx_messageInfo_LogReadResponse proto.InternalMessageInfo
950
951func (m *LogReadResponse) GetLog() []*RequestLog {
952 if m != nil {
953 return m.Log
954 }
955 return nil
956}
957
958func (m *LogReadResponse) GetOffset() *LogOffset {
959 if m != nil {
960 return m.Offset
961 }
962 return nil
963}
964
965func (m *LogReadResponse) GetLastEndTime() int64 {
966 if m != nil && m.LastEndTime != nil {
967 return *m.LastEndTime
968 }
969 return 0
970}
971
972type LogUsageRecord struct {
973 VersionId *string `protobuf:"bytes,1,opt,name=version_id,json=versionId" json:"version_id,omitempty"`
974 StartTime *int32 `protobuf:"varint,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
975 EndTime *int32 `protobuf:"varint,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
976 Count *int64 `protobuf:"varint,4,opt,name=count" json:"count,omitempty"`
977 TotalSize *int64 `protobuf:"varint,5,opt,name=total_size,json=totalSize" json:"total_size,omitempty"`
978 Records *int32 `protobuf:"varint,6,opt,name=records" json:"records,omitempty"`
979 XXX_NoUnkeyedLiteral struct{} `json:"-"`
980 XXX_unrecognized []byte `json:"-"`
981 XXX_sizecache int32 `json:"-"`
982}
983
984func (m *LogUsageRecord) Reset() { *m = LogUsageRecord{} }
985func (m *LogUsageRecord) String() string { return proto.CompactTextString(m) }
986func (*LogUsageRecord) ProtoMessage() {}
987func (*LogUsageRecord) Descriptor() ([]byte, []int) {
988 return fileDescriptor_log_service_f054fd4b5012319d, []int{11}
989}
990func (m *LogUsageRecord) XXX_Unmarshal(b []byte) error {
991 return xxx_messageInfo_LogUsageRecord.Unmarshal(m, b)
992}
993func (m *LogUsageRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
994 return xxx_messageInfo_LogUsageRecord.Marshal(b, m, deterministic)
995}
996func (dst *LogUsageRecord) XXX_Merge(src proto.Message) {
997 xxx_messageInfo_LogUsageRecord.Merge(dst, src)
998}
999func (m *LogUsageRecord) XXX_Size() int {
1000 return xxx_messageInfo_LogUsageRecord.Size(m)
1001}
1002func (m *LogUsageRecord) XXX_DiscardUnknown() {
1003 xxx_messageInfo_LogUsageRecord.DiscardUnknown(m)
1004}
1005
1006var xxx_messageInfo_LogUsageRecord proto.InternalMessageInfo
1007
1008func (m *LogUsageRecord) GetVersionId() string {
1009 if m != nil && m.VersionId != nil {
1010 return *m.VersionId
1011 }
1012 return ""
1013}
1014
1015func (m *LogUsageRecord) GetStartTime() int32 {
1016 if m != nil && m.StartTime != nil {
1017 return *m.StartTime
1018 }
1019 return 0
1020}
1021
1022func (m *LogUsageRecord) GetEndTime() int32 {
1023 if m != nil && m.EndTime != nil {
1024 return *m.EndTime
1025 }
1026 return 0
1027}
1028
1029func (m *LogUsageRecord) GetCount() int64 {
1030 if m != nil && m.Count != nil {
1031 return *m.Count
1032 }
1033 return 0
1034}
1035
1036func (m *LogUsageRecord) GetTotalSize() int64 {
1037 if m != nil && m.TotalSize != nil {
1038 return *m.TotalSize
1039 }
1040 return 0
1041}
1042
1043func (m *LogUsageRecord) GetRecords() int32 {
1044 if m != nil && m.Records != nil {
1045 return *m.Records
1046 }
1047 return 0
1048}
1049
1050type LogUsageRequest struct {
1051 AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
1052 VersionId []string `protobuf:"bytes,2,rep,name=version_id,json=versionId" json:"version_id,omitempty"`
1053 StartTime *int32 `protobuf:"varint,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
1054 EndTime *int32 `protobuf:"varint,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
1055 ResolutionHours *uint32 `protobuf:"varint,5,opt,name=resolution_hours,json=resolutionHours,def=1" json:"resolution_hours,omitempty"`
1056 CombineVersions *bool `protobuf:"varint,6,opt,name=combine_versions,json=combineVersions" json:"combine_versions,omitempty"`
1057 UsageVersion *int32 `protobuf:"varint,7,opt,name=usage_version,json=usageVersion" json:"usage_version,omitempty"`
1058 VersionsOnly *bool `protobuf:"varint,8,opt,name=versions_only,json=versionsOnly" json:"versions_only,omitempty"`
1059 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1060 XXX_unrecognized []byte `json:"-"`
1061 XXX_sizecache int32 `json:"-"`
1062}
1063
1064func (m *LogUsageRequest) Reset() { *m = LogUsageRequest{} }
1065func (m *LogUsageRequest) String() string { return proto.CompactTextString(m) }
1066func (*LogUsageRequest) ProtoMessage() {}
1067func (*LogUsageRequest) Descriptor() ([]byte, []int) {
1068 return fileDescriptor_log_service_f054fd4b5012319d, []int{12}
1069}
1070func (m *LogUsageRequest) XXX_Unmarshal(b []byte) error {
1071 return xxx_messageInfo_LogUsageRequest.Unmarshal(m, b)
1072}
1073func (m *LogUsageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1074 return xxx_messageInfo_LogUsageRequest.Marshal(b, m, deterministic)
1075}
1076func (dst *LogUsageRequest) XXX_Merge(src proto.Message) {
1077 xxx_messageInfo_LogUsageRequest.Merge(dst, src)
1078}
1079func (m *LogUsageRequest) XXX_Size() int {
1080 return xxx_messageInfo_LogUsageRequest.Size(m)
1081}
1082func (m *LogUsageRequest) XXX_DiscardUnknown() {
1083 xxx_messageInfo_LogUsageRequest.DiscardUnknown(m)
1084}
1085
1086var xxx_messageInfo_LogUsageRequest proto.InternalMessageInfo
1087
1088const Default_LogUsageRequest_ResolutionHours uint32 = 1
1089
1090func (m *LogUsageRequest) GetAppId() string {
1091 if m != nil && m.AppId != nil {
1092 return *m.AppId
1093 }
1094 return ""
1095}
1096
1097func (m *LogUsageRequest) GetVersionId() []string {
1098 if m != nil {
1099 return m.VersionId
1100 }
1101 return nil
1102}
1103
1104func (m *LogUsageRequest) GetStartTime() int32 {
1105 if m != nil && m.StartTime != nil {
1106 return *m.StartTime
1107 }
1108 return 0
1109}
1110
1111func (m *LogUsageRequest) GetEndTime() int32 {
1112 if m != nil && m.EndTime != nil {
1113 return *m.EndTime
1114 }
1115 return 0
1116}
1117
1118func (m *LogUsageRequest) GetResolutionHours() uint32 {
1119 if m != nil && m.ResolutionHours != nil {
1120 return *m.ResolutionHours
1121 }
1122 return Default_LogUsageRequest_ResolutionHours
1123}
1124
1125func (m *LogUsageRequest) GetCombineVersions() bool {
1126 if m != nil && m.CombineVersions != nil {
1127 return *m.CombineVersions
1128 }
1129 return false
1130}
1131
1132func (m *LogUsageRequest) GetUsageVersion() int32 {
1133 if m != nil && m.UsageVersion != nil {
1134 return *m.UsageVersion
1135 }
1136 return 0
1137}
1138
1139func (m *LogUsageRequest) GetVersionsOnly() bool {
1140 if m != nil && m.VersionsOnly != nil {
1141 return *m.VersionsOnly
1142 }
1143 return false
1144}
1145
1146type LogUsageResponse struct {
1147 Usage []*LogUsageRecord `protobuf:"bytes,1,rep,name=usage" json:"usage,omitempty"`
1148 Summary *LogUsageRecord `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"`
1149 XXX_NoUnkeyedLiteral struct{} `json:"-"`
1150 XXX_unrecognized []byte `json:"-"`
1151 XXX_sizecache int32 `json:"-"`
1152}
1153
1154func (m *LogUsageResponse) Reset() { *m = LogUsageResponse{} }
1155func (m *LogUsageResponse) String() string { return proto.CompactTextString(m) }
1156func (*LogUsageResponse) ProtoMessage() {}
1157func (*LogUsageResponse) Descriptor() ([]byte, []int) {
1158 return fileDescriptor_log_service_f054fd4b5012319d, []int{13}
1159}
1160func (m *LogUsageResponse) XXX_Unmarshal(b []byte) error {
1161 return xxx_messageInfo_LogUsageResponse.Unmarshal(m, b)
1162}
1163func (m *LogUsageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1164 return xxx_messageInfo_LogUsageResponse.Marshal(b, m, deterministic)
1165}
1166func (dst *LogUsageResponse) XXX_Merge(src proto.Message) {
1167 xxx_messageInfo_LogUsageResponse.Merge(dst, src)
1168}
1169func (m *LogUsageResponse) XXX_Size() int {
1170 return xxx_messageInfo_LogUsageResponse.Size(m)
1171}
1172func (m *LogUsageResponse) XXX_DiscardUnknown() {
1173 xxx_messageInfo_LogUsageResponse.DiscardUnknown(m)
1174}
1175
1176var xxx_messageInfo_LogUsageResponse proto.InternalMessageInfo
1177
1178func (m *LogUsageResponse) GetUsage() []*LogUsageRecord {
1179 if m != nil {
1180 return m.Usage
1181 }
1182 return nil
1183}
1184
1185func (m *LogUsageResponse) GetSummary() *LogUsageRecord {
1186 if m != nil {
1187 return m.Summary
1188 }
1189 return nil
1190}
1191
1192func init() {
1193 proto.RegisterType((*LogServiceError)(nil), "appengine.LogServiceError")
1194 proto.RegisterType((*UserAppLogLine)(nil), "appengine.UserAppLogLine")
1195 proto.RegisterType((*UserAppLogGroup)(nil), "appengine.UserAppLogGroup")
1196 proto.RegisterType((*FlushRequest)(nil), "appengine.FlushRequest")
1197 proto.RegisterType((*SetStatusRequest)(nil), "appengine.SetStatusRequest")
1198 proto.RegisterType((*LogOffset)(nil), "appengine.LogOffset")
1199 proto.RegisterType((*LogLine)(nil), "appengine.LogLine")
1200 proto.RegisterType((*RequestLog)(nil), "appengine.RequestLog")
1201 proto.RegisterType((*LogModuleVersion)(nil), "appengine.LogModuleVersion")
1202 proto.RegisterType((*LogReadRequest)(nil), "appengine.LogReadRequest")
1203 proto.RegisterType((*LogReadResponse)(nil), "appengine.LogReadResponse")
1204 proto.RegisterType((*LogUsageRecord)(nil), "appengine.LogUsageRecord")
1205 proto.RegisterType((*LogUsageRequest)(nil), "appengine.LogUsageRequest")
1206 proto.RegisterType((*LogUsageResponse)(nil), "appengine.LogUsageResponse")
1207}
1208
1209func init() {
1210 proto.RegisterFile("google.golang.org/appengine/internal/log/log_service.proto", fileDescriptor_log_service_f054fd4b5012319d)
1211}
1212
1213var fileDescriptor_log_service_f054fd4b5012319d = []byte{
1214 // 1553 bytes of a gzipped FileDescriptorProto
1215 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x72, 0xdb, 0xc6,
1216 0x15, 0x2e, 0x48, 0x51, 0x24, 0x0f, 0x49, 0x91, 0x5a, 0xcb, 0xce, 0xda, 0xae, 0x6b, 0x1a, 0x4e,
1217 0x1c, 0xd6, 0x93, 0x48, 0x93, 0xa4, 0x57, 0xca, 0x95, 0xd3, 0x2a, 0x8e, 0x26, 0xb4, 0xd5, 0x40,
1218 0x72, 0x3a, 0xd3, 0x1b, 0x0c, 0x0a, 0x1c, 0x81, 0x18, 0x2f, 0xb1, 0xc8, 0xee, 0xc2, 0x91, 0x72,
1219 0xdb, 0xdb, 0x3e, 0x46, 0x1f, 0xa2, 0xaf, 0xd2, 0xb7, 0xe9, 0xec, 0xd9, 0x05, 0x44, 0x2a, 0x4d,
1220 0xc6, 0x33, 0xb9, 0xe0, 0x10, 0xfb, 0x9d, 0x83, 0xdd, 0xf3, 0xf3, 0x9d, 0x6f, 0x01, 0xc7, 0xb9,
1221 0x94, 0xb9, 0xc0, 0xc3, 0x5c, 0x8a, 0xa4, 0xcc, 0x0f, 0xa5, 0xca, 0x8f, 0x92, 0xaa, 0xc2, 0x32,
1222 0x2f, 0x4a, 0x3c, 0x2a, 0x4a, 0x83, 0xaa, 0x4c, 0xc4, 0x91, 0x90, 0xb9, 0xfd, 0xc5, 0x1a, 0xd5,
1223 0xbb, 0x22, 0xc5, 0xc3, 0x4a, 0x49, 0x23, 0xd9, 0xb0, 0xf5, 0x0c, 0x5f, 0xc3, 0x74, 0x29, 0xf3,
1224 0x73, 0x67, 0x3e, 0x51, 0x4a, 0xaa, 0xf0, 0x4b, 0x18, 0xd2, 0xc3, 0x9f, 0x65, 0x86, 0x6c, 0x17,
1225 0x3a, 0x67, 0xdf, 0xce, 0x7e, 0xc7, 0xee, 0xc0, 0xf4, 0xf4, 0xf5, 0xf7, 0x2f, 0x96, 0xa7, 0x7f,
1226 0x89, 0xa3, 0x93, 0xef, 0xde, 0x9c, 0x9c, 0x5f, 0xcc, 0x02, 0xb6, 0x0f, 0x93, 0xf3, 0x8b, 0xb3,
1227 0xe8, 0xc5, 0xcb, 0x93, 0xf8, 0x24, 0x8a, 0xce, 0xa2, 0x59, 0x27, 0xcc, 0x61, 0xef, 0x8d, 0x46,
1228 0xf5, 0xa2, 0xaa, 0x96, 0x32, 0x5f, 0x16, 0x25, 0xb2, 0x8f, 0x60, 0xcf, 0x14, 0x6b, 0xd4, 0x26,
1229 0x59, 0x57, 0x71, 0xad, 0x31, 0xe5, 0xc1, 0xbc, 0xb3, 0xe8, 0x46, 0x93, 0x16, 0x7d, 0xa3, 0x31,
1230 0x65, 0x07, 0xd0, 0x13, 0xf8, 0x0e, 0x05, 0xef, 0x90, 0xd5, 0x2d, 0x18, 0x87, 0xfe, 0x1a, 0xb5,
1231 0x4e, 0x72, 0xe4, 0xdd, 0x79, 0x67, 0x31, 0x8c, 0x9a, 0x65, 0xf8, 0x12, 0xa6, 0x37, 0x07, 0xbd,
1232 0x54, 0xb2, 0xae, 0xd8, 0x9f, 0x60, 0x60, 0x73, 0x15, 0x45, 0x89, 0xbc, 0x33, 0xef, 0x2e, 0x46,
1233 0x9f, 0xdf, 0x3f, 0x6c, 0x33, 0x3d, 0xdc, 0x0e, 0x2b, 0xea, 0x0b, 0xf7, 0x10, 0x86, 0x30, 0xfe,
1234 0x5a, 0xd4, 0x7a, 0x15, 0xe1, 0x0f, 0x35, 0x6a, 0xc3, 0x18, 0xec, 0x08, 0x99, 0x6b, 0x1e, 0xcc,
1235 0x83, 0xc5, 0x38, 0xa2, 0xe7, 0xf0, 0x39, 0xcc, 0xce, 0xd1, 0x9c, 0x9b, 0xc4, 0xd4, 0xba, 0xf1,
1236 0xbb, 0x07, 0xbb, 0x9a, 0x00, 0xca, 0x67, 0x18, 0xf9, 0x55, 0xf8, 0x1c, 0x86, 0x4b, 0x99, 0x9f,
1237 0x5d, 0x5e, 0x6a, 0x34, 0xec, 0x11, 0x80, 0x72, 0xfe, 0x71, 0x91, 0xf9, 0x2d, 0x87, 0x1e, 0x39,
1238 0xcd, 0xc2, 0x0b, 0xe8, 0x37, 0x65, 0x62, 0xb0, 0x63, 0x0b, 0xe2, 0x8b, 0x43, 0xcf, 0xdb, 0x35,
1239 0xe9, 0x35, 0x35, 0x79, 0x0c, 0x23, 0x9b, 0xe6, 0x76, 0x5d, 0x40, 0xc8, 0xfc, 0x95, 0x2f, 0xcd,
1240 0x3f, 0x01, 0xc0, 0x47, 0xb9, 0x94, 0x39, 0xbb, 0x0b, 0xbb, 0x49, 0x55, 0xb9, 0xf3, 0xad, 0x6b,
1241 0x2f, 0xa9, 0xaa, 0xd3, 0x8c, 0x7d, 0x08, 0xc3, 0xb5, 0xcc, 0x6a, 0x81, 0xd6, 0xf2, 0xd1, 0x3c,
1242 0x58, 0x0c, 0x8f, 0xfb, 0x19, 0x5e, 0x26, 0xb5, 0x30, 0xd1, 0xc0, 0x59, 0x4e, 0x33, 0x9b, 0xc0,
1243 0x3b, 0x54, 0xba, 0x90, 0xa5, 0x75, 0xeb, 0xd0, 0x06, 0x43, 0x8f, 0x38, 0xf3, 0x46, 0x7e, 0x36,
1244 0x94, 0xcd, 0xfc, 0xd8, 0x27, 0xb0, 0x2b, 0xa9, 0x10, 0xfc, 0xe9, 0x3c, 0x58, 0x8c, 0x3e, 0x3f,
1245 0xd8, 0xe8, 0x47, 0x5b, 0xa4, 0xc8, 0xfb, 0xb0, 0x3d, 0xe8, 0x14, 0x15, 0xdf, 0xa1, 0x33, 0x3a,
1246 0x45, 0xc5, 0x1e, 0xc0, 0xa0, 0x2c, 0xd2, 0xb7, 0x65, 0xb2, 0x46, 0xde, 0xb3, 0x01, 0x46, 0xed,
1247 0xda, 0x1e, 0xac, 0x4d, 0xa2, 0x4c, 0x4c, 0x45, 0xdb, 0xa5, 0xa2, 0x0d, 0x09, 0xb9, 0xb0, 0x95,
1248 0xbb, 0x0f, 0x03, 0x2c, 0x33, 0x67, 0xec, 0x93, 0xb1, 0x8f, 0x65, 0x46, 0x26, 0x0e, 0x7d, 0x91,
1249 0x18, 0x2c, 0xd3, 0x6b, 0x3e, 0x70, 0x16, 0xbf, 0x24, 0xb2, 0xa5, 0xd7, 0xa9, 0x40, 0xcd, 0x87,
1250 0xce, 0xe2, 0x97, 0xb6, 0xd7, 0x6b, 0x34, 0x2b, 0x99, 0x71, 0x70, 0xbd, 0x76, 0x2b, 0x1b, 0xa1,
1251 0x42, 0x2d, 0x6b, 0x95, 0x22, 0x1f, 0x91, 0xa5, 0x5d, 0xb3, 0x27, 0x30, 0x5e, 0x19, 0x53, 0xc5,
1252 0xbe, 0x58, 0x7c, 0x4c, 0xf6, 0x91, 0xc5, 0xbe, 0x77, 0xd0, 0x06, 0x85, 0x26, 0xd4, 0x60, 0xbf,
1253 0x62, 0x4f, 0x61, 0xa2, 0x50, 0x57, 0xb2, 0xd4, 0x18, 0xeb, 0xe2, 0x27, 0xe4, 0x7b, 0x14, 0xce,
1254 0xb8, 0x01, 0xcf, 0x8b, 0x9f, 0xd0, 0x9d, 0x7d, 0x89, 0x4a, 0xa1, 0xe2, 0x53, 0x57, 0x9d, 0x66,
1255 0x6d, 0xab, 0x53, 0x6b, 0x54, 0x71, 0x92, 0x63, 0x69, 0xf8, 0x8c, 0xac, 0x43, 0x8b, 0xbc, 0xb0,
1256 0x00, 0x0b, 0x61, 0x52, 0x2b, 0x11, 0xaf, 0x93, 0x2a, 0xc6, 0xd2, 0xa8, 0x6b, 0xbe, 0xef, 0x62,
1257 0xab, 0x95, 0x78, 0x95, 0x54, 0x27, 0x16, 0xb2, 0xdb, 0xa7, 0x72, 0xfd, 0x8f, 0xa2, 0xc4, 0x8c,
1258 0x33, 0x97, 0x5a, 0xb3, 0xb6, 0x0c, 0x4c, 0xaa, 0x22, 0x6e, 0x8a, 0x75, 0x67, 0x1e, 0x2c, 0xba,
1259 0x11, 0x24, 0x55, 0xf1, 0xca, 0xd7, 0x8b, 0xc1, 0xce, 0x4a, 0x6a, 0xc3, 0x0f, 0xe8, 0x64, 0x7a,
1260 0xb6, 0x58, 0x6a, 0xb1, 0xbb, 0xf3, 0x60, 0x11, 0x44, 0xf4, 0xcc, 0x9e, 0xc1, 0xd4, 0x24, 0xfa,
1261 0x6d, 0xfc, 0x43, 0x8d, 0x35, 0xc6, 0xd4, 0xe8, 0x7b, 0xf4, 0xca, 0xc4, 0xc2, 0xdf, 0x59, 0xf4,
1262 0xb5, 0xed, 0xf6, 0x43, 0x18, 0x92, 0x1f, 0x79, 0x7c, 0xe0, 0x92, 0xb5, 0x00, 0x19, 0x0f, 0xe1,
1263 0xce, 0x8f, 0x89, 0x8e, 0x85, 0x4c, 0xb2, 0xa2, 0xcc, 0x63, 0xcf, 0x3e, 0xce, 0xe7, 0xc1, 0x62,
1264 0x10, 0xed, 0xff, 0x98, 0xe8, 0xa5, 0xb3, 0x34, 0x83, 0xfb, 0x04, 0xc6, 0x15, 0x96, 0xe4, 0x4b,
1265 0xfc, 0xb8, 0x4f, 0xe1, 0x8f, 0x3c, 0x46, 0x1c, 0xf9, 0xd8, 0x36, 0xa0, 0x12, 0x45, 0x9a, 0xc4,
1266 0x45, 0x99, 0xe1, 0x15, 0x7f, 0x30, 0x0f, 0x16, 0xbd, 0xe3, 0xce, 0xa7, 0x9f, 0xd9, 0x26, 0x90,
1267 0xe1, 0xd4, 0xe2, 0x6c, 0x0e, 0x83, 0xcb, 0xa2, 0x2c, 0xf4, 0x0a, 0x33, 0xfe, 0xd0, 0x1e, 0x78,
1268 0xbc, 0x63, 0x54, 0x8d, 0x51, 0x8b, 0xda, 0xd0, 0x53, 0x21, 0x4b, 0x8c, 0xdf, 0xe2, 0x35, 0xff,
1269 0x3d, 0x09, 0xc0, 0x80, 0x80, 0x6f, 0xf1, 0x9a, 0x3d, 0x83, 0x1d, 0x52, 0xab, 0x47, 0xa4, 0x56,
1270 0x6c, 0x7b, 0x3a, 0x48, 0xa6, 0xc8, 0xce, 0xfe, 0x08, 0x33, 0xfb, 0xaf, 0xe3, 0xa2, 0x4c, 0xe5,
1271 0xba, 0x12, 0x68, 0x90, 0x7f, 0x48, 0xf9, 0x4d, 0x09, 0x3f, 0x6d, 0x61, 0xf6, 0x09, 0x30, 0x3b,
1272 0xed, 0x6e, 0x9b, 0x58, 0xa1, 0xc0, 0x44, 0x23, 0x7f, 0x46, 0x07, 0xcf, 0x92, 0xaa, 0x3a, 0x21,
1273 0x43, 0xe4, 0x70, 0xdb, 0x49, 0xbc, 0x2a, 0x4c, 0xac, 0x30, 0xd1, 0xb2, 0xe4, 0x7f, 0xb0, 0x69,
1274 0x46, 0x60, 0xa1, 0x88, 0x10, 0xf6, 0x05, 0xdc, 0xb3, 0xc5, 0x35, 0x2b, 0x25, 0x8d, 0x11, 0x98,
1275 0xc5, 0x97, 0x52, 0xb9, 0xb2, 0x3d, 0xa6, 0xf3, 0x6d, 0xe9, 0x2f, 0x1a, 0xe3, 0xd7, 0x52, 0x51,
1276 0xf9, 0xbe, 0x84, 0x07, 0x3f, 0x7f, 0xc9, 0xf7, 0x45, 0xf3, 0x39, 0xbd, 0xf8, 0xc1, 0xad, 0x17,
1277 0x7d, 0x77, 0x34, 0xdd, 0x17, 0xed, 0x8b, 0x74, 0xd2, 0x13, 0x6a, 0xd0, 0xa4, 0x45, 0xe9, 0x8c,
1278 0xc7, 0x30, 0xb2, 0x97, 0x1a, 0x2a, 0x47, 0x8a, 0x90, 0x12, 0x04, 0x07, 0x59, 0x5a, 0x84, 0x7f,
1279 0x83, 0xd9, 0x52, 0xe6, 0xaf, 0x48, 0xc8, 0x9a, 0x81, 0xdb, 0xd2, 0xbc, 0xe0, 0x7d, 0x35, 0x2f,
1280 0xd8, 0xd2, 0xbc, 0xf0, 0xbf, 0x3d, 0xd8, 0x5b, 0xca, 0x3c, 0xc2, 0x24, 0x6b, 0x28, 0xf5, 0x0b,
1281 0x12, 0x7b, 0x7b, 0xa3, 0xee, 0xb6, 0x78, 0x7e, 0x05, 0x7b, 0x3e, 0x9a, 0x46, 0x23, 0xee, 0x10,
1282 0x0f, 0x1e, 0x6e, 0xf3, 0x60, 0x2b, 0x85, 0x68, 0xb2, 0xde, 0xca, 0x68, 0x5b, 0x07, 0xbb, 0x54,
1283 0xa9, 0x5f, 0xd0, 0xc1, 0x1d, 0x32, 0xb6, 0x3a, 0x78, 0xa3, 0xcd, 0xbd, 0xf7, 0xd0, 0xe6, 0x6d,
1284 0xa1, 0xdf, 0x9d, 0x77, 0xb7, 0x85, 0xfe, 0x39, 0xec, 0xaf, 0x8b, 0xb2, 0x58, 0xd7, 0xeb, 0x98,
1285 0xae, 0x60, 0xba, 0xb5, 0xfa, 0xc4, 0xa6, 0xa9, 0x37, 0x58, 0x46, 0xd3, 0xfd, 0xf5, 0x29, 0xb0,
1286 0xa2, 0x4c, 0x45, 0x9d, 0xe1, 0x26, 0x9d, 0x07, 0x6e, 0x5c, 0xbd, 0x65, 0x83, 0xd0, 0x07, 0xd0,
1287 0x4b, 0x65, 0x5d, 0x1a, 0x3e, 0xa4, 0xf8, 0xdd, 0xc2, 0xd2, 0xbc, 0x91, 0x23, 0x3a, 0x51, 0x61,
1288 0x8e, 0x57, 0x7c, 0x8f, 0x7a, 0x35, 0x6b, 0x2c, 0xd4, 0xa5, 0x1c, 0xaf, 0x6c, 0xf4, 0x56, 0x83,
1289 0xbc, 0x97, 0x53, 0xcb, 0xa1, 0x45, 0x9c, 0xf9, 0xe9, 0xed, 0x71, 0x9f, 0x51, 0xe4, 0xdb, 0xa3,
1290 0xbe, 0x80, 0x59, 0x13, 0xb6, 0xed, 0x35, 0x7d, 0x23, 0x00, 0x05, 0xbd, 0xe7, 0x71, 0xf7, 0x75,
1291 0xa1, 0xd9, 0x11, 0x1c, 0x34, 0x1e, 0x71, 0x85, 0x2d, 0xf3, 0xf9, 0x3e, 0xed, 0xba, 0x9f, 0x38,
1292 0xb7, 0xbf, 0xa2, 0xda, 0x50, 0xa4, 0x66, 0x6b, 0x92, 0xcd, 0x11, 0x6d, 0x3b, 0xf2, 0xd8, 0x37,
1293 0x56, 0x29, 0x1f, 0xc3, 0xa8, 0x3d, 0x5d, 0x08, 0x3e, 0x26, 0x0f, 0x68, 0x0e, 0x16, 0xc2, 0x8e,
1294 0x4d, 0x9a, 0xa4, 0x2b, 0x8c, 0x0b, 0x83, 0x2a, 0x31, 0x52, 0xf1, 0x09, 0xf9, 0x4c, 0x08, 0x3d,
1295 0xf5, 0xa0, 0xad, 0x44, 0x59, 0xaf, 0x63, 0xbd, 0x4a, 0x54, 0xa6, 0x39, 0xa3, 0x88, 0x86, 0x65,
1296 0xbd, 0x3e, 0x27, 0x20, 0xfc, 0x57, 0x40, 0xdf, 0x83, 0x8e, 0xdb, 0xee, 0xb2, 0x61, 0x1f, 0x43,
1297 0x57, 0xc8, 0x9c, 0x07, 0xc4, 0xcd, 0xbb, 0x1b, 0x2c, 0xb9, 0xf9, 0xc6, 0x88, 0xac, 0xc7, 0x06,
1298 0xa3, 0x3a, 0xef, 0xc1, 0xa8, 0x10, 0x26, 0x22, 0xd1, 0x26, 0x6e, 0xf9, 0xe9, 0xc8, 0x3b, 0xb2,
1299 0xe0, 0x89, 0xe3, 0x68, 0xf8, 0x9f, 0x80, 0x46, 0xed, 0x8d, 0xfd, 0xac, 0x89, 0x30, 0x95, 0xea,
1300 0xf6, 0x4c, 0x05, 0xb7, 0x86, 0xf3, 0xd6, 0x3c, 0x74, 0x5c, 0x7e, 0xff, 0x7f, 0x1e, 0xba, 0x64,
1301 0x6c, 0xe7, 0xa1, 0xe5, 0xd9, 0xce, 0x26, 0xcf, 0x1e, 0x01, 0x18, 0x69, 0x12, 0xe1, 0xee, 0xe1,
1302 0x9e, 0x9b, 0x2f, 0x42, 0xe8, 0x12, 0xe6, 0xd0, 0x57, 0x14, 0x97, 0xe6, 0xbb, 0x6e, 0x3b, 0xbf,
1303 0x0c, 0xff, 0xdd, 0xa1, 0x4a, 0xfa, 0xd0, 0x7f, 0x8b, 0x4c, 0xfc, 0x7c, 0xc4, 0x7b, 0xbf, 0x36,
1304 0xe2, 0xbd, 0xcd, 0x11, 0x9f, 0xd9, 0xcf, 0x11, 0x51, 0x1b, 0xbb, 0xf7, 0x4a, 0xd6, 0x4a, 0x53,
1305 0x0a, 0x93, 0xe3, 0xe0, 0xb3, 0x68, 0x7a, 0x63, 0xfa, 0xc6, 0x5a, 0xec, 0x25, 0xe3, 0x07, 0xa7,
1306 0xd1, 0x23, 0x97, 0xd4, 0x20, 0x9a, 0x7a, 0xdc, 0x8b, 0x0e, 0x7d, 0xa0, 0xd4, 0x36, 0xb1, 0x56,
1307 0xb8, 0xdc, 0xa8, 0x8f, 0x09, 0x6c, 0xa4, 0xe9, 0x29, 0x4c, 0x9a, 0x7d, 0x62, 0x59, 0x8a, 0x6b,
1308 0x3f, 0xe2, 0xe3, 0x06, 0x3c, 0x2b, 0xc5, 0x75, 0x78, 0x45, 0x2a, 0xed, 0xab, 0xe4, 0x09, 0x77,
1309 0x04, 0x3d, 0xda, 0xc8, 0x53, 0xee, 0xfe, 0x36, 0x8d, 0x36, 0xc8, 0x10, 0x39, 0x3f, 0xf6, 0x05,
1310 0xf4, 0x75, 0xbd, 0x5e, 0x27, 0xea, 0xda, 0x33, 0xef, 0x57, 0x5e, 0x69, 0x3c, 0xbf, 0xea, 0xfd,
1311 0xdd, 0x92, 0xf6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x70, 0xd9, 0xa0, 0xf8, 0x48, 0x0d, 0x00,
1312 0x00,
1313}
diff --git a/vendor/google.golang.org/appengine/internal/log/log_service.proto b/vendor/google.golang.org/appengine/internal/log/log_service.proto
new file mode 100644
index 0000000..8981dc4
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/log/log_service.proto
@@ -0,0 +1,150 @@
1syntax = "proto2";
2option go_package = "log";
3
4package appengine;
5
6message LogServiceError {
7 enum ErrorCode {
8 OK = 0;
9 INVALID_REQUEST = 1;
10 STORAGE_ERROR = 2;
11 }
12}
13
14message UserAppLogLine {
15 required int64 timestamp_usec = 1;
16 required int64 level = 2;
17 required string message = 3;
18}
19
20message UserAppLogGroup {
21 repeated UserAppLogLine log_line = 2;
22}
23
24message FlushRequest {
25 optional bytes logs = 1;
26}
27
28message SetStatusRequest {
29 required string status = 1;
30}
31
32
33message LogOffset {
34 optional bytes request_id = 1;
35}
36
37message LogLine {
38 required int64 time = 1;
39 required int32 level = 2;
40 required string log_message = 3;
41}
42
43message RequestLog {
44 required string app_id = 1;
45 optional string module_id = 37 [default="default"];
46 required string version_id = 2;
47 required bytes request_id = 3;
48 optional LogOffset offset = 35;
49 required string ip = 4;
50 optional string nickname = 5;
51 required int64 start_time = 6;
52 required int64 end_time = 7;
53 required int64 latency = 8;
54 required int64 mcycles = 9;
55 required string method = 10;
56 required string resource = 11;
57 required string http_version = 12;
58 required int32 status = 13;
59 required int64 response_size = 14;
60 optional string referrer = 15;
61 optional string user_agent = 16;
62 required string url_map_entry = 17;
63 required string combined = 18;
64 optional int64 api_mcycles = 19;
65 optional string host = 20;
66 optional double cost = 21;
67
68 optional string task_queue_name = 22;
69 optional string task_name = 23;
70
71 optional bool was_loading_request = 24;
72 optional int64 pending_time = 25;
73 optional int32 replica_index = 26 [default = -1];
74 optional bool finished = 27 [default = true];
75 optional bytes clone_key = 28;
76
77 repeated LogLine line = 29;
78
79 optional bool lines_incomplete = 36;
80 optional bytes app_engine_release = 38;
81
82 optional int32 exit_reason = 30;
83 optional bool was_throttled_for_time = 31;
84 optional bool was_throttled_for_requests = 32;
85 optional int64 throttled_time = 33;
86
87 optional bytes server_name = 34;
88}
89
90message LogModuleVersion {
91 optional string module_id = 1 [default="default"];
92 optional string version_id = 2;
93}
94
95message LogReadRequest {
96 required string app_id = 1;
97 repeated string version_id = 2;
98 repeated LogModuleVersion module_version = 19;
99
100 optional int64 start_time = 3;
101 optional int64 end_time = 4;
102 optional LogOffset offset = 5;
103 repeated bytes request_id = 6;
104
105 optional int32 minimum_log_level = 7;
106 optional bool include_incomplete = 8;
107 optional int64 count = 9;
108
109 optional string combined_log_regex = 14;
110 optional string host_regex = 15;
111 optional int32 replica_index = 16;
112
113 optional bool include_app_logs = 10;
114 optional int32 app_logs_per_request = 17;
115 optional bool include_host = 11;
116 optional bool include_all = 12;
117 optional bool cache_iterator = 13;
118 optional int32 num_shards = 18;
119}
120
121message LogReadResponse {
122 repeated RequestLog log = 1;
123 optional LogOffset offset = 2;
124 optional int64 last_end_time = 3;
125}
126
127message LogUsageRecord {
128 optional string version_id = 1;
129 optional int32 start_time = 2;
130 optional int32 end_time = 3;
131 optional int64 count = 4;
132 optional int64 total_size = 5;
133 optional int32 records = 6;
134}
135
136message LogUsageRequest {
137 required string app_id = 1;
138 repeated string version_id = 2;
139 optional int32 start_time = 3;
140 optional int32 end_time = 4;
141 optional uint32 resolution_hours = 5 [default = 1];
142 optional bool combine_versions = 6;
143 optional int32 usage_version = 7;
144 optional bool versions_only = 8;
145}
146
147message LogUsageResponse {
148 repeated LogUsageRecord usage = 1;
149 optional LogUsageRecord summary = 2;
150}
diff --git a/vendor/google.golang.org/appengine/internal/main.go b/vendor/google.golang.org/appengine/internal/main.go
new file mode 100644
index 0000000..1e76531
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/main.go
@@ -0,0 +1,16 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build appengine
6
7package internal
8
9import (
10 "appengine_internal"
11)
12
13func Main() {
14 MainPath = ""
15 appengine_internal.Main()
16}
diff --git a/vendor/google.golang.org/appengine/internal/main_common.go b/vendor/google.golang.org/appengine/internal/main_common.go
new file mode 100644
index 0000000..357dce4
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/main_common.go
@@ -0,0 +1,7 @@
1package internal
2
3// MainPath stores the file path of the main package. On App Engine Standard
4// using Go version 1.9 and below, this will be unset. On App Engine Flex and
5// App Engine Standard second-gen (Go 1.11 and above), this will be the
6// filepath to package main.
7var MainPath string
diff --git a/vendor/google.golang.org/appengine/internal/main_vm.go b/vendor/google.golang.org/appengine/internal/main_vm.go
new file mode 100644
index 0000000..ddb79a3
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/main_vm.go
@@ -0,0 +1,69 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// +build !appengine
6
7package internal
8
9import (
10 "io"
11 "log"
12 "net/http"
13 "net/url"
14 "os"
15 "path/filepath"
16 "runtime"
17)
18
19func Main() {
20 MainPath = filepath.Dir(findMainPath())
21 installHealthChecker(http.DefaultServeMux)
22
23 port := "8080"
24 if s := os.Getenv("PORT"); s != "" {
25 port = s
26 }
27
28 host := ""
29 if IsDevAppServer() {
30 host = "127.0.0.1"
31 }
32 if err := http.ListenAndServe(host+":"+port, http.HandlerFunc(handleHTTP)); err != nil {
33 log.Fatalf("http.ListenAndServe: %v", err)
34 }
35}
36
37// Find the path to package main by looking at the root Caller.
38func findMainPath() string {
39 pc := make([]uintptr, 100)
40 n := runtime.Callers(2, pc)
41 frames := runtime.CallersFrames(pc[:n])
42 for {
43 frame, more := frames.Next()
44 // Tests won't have package main, instead they have testing.tRunner
45 if frame.Function == "main.main" || frame.Function == "testing.tRunner" {
46 return frame.File
47 }
48 if !more {
49 break
50 }
51 }
52 return ""
53}
54
55func installHealthChecker(mux *http.ServeMux) {
56 // If no health check handler has been installed by this point, add a trivial one.
57 const healthPath = "/_ah/health"
58 hreq := &http.Request{
59 Method: "GET",
60 URL: &url.URL{
61 Path: healthPath,
62 },
63 }
64 if _, pat := mux.Handler(hreq); pat != healthPath {
65 mux.HandleFunc(healthPath, func(w http.ResponseWriter, r *http.Request) {
66 io.WriteString(w, "ok")
67 })
68 }
69}
diff --git a/vendor/google.golang.org/appengine/internal/metadata.go b/vendor/google.golang.org/appengine/internal/metadata.go
new file mode 100644
index 0000000..c4ba63b
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/metadata.go
@@ -0,0 +1,60 @@
1// Copyright 2014 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package internal
6
7// This file has code for accessing metadata.
8//
9// References:
10// https://cloud.google.com/compute/docs/metadata
11
12import (
13 "fmt"
14 "io/ioutil"
15 "net/http"
16 "net/url"
17)
18
19const (
20 metadataHost = "metadata"
21 metadataPath = "/computeMetadata/v1/"
22)
23
24var (
25 metadataRequestHeaders = http.Header{
26 "Metadata-Flavor": []string{"Google"},
27 }
28)
29
30// TODO(dsymonds): Do we need to support default values, like Python?
31func mustGetMetadata(key string) []byte {
32 b, err := getMetadata(key)
33 if err != nil {
34 panic(fmt.Sprintf("Metadata fetch failed for '%s': %v", key, err))
35 }
36 return b
37}
38
39func getMetadata(key string) ([]byte, error) {
40 // TODO(dsymonds): May need to use url.Parse to support keys with query args.
41 req := &http.Request{
42 Method: "GET",
43 URL: &url.URL{
44 Scheme: "http",
45 Host: metadataHost,
46 Path: metadataPath + key,
47 },
48 Header: metadataRequestHeaders,
49 Host: metadataHost,
50 }
51 resp, err := http.DefaultClient.Do(req)
52 if err != nil {
53 return nil, err
54 }
55 defer resp.Body.Close()
56 if resp.StatusCode != 200 {
57 return nil, fmt.Errorf("metadata server returned HTTP %d", resp.StatusCode)
58 }
59 return ioutil.ReadAll(resp.Body)
60}
diff --git a/vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go b/vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go
new file mode 100644
index 0000000..ddfc0c0
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go
@@ -0,0 +1,786 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/modules/modules_service.proto
3
4package modules
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type ModulesServiceError_ErrorCode int32
22
23const (
24 ModulesServiceError_OK ModulesServiceError_ErrorCode = 0
25 ModulesServiceError_INVALID_MODULE ModulesServiceError_ErrorCode = 1
26 ModulesServiceError_INVALID_VERSION ModulesServiceError_ErrorCode = 2
27 ModulesServiceError_INVALID_INSTANCES ModulesServiceError_ErrorCode = 3
28 ModulesServiceError_TRANSIENT_ERROR ModulesServiceError_ErrorCode = 4
29 ModulesServiceError_UNEXPECTED_STATE ModulesServiceError_ErrorCode = 5
30)
31
32var ModulesServiceError_ErrorCode_name = map[int32]string{
33 0: "OK",
34 1: "INVALID_MODULE",
35 2: "INVALID_VERSION",
36 3: "INVALID_INSTANCES",
37 4: "TRANSIENT_ERROR",
38 5: "UNEXPECTED_STATE",
39}
40var ModulesServiceError_ErrorCode_value = map[string]int32{
41 "OK": 0,
42 "INVALID_MODULE": 1,
43 "INVALID_VERSION": 2,
44 "INVALID_INSTANCES": 3,
45 "TRANSIENT_ERROR": 4,
46 "UNEXPECTED_STATE": 5,
47}
48
49func (x ModulesServiceError_ErrorCode) Enum() *ModulesServiceError_ErrorCode {
50 p := new(ModulesServiceError_ErrorCode)
51 *p = x
52 return p
53}
54func (x ModulesServiceError_ErrorCode) String() string {
55 return proto.EnumName(ModulesServiceError_ErrorCode_name, int32(x))
56}
57func (x *ModulesServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
58 value, err := proto.UnmarshalJSONEnum(ModulesServiceError_ErrorCode_value, data, "ModulesServiceError_ErrorCode")
59 if err != nil {
60 return err
61 }
62 *x = ModulesServiceError_ErrorCode(value)
63 return nil
64}
65func (ModulesServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
66 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{0, 0}
67}
68
69type ModulesServiceError struct {
70 XXX_NoUnkeyedLiteral struct{} `json:"-"`
71 XXX_unrecognized []byte `json:"-"`
72 XXX_sizecache int32 `json:"-"`
73}
74
75func (m *ModulesServiceError) Reset() { *m = ModulesServiceError{} }
76func (m *ModulesServiceError) String() string { return proto.CompactTextString(m) }
77func (*ModulesServiceError) ProtoMessage() {}
78func (*ModulesServiceError) Descriptor() ([]byte, []int) {
79 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{0}
80}
81func (m *ModulesServiceError) XXX_Unmarshal(b []byte) error {
82 return xxx_messageInfo_ModulesServiceError.Unmarshal(m, b)
83}
84func (m *ModulesServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
85 return xxx_messageInfo_ModulesServiceError.Marshal(b, m, deterministic)
86}
87func (dst *ModulesServiceError) XXX_Merge(src proto.Message) {
88 xxx_messageInfo_ModulesServiceError.Merge(dst, src)
89}
90func (m *ModulesServiceError) XXX_Size() int {
91 return xxx_messageInfo_ModulesServiceError.Size(m)
92}
93func (m *ModulesServiceError) XXX_DiscardUnknown() {
94 xxx_messageInfo_ModulesServiceError.DiscardUnknown(m)
95}
96
97var xxx_messageInfo_ModulesServiceError proto.InternalMessageInfo
98
99type GetModulesRequest struct {
100 XXX_NoUnkeyedLiteral struct{} `json:"-"`
101 XXX_unrecognized []byte `json:"-"`
102 XXX_sizecache int32 `json:"-"`
103}
104
105func (m *GetModulesRequest) Reset() { *m = GetModulesRequest{} }
106func (m *GetModulesRequest) String() string { return proto.CompactTextString(m) }
107func (*GetModulesRequest) ProtoMessage() {}
108func (*GetModulesRequest) Descriptor() ([]byte, []int) {
109 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{1}
110}
111func (m *GetModulesRequest) XXX_Unmarshal(b []byte) error {
112 return xxx_messageInfo_GetModulesRequest.Unmarshal(m, b)
113}
114func (m *GetModulesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
115 return xxx_messageInfo_GetModulesRequest.Marshal(b, m, deterministic)
116}
117func (dst *GetModulesRequest) XXX_Merge(src proto.Message) {
118 xxx_messageInfo_GetModulesRequest.Merge(dst, src)
119}
120func (m *GetModulesRequest) XXX_Size() int {
121 return xxx_messageInfo_GetModulesRequest.Size(m)
122}
123func (m *GetModulesRequest) XXX_DiscardUnknown() {
124 xxx_messageInfo_GetModulesRequest.DiscardUnknown(m)
125}
126
127var xxx_messageInfo_GetModulesRequest proto.InternalMessageInfo
128
129type GetModulesResponse struct {
130 Module []string `protobuf:"bytes,1,rep,name=module" json:"module,omitempty"`
131 XXX_NoUnkeyedLiteral struct{} `json:"-"`
132 XXX_unrecognized []byte `json:"-"`
133 XXX_sizecache int32 `json:"-"`
134}
135
136func (m *GetModulesResponse) Reset() { *m = GetModulesResponse{} }
137func (m *GetModulesResponse) String() string { return proto.CompactTextString(m) }
138func (*GetModulesResponse) ProtoMessage() {}
139func (*GetModulesResponse) Descriptor() ([]byte, []int) {
140 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{2}
141}
142func (m *GetModulesResponse) XXX_Unmarshal(b []byte) error {
143 return xxx_messageInfo_GetModulesResponse.Unmarshal(m, b)
144}
145func (m *GetModulesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
146 return xxx_messageInfo_GetModulesResponse.Marshal(b, m, deterministic)
147}
148func (dst *GetModulesResponse) XXX_Merge(src proto.Message) {
149 xxx_messageInfo_GetModulesResponse.Merge(dst, src)
150}
151func (m *GetModulesResponse) XXX_Size() int {
152 return xxx_messageInfo_GetModulesResponse.Size(m)
153}
154func (m *GetModulesResponse) XXX_DiscardUnknown() {
155 xxx_messageInfo_GetModulesResponse.DiscardUnknown(m)
156}
157
158var xxx_messageInfo_GetModulesResponse proto.InternalMessageInfo
159
160func (m *GetModulesResponse) GetModule() []string {
161 if m != nil {
162 return m.Module
163 }
164 return nil
165}
166
167type GetVersionsRequest struct {
168 Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
169 XXX_NoUnkeyedLiteral struct{} `json:"-"`
170 XXX_unrecognized []byte `json:"-"`
171 XXX_sizecache int32 `json:"-"`
172}
173
174func (m *GetVersionsRequest) Reset() { *m = GetVersionsRequest{} }
175func (m *GetVersionsRequest) String() string { return proto.CompactTextString(m) }
176func (*GetVersionsRequest) ProtoMessage() {}
177func (*GetVersionsRequest) Descriptor() ([]byte, []int) {
178 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{3}
179}
180func (m *GetVersionsRequest) XXX_Unmarshal(b []byte) error {
181 return xxx_messageInfo_GetVersionsRequest.Unmarshal(m, b)
182}
183func (m *GetVersionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
184 return xxx_messageInfo_GetVersionsRequest.Marshal(b, m, deterministic)
185}
186func (dst *GetVersionsRequest) XXX_Merge(src proto.Message) {
187 xxx_messageInfo_GetVersionsRequest.Merge(dst, src)
188}
189func (m *GetVersionsRequest) XXX_Size() int {
190 return xxx_messageInfo_GetVersionsRequest.Size(m)
191}
192func (m *GetVersionsRequest) XXX_DiscardUnknown() {
193 xxx_messageInfo_GetVersionsRequest.DiscardUnknown(m)
194}
195
196var xxx_messageInfo_GetVersionsRequest proto.InternalMessageInfo
197
198func (m *GetVersionsRequest) GetModule() string {
199 if m != nil && m.Module != nil {
200 return *m.Module
201 }
202 return ""
203}
204
205type GetVersionsResponse struct {
206 Version []string `protobuf:"bytes,1,rep,name=version" json:"version,omitempty"`
207 XXX_NoUnkeyedLiteral struct{} `json:"-"`
208 XXX_unrecognized []byte `json:"-"`
209 XXX_sizecache int32 `json:"-"`
210}
211
212func (m *GetVersionsResponse) Reset() { *m = GetVersionsResponse{} }
213func (m *GetVersionsResponse) String() string { return proto.CompactTextString(m) }
214func (*GetVersionsResponse) ProtoMessage() {}
215func (*GetVersionsResponse) Descriptor() ([]byte, []int) {
216 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{4}
217}
218func (m *GetVersionsResponse) XXX_Unmarshal(b []byte) error {
219 return xxx_messageInfo_GetVersionsResponse.Unmarshal(m, b)
220}
221func (m *GetVersionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
222 return xxx_messageInfo_GetVersionsResponse.Marshal(b, m, deterministic)
223}
224func (dst *GetVersionsResponse) XXX_Merge(src proto.Message) {
225 xxx_messageInfo_GetVersionsResponse.Merge(dst, src)
226}
227func (m *GetVersionsResponse) XXX_Size() int {
228 return xxx_messageInfo_GetVersionsResponse.Size(m)
229}
230func (m *GetVersionsResponse) XXX_DiscardUnknown() {
231 xxx_messageInfo_GetVersionsResponse.DiscardUnknown(m)
232}
233
234var xxx_messageInfo_GetVersionsResponse proto.InternalMessageInfo
235
236func (m *GetVersionsResponse) GetVersion() []string {
237 if m != nil {
238 return m.Version
239 }
240 return nil
241}
242
243type GetDefaultVersionRequest struct {
244 Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
245 XXX_NoUnkeyedLiteral struct{} `json:"-"`
246 XXX_unrecognized []byte `json:"-"`
247 XXX_sizecache int32 `json:"-"`
248}
249
250func (m *GetDefaultVersionRequest) Reset() { *m = GetDefaultVersionRequest{} }
251func (m *GetDefaultVersionRequest) String() string { return proto.CompactTextString(m) }
252func (*GetDefaultVersionRequest) ProtoMessage() {}
253func (*GetDefaultVersionRequest) Descriptor() ([]byte, []int) {
254 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{5}
255}
256func (m *GetDefaultVersionRequest) XXX_Unmarshal(b []byte) error {
257 return xxx_messageInfo_GetDefaultVersionRequest.Unmarshal(m, b)
258}
259func (m *GetDefaultVersionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
260 return xxx_messageInfo_GetDefaultVersionRequest.Marshal(b, m, deterministic)
261}
262func (dst *GetDefaultVersionRequest) XXX_Merge(src proto.Message) {
263 xxx_messageInfo_GetDefaultVersionRequest.Merge(dst, src)
264}
265func (m *GetDefaultVersionRequest) XXX_Size() int {
266 return xxx_messageInfo_GetDefaultVersionRequest.Size(m)
267}
268func (m *GetDefaultVersionRequest) XXX_DiscardUnknown() {
269 xxx_messageInfo_GetDefaultVersionRequest.DiscardUnknown(m)
270}
271
272var xxx_messageInfo_GetDefaultVersionRequest proto.InternalMessageInfo
273
274func (m *GetDefaultVersionRequest) GetModule() string {
275 if m != nil && m.Module != nil {
276 return *m.Module
277 }
278 return ""
279}
280
281type GetDefaultVersionResponse struct {
282 Version *string `protobuf:"bytes,1,req,name=version" json:"version,omitempty"`
283 XXX_NoUnkeyedLiteral struct{} `json:"-"`
284 XXX_unrecognized []byte `json:"-"`
285 XXX_sizecache int32 `json:"-"`
286}
287
288func (m *GetDefaultVersionResponse) Reset() { *m = GetDefaultVersionResponse{} }
289func (m *GetDefaultVersionResponse) String() string { return proto.CompactTextString(m) }
290func (*GetDefaultVersionResponse) ProtoMessage() {}
291func (*GetDefaultVersionResponse) Descriptor() ([]byte, []int) {
292 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{6}
293}
294func (m *GetDefaultVersionResponse) XXX_Unmarshal(b []byte) error {
295 return xxx_messageInfo_GetDefaultVersionResponse.Unmarshal(m, b)
296}
297func (m *GetDefaultVersionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
298 return xxx_messageInfo_GetDefaultVersionResponse.Marshal(b, m, deterministic)
299}
300func (dst *GetDefaultVersionResponse) XXX_Merge(src proto.Message) {
301 xxx_messageInfo_GetDefaultVersionResponse.Merge(dst, src)
302}
303func (m *GetDefaultVersionResponse) XXX_Size() int {
304 return xxx_messageInfo_GetDefaultVersionResponse.Size(m)
305}
306func (m *GetDefaultVersionResponse) XXX_DiscardUnknown() {
307 xxx_messageInfo_GetDefaultVersionResponse.DiscardUnknown(m)
308}
309
310var xxx_messageInfo_GetDefaultVersionResponse proto.InternalMessageInfo
311
312func (m *GetDefaultVersionResponse) GetVersion() string {
313 if m != nil && m.Version != nil {
314 return *m.Version
315 }
316 return ""
317}
318
319type GetNumInstancesRequest struct {
320 Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
321 Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
322 XXX_NoUnkeyedLiteral struct{} `json:"-"`
323 XXX_unrecognized []byte `json:"-"`
324 XXX_sizecache int32 `json:"-"`
325}
326
327func (m *GetNumInstancesRequest) Reset() { *m = GetNumInstancesRequest{} }
328func (m *GetNumInstancesRequest) String() string { return proto.CompactTextString(m) }
329func (*GetNumInstancesRequest) ProtoMessage() {}
330func (*GetNumInstancesRequest) Descriptor() ([]byte, []int) {
331 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{7}
332}
333func (m *GetNumInstancesRequest) XXX_Unmarshal(b []byte) error {
334 return xxx_messageInfo_GetNumInstancesRequest.Unmarshal(m, b)
335}
336func (m *GetNumInstancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
337 return xxx_messageInfo_GetNumInstancesRequest.Marshal(b, m, deterministic)
338}
339func (dst *GetNumInstancesRequest) XXX_Merge(src proto.Message) {
340 xxx_messageInfo_GetNumInstancesRequest.Merge(dst, src)
341}
342func (m *GetNumInstancesRequest) XXX_Size() int {
343 return xxx_messageInfo_GetNumInstancesRequest.Size(m)
344}
345func (m *GetNumInstancesRequest) XXX_DiscardUnknown() {
346 xxx_messageInfo_GetNumInstancesRequest.DiscardUnknown(m)
347}
348
349var xxx_messageInfo_GetNumInstancesRequest proto.InternalMessageInfo
350
351func (m *GetNumInstancesRequest) GetModule() string {
352 if m != nil && m.Module != nil {
353 return *m.Module
354 }
355 return ""
356}
357
358func (m *GetNumInstancesRequest) GetVersion() string {
359 if m != nil && m.Version != nil {
360 return *m.Version
361 }
362 return ""
363}
364
365type GetNumInstancesResponse struct {
366 Instances *int64 `protobuf:"varint,1,req,name=instances" json:"instances,omitempty"`
367 XXX_NoUnkeyedLiteral struct{} `json:"-"`
368 XXX_unrecognized []byte `json:"-"`
369 XXX_sizecache int32 `json:"-"`
370}
371
372func (m *GetNumInstancesResponse) Reset() { *m = GetNumInstancesResponse{} }
373func (m *GetNumInstancesResponse) String() string { return proto.CompactTextString(m) }
374func (*GetNumInstancesResponse) ProtoMessage() {}
375func (*GetNumInstancesResponse) Descriptor() ([]byte, []int) {
376 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{8}
377}
378func (m *GetNumInstancesResponse) XXX_Unmarshal(b []byte) error {
379 return xxx_messageInfo_GetNumInstancesResponse.Unmarshal(m, b)
380}
381func (m *GetNumInstancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
382 return xxx_messageInfo_GetNumInstancesResponse.Marshal(b, m, deterministic)
383}
384func (dst *GetNumInstancesResponse) XXX_Merge(src proto.Message) {
385 xxx_messageInfo_GetNumInstancesResponse.Merge(dst, src)
386}
387func (m *GetNumInstancesResponse) XXX_Size() int {
388 return xxx_messageInfo_GetNumInstancesResponse.Size(m)
389}
390func (m *GetNumInstancesResponse) XXX_DiscardUnknown() {
391 xxx_messageInfo_GetNumInstancesResponse.DiscardUnknown(m)
392}
393
394var xxx_messageInfo_GetNumInstancesResponse proto.InternalMessageInfo
395
396func (m *GetNumInstancesResponse) GetInstances() int64 {
397 if m != nil && m.Instances != nil {
398 return *m.Instances
399 }
400 return 0
401}
402
403type SetNumInstancesRequest struct {
404 Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
405 Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
406 Instances *int64 `protobuf:"varint,3,req,name=instances" json:"instances,omitempty"`
407 XXX_NoUnkeyedLiteral struct{} `json:"-"`
408 XXX_unrecognized []byte `json:"-"`
409 XXX_sizecache int32 `json:"-"`
410}
411
412func (m *SetNumInstancesRequest) Reset() { *m = SetNumInstancesRequest{} }
413func (m *SetNumInstancesRequest) String() string { return proto.CompactTextString(m) }
414func (*SetNumInstancesRequest) ProtoMessage() {}
415func (*SetNumInstancesRequest) Descriptor() ([]byte, []int) {
416 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{9}
417}
418func (m *SetNumInstancesRequest) XXX_Unmarshal(b []byte) error {
419 return xxx_messageInfo_SetNumInstancesRequest.Unmarshal(m, b)
420}
421func (m *SetNumInstancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
422 return xxx_messageInfo_SetNumInstancesRequest.Marshal(b, m, deterministic)
423}
424func (dst *SetNumInstancesRequest) XXX_Merge(src proto.Message) {
425 xxx_messageInfo_SetNumInstancesRequest.Merge(dst, src)
426}
427func (m *SetNumInstancesRequest) XXX_Size() int {
428 return xxx_messageInfo_SetNumInstancesRequest.Size(m)
429}
430func (m *SetNumInstancesRequest) XXX_DiscardUnknown() {
431 xxx_messageInfo_SetNumInstancesRequest.DiscardUnknown(m)
432}
433
434var xxx_messageInfo_SetNumInstancesRequest proto.InternalMessageInfo
435
436func (m *SetNumInstancesRequest) GetModule() string {
437 if m != nil && m.Module != nil {
438 return *m.Module
439 }
440 return ""
441}
442
443func (m *SetNumInstancesRequest) GetVersion() string {
444 if m != nil && m.Version != nil {
445 return *m.Version
446 }
447 return ""
448}
449
450func (m *SetNumInstancesRequest) GetInstances() int64 {
451 if m != nil && m.Instances != nil {
452 return *m.Instances
453 }
454 return 0
455}
456
457type SetNumInstancesResponse struct {
458 XXX_NoUnkeyedLiteral struct{} `json:"-"`
459 XXX_unrecognized []byte `json:"-"`
460 XXX_sizecache int32 `json:"-"`
461}
462
463func (m *SetNumInstancesResponse) Reset() { *m = SetNumInstancesResponse{} }
464func (m *SetNumInstancesResponse) String() string { return proto.CompactTextString(m) }
465func (*SetNumInstancesResponse) ProtoMessage() {}
466func (*SetNumInstancesResponse) Descriptor() ([]byte, []int) {
467 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{10}
468}
469func (m *SetNumInstancesResponse) XXX_Unmarshal(b []byte) error {
470 return xxx_messageInfo_SetNumInstancesResponse.Unmarshal(m, b)
471}
472func (m *SetNumInstancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
473 return xxx_messageInfo_SetNumInstancesResponse.Marshal(b, m, deterministic)
474}
475func (dst *SetNumInstancesResponse) XXX_Merge(src proto.Message) {
476 xxx_messageInfo_SetNumInstancesResponse.Merge(dst, src)
477}
478func (m *SetNumInstancesResponse) XXX_Size() int {
479 return xxx_messageInfo_SetNumInstancesResponse.Size(m)
480}
481func (m *SetNumInstancesResponse) XXX_DiscardUnknown() {
482 xxx_messageInfo_SetNumInstancesResponse.DiscardUnknown(m)
483}
484
485var xxx_messageInfo_SetNumInstancesResponse proto.InternalMessageInfo
486
487type StartModuleRequest struct {
488 Module *string `protobuf:"bytes,1,req,name=module" json:"module,omitempty"`
489 Version *string `protobuf:"bytes,2,req,name=version" json:"version,omitempty"`
490 XXX_NoUnkeyedLiteral struct{} `json:"-"`
491 XXX_unrecognized []byte `json:"-"`
492 XXX_sizecache int32 `json:"-"`
493}
494
495func (m *StartModuleRequest) Reset() { *m = StartModuleRequest{} }
496func (m *StartModuleRequest) String() string { return proto.CompactTextString(m) }
497func (*StartModuleRequest) ProtoMessage() {}
498func (*StartModuleRequest) Descriptor() ([]byte, []int) {
499 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{11}
500}
501func (m *StartModuleRequest) XXX_Unmarshal(b []byte) error {
502 return xxx_messageInfo_StartModuleRequest.Unmarshal(m, b)
503}
504func (m *StartModuleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
505 return xxx_messageInfo_StartModuleRequest.Marshal(b, m, deterministic)
506}
507func (dst *StartModuleRequest) XXX_Merge(src proto.Message) {
508 xxx_messageInfo_StartModuleRequest.Merge(dst, src)
509}
510func (m *StartModuleRequest) XXX_Size() int {
511 return xxx_messageInfo_StartModuleRequest.Size(m)
512}
513func (m *StartModuleRequest) XXX_DiscardUnknown() {
514 xxx_messageInfo_StartModuleRequest.DiscardUnknown(m)
515}
516
517var xxx_messageInfo_StartModuleRequest proto.InternalMessageInfo
518
519func (m *StartModuleRequest) GetModule() string {
520 if m != nil && m.Module != nil {
521 return *m.Module
522 }
523 return ""
524}
525
526func (m *StartModuleRequest) GetVersion() string {
527 if m != nil && m.Version != nil {
528 return *m.Version
529 }
530 return ""
531}
532
533type StartModuleResponse struct {
534 XXX_NoUnkeyedLiteral struct{} `json:"-"`
535 XXX_unrecognized []byte `json:"-"`
536 XXX_sizecache int32 `json:"-"`
537}
538
539func (m *StartModuleResponse) Reset() { *m = StartModuleResponse{} }
540func (m *StartModuleResponse) String() string { return proto.CompactTextString(m) }
541func (*StartModuleResponse) ProtoMessage() {}
542func (*StartModuleResponse) Descriptor() ([]byte, []int) {
543 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{12}
544}
545func (m *StartModuleResponse) XXX_Unmarshal(b []byte) error {
546 return xxx_messageInfo_StartModuleResponse.Unmarshal(m, b)
547}
548func (m *StartModuleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
549 return xxx_messageInfo_StartModuleResponse.Marshal(b, m, deterministic)
550}
551func (dst *StartModuleResponse) XXX_Merge(src proto.Message) {
552 xxx_messageInfo_StartModuleResponse.Merge(dst, src)
553}
554func (m *StartModuleResponse) XXX_Size() int {
555 return xxx_messageInfo_StartModuleResponse.Size(m)
556}
557func (m *StartModuleResponse) XXX_DiscardUnknown() {
558 xxx_messageInfo_StartModuleResponse.DiscardUnknown(m)
559}
560
561var xxx_messageInfo_StartModuleResponse proto.InternalMessageInfo
562
563type StopModuleRequest struct {
564 Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
565 Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
566 XXX_NoUnkeyedLiteral struct{} `json:"-"`
567 XXX_unrecognized []byte `json:"-"`
568 XXX_sizecache int32 `json:"-"`
569}
570
571func (m *StopModuleRequest) Reset() { *m = StopModuleRequest{} }
572func (m *StopModuleRequest) String() string { return proto.CompactTextString(m) }
573func (*StopModuleRequest) ProtoMessage() {}
574func (*StopModuleRequest) Descriptor() ([]byte, []int) {
575 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{13}
576}
577func (m *StopModuleRequest) XXX_Unmarshal(b []byte) error {
578 return xxx_messageInfo_StopModuleRequest.Unmarshal(m, b)
579}
580func (m *StopModuleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
581 return xxx_messageInfo_StopModuleRequest.Marshal(b, m, deterministic)
582}
583func (dst *StopModuleRequest) XXX_Merge(src proto.Message) {
584 xxx_messageInfo_StopModuleRequest.Merge(dst, src)
585}
586func (m *StopModuleRequest) XXX_Size() int {
587 return xxx_messageInfo_StopModuleRequest.Size(m)
588}
589func (m *StopModuleRequest) XXX_DiscardUnknown() {
590 xxx_messageInfo_StopModuleRequest.DiscardUnknown(m)
591}
592
593var xxx_messageInfo_StopModuleRequest proto.InternalMessageInfo
594
595func (m *StopModuleRequest) GetModule() string {
596 if m != nil && m.Module != nil {
597 return *m.Module
598 }
599 return ""
600}
601
602func (m *StopModuleRequest) GetVersion() string {
603 if m != nil && m.Version != nil {
604 return *m.Version
605 }
606 return ""
607}
608
609type StopModuleResponse struct {
610 XXX_NoUnkeyedLiteral struct{} `json:"-"`
611 XXX_unrecognized []byte `json:"-"`
612 XXX_sizecache int32 `json:"-"`
613}
614
615func (m *StopModuleResponse) Reset() { *m = StopModuleResponse{} }
616func (m *StopModuleResponse) String() string { return proto.CompactTextString(m) }
617func (*StopModuleResponse) ProtoMessage() {}
618func (*StopModuleResponse) Descriptor() ([]byte, []int) {
619 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{14}
620}
621func (m *StopModuleResponse) XXX_Unmarshal(b []byte) error {
622 return xxx_messageInfo_StopModuleResponse.Unmarshal(m, b)
623}
624func (m *StopModuleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
625 return xxx_messageInfo_StopModuleResponse.Marshal(b, m, deterministic)
626}
627func (dst *StopModuleResponse) XXX_Merge(src proto.Message) {
628 xxx_messageInfo_StopModuleResponse.Merge(dst, src)
629}
630func (m *StopModuleResponse) XXX_Size() int {
631 return xxx_messageInfo_StopModuleResponse.Size(m)
632}
633func (m *StopModuleResponse) XXX_DiscardUnknown() {
634 xxx_messageInfo_StopModuleResponse.DiscardUnknown(m)
635}
636
637var xxx_messageInfo_StopModuleResponse proto.InternalMessageInfo
638
639type GetHostnameRequest struct {
640 Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
641 Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
642 Instance *string `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"`
643 XXX_NoUnkeyedLiteral struct{} `json:"-"`
644 XXX_unrecognized []byte `json:"-"`
645 XXX_sizecache int32 `json:"-"`
646}
647
648func (m *GetHostnameRequest) Reset() { *m = GetHostnameRequest{} }
649func (m *GetHostnameRequest) String() string { return proto.CompactTextString(m) }
650func (*GetHostnameRequest) ProtoMessage() {}
651func (*GetHostnameRequest) Descriptor() ([]byte, []int) {
652 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{15}
653}
654func (m *GetHostnameRequest) XXX_Unmarshal(b []byte) error {
655 return xxx_messageInfo_GetHostnameRequest.Unmarshal(m, b)
656}
657func (m *GetHostnameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
658 return xxx_messageInfo_GetHostnameRequest.Marshal(b, m, deterministic)
659}
660func (dst *GetHostnameRequest) XXX_Merge(src proto.Message) {
661 xxx_messageInfo_GetHostnameRequest.Merge(dst, src)
662}
663func (m *GetHostnameRequest) XXX_Size() int {
664 return xxx_messageInfo_GetHostnameRequest.Size(m)
665}
666func (m *GetHostnameRequest) XXX_DiscardUnknown() {
667 xxx_messageInfo_GetHostnameRequest.DiscardUnknown(m)
668}
669
670var xxx_messageInfo_GetHostnameRequest proto.InternalMessageInfo
671
672func (m *GetHostnameRequest) GetModule() string {
673 if m != nil && m.Module != nil {
674 return *m.Module
675 }
676 return ""
677}
678
679func (m *GetHostnameRequest) GetVersion() string {
680 if m != nil && m.Version != nil {
681 return *m.Version
682 }
683 return ""
684}
685
686func (m *GetHostnameRequest) GetInstance() string {
687 if m != nil && m.Instance != nil {
688 return *m.Instance
689 }
690 return ""
691}
692
693type GetHostnameResponse struct {
694 Hostname *string `protobuf:"bytes,1,req,name=hostname" json:"hostname,omitempty"`
695 XXX_NoUnkeyedLiteral struct{} `json:"-"`
696 XXX_unrecognized []byte `json:"-"`
697 XXX_sizecache int32 `json:"-"`
698}
699
700func (m *GetHostnameResponse) Reset() { *m = GetHostnameResponse{} }
701func (m *GetHostnameResponse) String() string { return proto.CompactTextString(m) }
702func (*GetHostnameResponse) ProtoMessage() {}
703func (*GetHostnameResponse) Descriptor() ([]byte, []int) {
704 return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{16}
705}
706func (m *GetHostnameResponse) XXX_Unmarshal(b []byte) error {
707 return xxx_messageInfo_GetHostnameResponse.Unmarshal(m, b)
708}
709func (m *GetHostnameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
710 return xxx_messageInfo_GetHostnameResponse.Marshal(b, m, deterministic)
711}
712func (dst *GetHostnameResponse) XXX_Merge(src proto.Message) {
713 xxx_messageInfo_GetHostnameResponse.Merge(dst, src)
714}
715func (m *GetHostnameResponse) XXX_Size() int {
716 return xxx_messageInfo_GetHostnameResponse.Size(m)
717}
718func (m *GetHostnameResponse) XXX_DiscardUnknown() {
719 xxx_messageInfo_GetHostnameResponse.DiscardUnknown(m)
720}
721
722var xxx_messageInfo_GetHostnameResponse proto.InternalMessageInfo
723
724func (m *GetHostnameResponse) GetHostname() string {
725 if m != nil && m.Hostname != nil {
726 return *m.Hostname
727 }
728 return ""
729}
730
731func init() {
732 proto.RegisterType((*ModulesServiceError)(nil), "appengine.ModulesServiceError")
733 proto.RegisterType((*GetModulesRequest)(nil), "appengine.GetModulesRequest")
734 proto.RegisterType((*GetModulesResponse)(nil), "appengine.GetModulesResponse")
735 proto.RegisterType((*GetVersionsRequest)(nil), "appengine.GetVersionsRequest")
736 proto.RegisterType((*GetVersionsResponse)(nil), "appengine.GetVersionsResponse")
737 proto.RegisterType((*GetDefaultVersionRequest)(nil), "appengine.GetDefaultVersionRequest")
738 proto.RegisterType((*GetDefaultVersionResponse)(nil), "appengine.GetDefaultVersionResponse")
739 proto.RegisterType((*GetNumInstancesRequest)(nil), "appengine.GetNumInstancesRequest")
740 proto.RegisterType((*GetNumInstancesResponse)(nil), "appengine.GetNumInstancesResponse")
741 proto.RegisterType((*SetNumInstancesRequest)(nil), "appengine.SetNumInstancesRequest")
742 proto.RegisterType((*SetNumInstancesResponse)(nil), "appengine.SetNumInstancesResponse")
743 proto.RegisterType((*StartModuleRequest)(nil), "appengine.StartModuleRequest")
744 proto.RegisterType((*StartModuleResponse)(nil), "appengine.StartModuleResponse")
745 proto.RegisterType((*StopModuleRequest)(nil), "appengine.StopModuleRequest")
746 proto.RegisterType((*StopModuleResponse)(nil), "appengine.StopModuleResponse")
747 proto.RegisterType((*GetHostnameRequest)(nil), "appengine.GetHostnameRequest")
748 proto.RegisterType((*GetHostnameResponse)(nil), "appengine.GetHostnameResponse")
749}
750
751func init() {
752 proto.RegisterFile("google.golang.org/appengine/internal/modules/modules_service.proto", fileDescriptor_modules_service_9cd3bffe4e91c59a)
753}
754
755var fileDescriptor_modules_service_9cd3bffe4e91c59a = []byte{
756 // 457 bytes of a gzipped FileDescriptorProto
757 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xc1, 0x6f, 0xd3, 0x30,
758 0x14, 0xc6, 0x69, 0x02, 0xdb, 0xf2, 0x0e, 0x90, 0x3a, 0x5b, 0xd7, 0x4d, 0x1c, 0x50, 0x4e, 0x1c,
759 0x50, 0x2b, 0x90, 0x10, 0xe7, 0xae, 0x35, 0x25, 0xb0, 0xa5, 0x28, 0xce, 0x2a, 0xc4, 0xa5, 0x0a,
760 0xdb, 0x23, 0x8b, 0x94, 0xda, 0xc1, 0x76, 0x77, 0xe4, 0xbf, 0xe0, 0xff, 0x45, 0x4b, 0xed, 0xb6,
761 0x81, 0x4e, 0x45, 0x68, 0xa7, 0xe4, 0x7d, 0xfe, 0xfc, 0x7b, 0x9f, 0x5f, 0xac, 0xc0, 0x59, 0x2e,
762 0x44, 0x5e, 0x62, 0x2f, 0x17, 0x65, 0xc6, 0xf3, 0x9e, 0x90, 0x79, 0x3f, 0xab, 0x2a, 0xe4, 0x79,
763 0xc1, 0xb1, 0x5f, 0x70, 0x8d, 0x92, 0x67, 0x65, 0x7f, 0x2e, 0xae, 0x17, 0x25, 0x2a, 0xfb, 0x9c,
764 0x29, 0x94, 0xb7, 0xc5, 0x15, 0xf6, 0x2a, 0x29, 0xb4, 0x20, 0xde, 0x6a, 0x47, 0xf8, 0xab, 0x05,
765 0xc1, 0xc5, 0xd2, 0xc4, 0x96, 0x1e, 0x2a, 0xa5, 0x90, 0xe1, 0x4f, 0xf0, 0xea, 0x97, 0xa1, 0xb8,
766 0x46, 0xb2, 0x07, 0xce, 0xe4, 0x93, 0xff, 0x88, 0x10, 0x78, 0x1a, 0xc5, 0xd3, 0xc1, 0x79, 0x34,
767 0x9a, 0x5d, 0x4c, 0x46, 0x97, 0xe7, 0xd4, 0x6f, 0x91, 0x00, 0x9e, 0x59, 0x6d, 0x4a, 0x13, 0x16,
768 0x4d, 0x62, 0xdf, 0x21, 0x47, 0xd0, 0xb6, 0x62, 0x14, 0xb3, 0x74, 0x10, 0x0f, 0x29, 0xf3, 0xdd,
769 0x3b, 0x6f, 0x9a, 0x0c, 0x62, 0x16, 0xd1, 0x38, 0x9d, 0xd1, 0x24, 0x99, 0x24, 0xfe, 0x63, 0x72,
770 0x08, 0xfe, 0x65, 0x4c, 0xbf, 0x7c, 0xa6, 0xc3, 0x94, 0x8e, 0x66, 0x2c, 0x1d, 0xa4, 0xd4, 0x7f,
771 0x12, 0x06, 0xd0, 0x1e, 0xa3, 0x36, 0xc9, 0x12, 0xfc, 0xb1, 0x40, 0xa5, 0xc3, 0x57, 0x40, 0x36,
772 0x45, 0x55, 0x09, 0xae, 0x90, 0x74, 0x60, 0x6f, 0x79, 0xcc, 0x6e, 0xeb, 0x85, 0xfb, 0xd2, 0x4b,
773 0x4c, 0x65, 0xdc, 0x53, 0x94, 0xaa, 0x10, 0xdc, 0x32, 0x1a, 0xee, 0xd6, 0x86, 0xbb, 0x0f, 0x41,
774 0xc3, 0x6d, 0xe0, 0x5d, 0xd8, 0xbf, 0x5d, 0x6a, 0x86, 0x6e, 0xcb, 0xf0, 0x0d, 0x74, 0xc7, 0xa8,
775 0x47, 0xf8, 0x3d, 0x5b, 0x94, 0x76, 0xdf, 0xae, 0x26, 0x6f, 0xe1, 0x64, 0xcb, 0x9e, 0x6d, 0xad,
776 0x9c, 0xcd, 0x56, 0x1f, 0xa1, 0x33, 0x46, 0x1d, 0x2f, 0xe6, 0x11, 0x57, 0x3a, 0xe3, 0x57, 0xb8,
777 0xeb, 0x34, 0x9b, 0x2c, 0xa7, 0x5e, 0x58, 0xb1, 0xde, 0xc1, 0xf1, 0x5f, 0x2c, 0x13, 0xe0, 0x39,
778 0x78, 0x85, 0x15, 0xeb, 0x08, 0x6e, 0xb2, 0x16, 0xc2, 0x1b, 0xe8, 0xb0, 0x07, 0x0a, 0xd1, 0xec,
779 0xe4, 0xfe, 0xd9, 0xe9, 0x04, 0x8e, 0xd9, 0xf6, 0x88, 0xe1, 0x7b, 0x20, 0x4c, 0x67, 0xd2, 0xdc,
780 0x81, 0x6d, 0x01, 0x9c, 0xfb, 0x02, 0x34, 0x26, 0x7a, 0x04, 0x41, 0x83, 0x63, 0xf0, 0x14, 0xda,
781 0x4c, 0x8b, 0xea, 0x7e, 0xfa, 0xbf, 0xcd, 0xf8, 0xf0, 0x2e, 0xe5, 0x1a, 0x63, 0xe0, 0xdf, 0xea,
782 0xfb, 0xf8, 0x41, 0x28, 0xcd, 0xb3, 0xf9, 0xff, 0xd3, 0xc9, 0x29, 0x1c, 0xd8, 0x59, 0x75, 0xdd,
783 0x7a, 0x69, 0x55, 0x87, 0xaf, 0xeb, 0x5b, 0xbc, 0xee, 0x61, 0xbe, 0xec, 0x29, 0x1c, 0xdc, 0x18,
784 0xcd, 0x8c, 0x68, 0x55, 0x9f, 0x79, 0x5f, 0xf7, 0xcd, 0x5f, 0xe2, 0x77, 0x00, 0x00, 0x00, 0xff,
785 0xff, 0x6e, 0xbc, 0xe0, 0x61, 0x5c, 0x04, 0x00, 0x00,
786}
diff --git a/vendor/google.golang.org/appengine/internal/modules/modules_service.proto b/vendor/google.golang.org/appengine/internal/modules/modules_service.proto
new file mode 100644
index 0000000..d29f006
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/modules/modules_service.proto
@@ -0,0 +1,80 @@
1syntax = "proto2";
2option go_package = "modules";
3
4package appengine;
5
6message ModulesServiceError {
7 enum ErrorCode {
8 OK = 0;
9 INVALID_MODULE = 1;
10 INVALID_VERSION = 2;
11 INVALID_INSTANCES = 3;
12 TRANSIENT_ERROR = 4;
13 UNEXPECTED_STATE = 5;
14 }
15}
16
17message GetModulesRequest {
18}
19
20message GetModulesResponse {
21 repeated string module = 1;
22}
23
24message GetVersionsRequest {
25 optional string module = 1;
26}
27
28message GetVersionsResponse {
29 repeated string version = 1;
30}
31
32message GetDefaultVersionRequest {
33 optional string module = 1;
34}
35
36message GetDefaultVersionResponse {
37 required string version = 1;
38}
39
40message GetNumInstancesRequest {
41 optional string module = 1;
42 optional string version = 2;
43}
44
45message GetNumInstancesResponse {
46 required int64 instances = 1;
47}
48
49message SetNumInstancesRequest {
50 optional string module = 1;
51 optional string version = 2;
52 required int64 instances = 3;
53}
54
55message SetNumInstancesResponse {}
56
57message StartModuleRequest {
58 required string module = 1;
59 required string version = 2;
60}
61
62message StartModuleResponse {}
63
64message StopModuleRequest {
65 optional string module = 1;
66 optional string version = 2;
67}
68
69message StopModuleResponse {}
70
71message GetHostnameRequest {
72 optional string module = 1;
73 optional string version = 2;
74 optional string instance = 3;
75}
76
77message GetHostnameResponse {
78 required string hostname = 1;
79}
80
diff --git a/vendor/google.golang.org/appengine/internal/net.go b/vendor/google.golang.org/appengine/internal/net.go
new file mode 100644
index 0000000..3b94cf0
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/net.go
@@ -0,0 +1,56 @@
1// Copyright 2014 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package internal
6
7// This file implements a network dialer that limits the number of concurrent connections.
8// It is only used for API calls.
9
10import (
11 "log"
12 "net"
13 "runtime"
14 "sync"
15 "time"
16)
17
18var limitSem = make(chan int, 100) // TODO(dsymonds): Use environment variable.
19
20func limitRelease() {
21 // non-blocking
22 select {
23 case <-limitSem:
24 default:
25 // This should not normally happen.
26 log.Print("appengine: unbalanced limitSem release!")
27 }
28}
29
30func limitDial(network, addr string) (net.Conn, error) {
31 limitSem <- 1
32
33 // Dial with a timeout in case the API host is MIA.
34 // The connection should normally be very fast.
35 conn, err := net.DialTimeout(network, addr, 500*time.Millisecond)
36 if err != nil {
37 limitRelease()
38 return nil, err
39 }
40 lc := &limitConn{Conn: conn}
41 runtime.SetFinalizer(lc, (*limitConn).Close) // shouldn't usually be required
42 return lc, nil
43}
44
45type limitConn struct {
46 close sync.Once
47 net.Conn
48}
49
50func (lc *limitConn) Close() error {
51 defer lc.close.Do(func() {
52 limitRelease()
53 runtime.SetFinalizer(lc, nil)
54 })
55 return lc.Conn.Close()
56}
diff --git a/vendor/google.golang.org/appengine/internal/regen.sh b/vendor/google.golang.org/appengine/internal/regen.sh
new file mode 100644
index 0000000..2fdb546
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/regen.sh
@@ -0,0 +1,40 @@
1#!/bin/bash -e
2#
3# This script rebuilds the generated code for the protocol buffers.
4# To run this you will need protoc and goprotobuf installed;
5# see https://github.com/golang/protobuf for instructions.
6
7PKG=google.golang.org/appengine
8
9function die() {
10 echo 1>&2 $*
11 exit 1
12}
13
14# Sanity check that the right tools are accessible.
15for tool in go protoc protoc-gen-go; do
16 q=$(which $tool) || die "didn't find $tool"
17 echo 1>&2 "$tool: $q"
18done
19
20echo -n 1>&2 "finding package dir... "
21pkgdir=$(go list -f '{{.Dir}}' $PKG)
22echo 1>&2 $pkgdir
23base=$(echo $pkgdir | sed "s,/$PKG\$,,")
24echo 1>&2 "base: $base"
25cd $base
26
27# Run protoc once per package.
28for dir in $(find $PKG/internal -name '*.proto' | xargs dirname | sort | uniq); do
29 echo 1>&2 "* $dir"
30 protoc --go_out=. $dir/*.proto
31done
32
33for f in $(find $PKG/internal -name '*.pb.go'); do
34 # Remove proto.RegisterEnum calls.
35 # These cause duplicate registration panics when these packages
36 # are used on classic App Engine. proto.RegisterEnum only affects
37 # parsing the text format; we don't care about that.
38 # https://code.google.com/p/googleappengine/issues/detail?id=11670#c17
39 sed -i '/proto.RegisterEnum/d' $f
40done
diff --git a/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go
new file mode 100644
index 0000000..8d782a3
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go
@@ -0,0 +1,361 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/remote_api/remote_api.proto
3
4package remote_api
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type RpcError_ErrorCode int32
22
23const (
24 RpcError_UNKNOWN RpcError_ErrorCode = 0
25 RpcError_CALL_NOT_FOUND RpcError_ErrorCode = 1
26 RpcError_PARSE_ERROR RpcError_ErrorCode = 2
27 RpcError_SECURITY_VIOLATION RpcError_ErrorCode = 3
28 RpcError_OVER_QUOTA RpcError_ErrorCode = 4
29 RpcError_REQUEST_TOO_LARGE RpcError_ErrorCode = 5
30 RpcError_CAPABILITY_DISABLED RpcError_ErrorCode = 6
31 RpcError_FEATURE_DISABLED RpcError_ErrorCode = 7
32 RpcError_BAD_REQUEST RpcError_ErrorCode = 8
33 RpcError_RESPONSE_TOO_LARGE RpcError_ErrorCode = 9
34 RpcError_CANCELLED RpcError_ErrorCode = 10
35 RpcError_REPLAY_ERROR RpcError_ErrorCode = 11
36 RpcError_DEADLINE_EXCEEDED RpcError_ErrorCode = 12
37)
38
39var RpcError_ErrorCode_name = map[int32]string{
40 0: "UNKNOWN",
41 1: "CALL_NOT_FOUND",
42 2: "PARSE_ERROR",
43 3: "SECURITY_VIOLATION",
44 4: "OVER_QUOTA",
45 5: "REQUEST_TOO_LARGE",
46 6: "CAPABILITY_DISABLED",
47 7: "FEATURE_DISABLED",
48 8: "BAD_REQUEST",
49 9: "RESPONSE_TOO_LARGE",
50 10: "CANCELLED",
51 11: "REPLAY_ERROR",
52 12: "DEADLINE_EXCEEDED",
53}
54var RpcError_ErrorCode_value = map[string]int32{
55 "UNKNOWN": 0,
56 "CALL_NOT_FOUND": 1,
57 "PARSE_ERROR": 2,
58 "SECURITY_VIOLATION": 3,
59 "OVER_QUOTA": 4,
60 "REQUEST_TOO_LARGE": 5,
61 "CAPABILITY_DISABLED": 6,
62 "FEATURE_DISABLED": 7,
63 "BAD_REQUEST": 8,
64 "RESPONSE_TOO_LARGE": 9,
65 "CANCELLED": 10,
66 "REPLAY_ERROR": 11,
67 "DEADLINE_EXCEEDED": 12,
68}
69
70func (x RpcError_ErrorCode) Enum() *RpcError_ErrorCode {
71 p := new(RpcError_ErrorCode)
72 *p = x
73 return p
74}
75func (x RpcError_ErrorCode) String() string {
76 return proto.EnumName(RpcError_ErrorCode_name, int32(x))
77}
78func (x *RpcError_ErrorCode) UnmarshalJSON(data []byte) error {
79 value, err := proto.UnmarshalJSONEnum(RpcError_ErrorCode_value, data, "RpcError_ErrorCode")
80 if err != nil {
81 return err
82 }
83 *x = RpcError_ErrorCode(value)
84 return nil
85}
86func (RpcError_ErrorCode) EnumDescriptor() ([]byte, []int) {
87 return fileDescriptor_remote_api_1978114ec33a273d, []int{2, 0}
88}
89
90type Request struct {
91 ServiceName *string `protobuf:"bytes,2,req,name=service_name,json=serviceName" json:"service_name,omitempty"`
92 Method *string `protobuf:"bytes,3,req,name=method" json:"method,omitempty"`
93 Request []byte `protobuf:"bytes,4,req,name=request" json:"request,omitempty"`
94 RequestId *string `protobuf:"bytes,5,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
95 XXX_NoUnkeyedLiteral struct{} `json:"-"`
96 XXX_unrecognized []byte `json:"-"`
97 XXX_sizecache int32 `json:"-"`
98}
99
100func (m *Request) Reset() { *m = Request{} }
101func (m *Request) String() string { return proto.CompactTextString(m) }
102func (*Request) ProtoMessage() {}
103func (*Request) Descriptor() ([]byte, []int) {
104 return fileDescriptor_remote_api_1978114ec33a273d, []int{0}
105}
106func (m *Request) XXX_Unmarshal(b []byte) error {
107 return xxx_messageInfo_Request.Unmarshal(m, b)
108}
109func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
110 return xxx_messageInfo_Request.Marshal(b, m, deterministic)
111}
112func (dst *Request) XXX_Merge(src proto.Message) {
113 xxx_messageInfo_Request.Merge(dst, src)
114}
115func (m *Request) XXX_Size() int {
116 return xxx_messageInfo_Request.Size(m)
117}
118func (m *Request) XXX_DiscardUnknown() {
119 xxx_messageInfo_Request.DiscardUnknown(m)
120}
121
122var xxx_messageInfo_Request proto.InternalMessageInfo
123
124func (m *Request) GetServiceName() string {
125 if m != nil && m.ServiceName != nil {
126 return *m.ServiceName
127 }
128 return ""
129}
130
131func (m *Request) GetMethod() string {
132 if m != nil && m.Method != nil {
133 return *m.Method
134 }
135 return ""
136}
137
138func (m *Request) GetRequest() []byte {
139 if m != nil {
140 return m.Request
141 }
142 return nil
143}
144
145func (m *Request) GetRequestId() string {
146 if m != nil && m.RequestId != nil {
147 return *m.RequestId
148 }
149 return ""
150}
151
152type ApplicationError struct {
153 Code *int32 `protobuf:"varint,1,req,name=code" json:"code,omitempty"`
154 Detail *string `protobuf:"bytes,2,req,name=detail" json:"detail,omitempty"`
155 XXX_NoUnkeyedLiteral struct{} `json:"-"`
156 XXX_unrecognized []byte `json:"-"`
157 XXX_sizecache int32 `json:"-"`
158}
159
160func (m *ApplicationError) Reset() { *m = ApplicationError{} }
161func (m *ApplicationError) String() string { return proto.CompactTextString(m) }
162func (*ApplicationError) ProtoMessage() {}
163func (*ApplicationError) Descriptor() ([]byte, []int) {
164 return fileDescriptor_remote_api_1978114ec33a273d, []int{1}
165}
166func (m *ApplicationError) XXX_Unmarshal(b []byte) error {
167 return xxx_messageInfo_ApplicationError.Unmarshal(m, b)
168}
169func (m *ApplicationError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
170 return xxx_messageInfo_ApplicationError.Marshal(b, m, deterministic)
171}
172func (dst *ApplicationError) XXX_Merge(src proto.Message) {
173 xxx_messageInfo_ApplicationError.Merge(dst, src)
174}
175func (m *ApplicationError) XXX_Size() int {
176 return xxx_messageInfo_ApplicationError.Size(m)
177}
178func (m *ApplicationError) XXX_DiscardUnknown() {
179 xxx_messageInfo_ApplicationError.DiscardUnknown(m)
180}
181
182var xxx_messageInfo_ApplicationError proto.InternalMessageInfo
183
184func (m *ApplicationError) GetCode() int32 {
185 if m != nil && m.Code != nil {
186 return *m.Code
187 }
188 return 0
189}
190
191func (m *ApplicationError) GetDetail() string {
192 if m != nil && m.Detail != nil {
193 return *m.Detail
194 }
195 return ""
196}
197
198type RpcError struct {
199 Code *int32 `protobuf:"varint,1,req,name=code" json:"code,omitempty"`
200 Detail *string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"`
201 XXX_NoUnkeyedLiteral struct{} `json:"-"`
202 XXX_unrecognized []byte `json:"-"`
203 XXX_sizecache int32 `json:"-"`
204}
205
206func (m *RpcError) Reset() { *m = RpcError{} }
207func (m *RpcError) String() string { return proto.CompactTextString(m) }
208func (*RpcError) ProtoMessage() {}
209func (*RpcError) Descriptor() ([]byte, []int) {
210 return fileDescriptor_remote_api_1978114ec33a273d, []int{2}
211}
212func (m *RpcError) XXX_Unmarshal(b []byte) error {
213 return xxx_messageInfo_RpcError.Unmarshal(m, b)
214}
215func (m *RpcError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
216 return xxx_messageInfo_RpcError.Marshal(b, m, deterministic)
217}
218func (dst *RpcError) XXX_Merge(src proto.Message) {
219 xxx_messageInfo_RpcError.Merge(dst, src)
220}
221func (m *RpcError) XXX_Size() int {
222 return xxx_messageInfo_RpcError.Size(m)
223}
224func (m *RpcError) XXX_DiscardUnknown() {
225 xxx_messageInfo_RpcError.DiscardUnknown(m)
226}
227
228var xxx_messageInfo_RpcError proto.InternalMessageInfo
229
230func (m *RpcError) GetCode() int32 {
231 if m != nil && m.Code != nil {
232 return *m.Code
233 }
234 return 0
235}
236
237func (m *RpcError) GetDetail() string {
238 if m != nil && m.Detail != nil {
239 return *m.Detail
240 }
241 return ""
242}
243
244type Response struct {
245 Response []byte `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
246 Exception []byte `protobuf:"bytes,2,opt,name=exception" json:"exception,omitempty"`
247 ApplicationError *ApplicationError `protobuf:"bytes,3,opt,name=application_error,json=applicationError" json:"application_error,omitempty"`
248 JavaException []byte `protobuf:"bytes,4,opt,name=java_exception,json=javaException" json:"java_exception,omitempty"`
249 RpcError *RpcError `protobuf:"bytes,5,opt,name=rpc_error,json=rpcError" json:"rpc_error,omitempty"`
250 XXX_NoUnkeyedLiteral struct{} `json:"-"`
251 XXX_unrecognized []byte `json:"-"`
252 XXX_sizecache int32 `json:"-"`
253}
254
255func (m *Response) Reset() { *m = Response{} }
256func (m *Response) String() string { return proto.CompactTextString(m) }
257func (*Response) ProtoMessage() {}
258func (*Response) Descriptor() ([]byte, []int) {
259 return fileDescriptor_remote_api_1978114ec33a273d, []int{3}
260}
261func (m *Response) XXX_Unmarshal(b []byte) error {
262 return xxx_messageInfo_Response.Unmarshal(m, b)
263}
264func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
265 return xxx_messageInfo_Response.Marshal(b, m, deterministic)
266}
267func (dst *Response) XXX_Merge(src proto.Message) {
268 xxx_messageInfo_Response.Merge(dst, src)
269}
270func (m *Response) XXX_Size() int {
271 return xxx_messageInfo_Response.Size(m)
272}
273func (m *Response) XXX_DiscardUnknown() {
274 xxx_messageInfo_Response.DiscardUnknown(m)
275}
276
277var xxx_messageInfo_Response proto.InternalMessageInfo
278
279func (m *Response) GetResponse() []byte {
280 if m != nil {
281 return m.Response
282 }
283 return nil
284}
285
286func (m *Response) GetException() []byte {
287 if m != nil {
288 return m.Exception
289 }
290 return nil
291}
292
293func (m *Response) GetApplicationError() *ApplicationError {
294 if m != nil {
295 return m.ApplicationError
296 }
297 return nil
298}
299
300func (m *Response) GetJavaException() []byte {
301 if m != nil {
302 return m.JavaException
303 }
304 return nil
305}
306
307func (m *Response) GetRpcError() *RpcError {
308 if m != nil {
309 return m.RpcError
310 }
311 return nil
312}
313
314func init() {
315 proto.RegisterType((*Request)(nil), "remote_api.Request")
316 proto.RegisterType((*ApplicationError)(nil), "remote_api.ApplicationError")
317 proto.RegisterType((*RpcError)(nil), "remote_api.RpcError")
318 proto.RegisterType((*Response)(nil), "remote_api.Response")
319}
320
321func init() {
322 proto.RegisterFile("google.golang.org/appengine/internal/remote_api/remote_api.proto", fileDescriptor_remote_api_1978114ec33a273d)
323}
324
325var fileDescriptor_remote_api_1978114ec33a273d = []byte{
326 // 531 bytes of a gzipped FileDescriptorProto
327 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x51, 0x6e, 0xd3, 0x40,
328 0x10, 0x86, 0xb1, 0x9b, 0x34, 0xf1, 0xc4, 0x2d, 0xdb, 0xa5, 0x14, 0x0b, 0x15, 0x29, 0x44, 0x42,
329 0xca, 0x53, 0x2a, 0x38, 0x00, 0x62, 0x63, 0x6f, 0x91, 0x85, 0x65, 0xa7, 0x6b, 0xbb, 0x50, 0x5e,
330 0x56, 0x2b, 0x67, 0x65, 0x8c, 0x12, 0xaf, 0xd9, 0x98, 0x8a, 0x17, 0x6e, 0xc0, 0xb5, 0x38, 0x0c,
331 0xb7, 0x40, 0x36, 0x6e, 0x63, 0xf5, 0x89, 0xb7, 0x7f, 0x7e, 0x7b, 0xe6, 0x1b, 0xcd, 0xcc, 0xc2,
332 0xbb, 0x5c, 0xa9, 0x7c, 0x23, 0x17, 0xb9, 0xda, 0x88, 0x32, 0x5f, 0x28, 0x9d, 0x5f, 0x88, 0xaa,
333 0x92, 0x65, 0x5e, 0x94, 0xf2, 0xa2, 0x28, 0x6b, 0xa9, 0x4b, 0xb1, 0xb9, 0xd0, 0x72, 0xab, 0x6a,
334 0xc9, 0x45, 0x55, 0xf4, 0xe4, 0xa2, 0xd2, 0xaa, 0x56, 0x18, 0xf6, 0xce, 0xec, 0x27, 0x8c, 0x98,
335 0xfc, 0xf6, 0x5d, 0xee, 0x6a, 0xfc, 0x12, 0xec, 0x9d, 0xd4, 0xb7, 0x45, 0x26, 0x79, 0x29, 0xb6,
336 0xd2, 0x31, 0xa7, 0xe6, 0xdc, 0x62, 0x93, 0xce, 0x0b, 0xc5, 0x56, 0xe2, 0x33, 0x38, 0xdc, 0xca,
337 0xfa, 0x8b, 0x5a, 0x3b, 0x07, 0xed, 0xc7, 0x2e, 0xc2, 0x0e, 0x8c, 0xf4, 0xbf, 0x2a, 0xce, 0x60,
338 0x6a, 0xce, 0x6d, 0x76, 0x17, 0xe2, 0x17, 0x00, 0x9d, 0xe4, 0xc5, 0xda, 0x19, 0x4e, 0x8d, 0xb9,
339 0xc5, 0xac, 0xce, 0xf1, 0xd7, 0xb3, 0xb7, 0x80, 0x48, 0x55, 0x6d, 0x8a, 0x4c, 0xd4, 0x85, 0x2a,
340 0xa9, 0xd6, 0x4a, 0x63, 0x0c, 0x83, 0x4c, 0xad, 0xa5, 0x63, 0x4c, 0xcd, 0xf9, 0x90, 0xb5, 0xba,
341 0x01, 0xaf, 0x65, 0x2d, 0x8a, 0x4d, 0xd7, 0x55, 0x17, 0xcd, 0x7e, 0x9b, 0x30, 0x66, 0x55, 0xf6,
342 0x7f, 0x89, 0x46, 0x2f, 0xf1, 0x97, 0x09, 0x56, 0x9b, 0xe5, 0x36, 0x7f, 0x4d, 0x60, 0x94, 0x86,
343 0x1f, 0xc2, 0xe8, 0x63, 0x88, 0x1e, 0x61, 0x0c, 0xc7, 0x2e, 0x09, 0x02, 0x1e, 0x46, 0x09, 0xbf,
344 0x8c, 0xd2, 0xd0, 0x43, 0x06, 0x7e, 0x0c, 0x93, 0x15, 0x61, 0x31, 0xe5, 0x94, 0xb1, 0x88, 0x21,
345 0x13, 0x9f, 0x01, 0x8e, 0xa9, 0x9b, 0x32, 0x3f, 0xb9, 0xe1, 0xd7, 0x7e, 0x14, 0x90, 0xc4, 0x8f,
346 0x42, 0x74, 0x80, 0x8f, 0x01, 0xa2, 0x6b, 0xca, 0xf8, 0x55, 0x1a, 0x25, 0x04, 0x0d, 0xf0, 0x53,
347 0x38, 0x61, 0xf4, 0x2a, 0xa5, 0x71, 0xc2, 0x93, 0x28, 0xe2, 0x01, 0x61, 0xef, 0x29, 0x1a, 0xe2,
348 0x67, 0xf0, 0xc4, 0x25, 0x2b, 0xb2, 0xf4, 0x83, 0xa6, 0x80, 0xe7, 0xc7, 0x64, 0x19, 0x50, 0x0f,
349 0x1d, 0xe2, 0x53, 0x40, 0x97, 0x94, 0x24, 0x29, 0xa3, 0x7b, 0x77, 0xd4, 0xe0, 0x97, 0xc4, 0xe3,
350 0x5d, 0x25, 0x34, 0x6e, 0xf0, 0x8c, 0xc6, 0xab, 0x28, 0x8c, 0x69, 0xaf, 0xae, 0x85, 0x8f, 0xc0,
351 0x72, 0x49, 0xe8, 0xd2, 0xa0, 0xc9, 0x03, 0x8c, 0xc0, 0x66, 0x74, 0x15, 0x90, 0x9b, 0xae, 0xef,
352 0x49, 0xd3, 0x8f, 0x47, 0x89, 0x17, 0xf8, 0x21, 0xe5, 0xf4, 0x93, 0x4b, 0xa9, 0x47, 0x3d, 0x64,
353 0xcf, 0xfe, 0x18, 0x30, 0x66, 0x72, 0x57, 0xa9, 0x72, 0x27, 0xf1, 0x73, 0x18, 0xeb, 0x4e, 0x3b,
354 0xc6, 0xd4, 0x98, 0xdb, 0xec, 0x3e, 0xc6, 0xe7, 0x60, 0xc9, 0x1f, 0x99, 0xac, 0x9a, 0x75, 0xb5,
355 0x23, 0xb5, 0xd9, 0xde, 0xc0, 0x3e, 0x9c, 0x88, 0xfd, 0x3a, 0xb9, 0x6c, 0x06, 0xec, 0x1c, 0x4c,
356 0x8d, 0xf9, 0xe4, 0xcd, 0xf9, 0xa2, 0x77, 0x87, 0x0f, 0x77, 0xce, 0x90, 0x78, 0x78, 0x05, 0xaf,
357 0xe0, 0xf8, 0xab, 0xb8, 0x15, 0x7c, 0x4f, 0x1b, 0xb4, 0xb4, 0xa3, 0xc6, 0xa5, 0xf7, 0xc4, 0xd7,
358 0x60, 0xe9, 0x2a, 0xeb, 0x48, 0xc3, 0x96, 0x74, 0xda, 0x27, 0xdd, 0x1d, 0x07, 0x1b, 0xeb, 0x4e,
359 0x2d, 0xed, 0xcf, 0xbd, 0x07, 0xf0, 0x37, 0x00, 0x00, 0xff, 0xff, 0x38, 0xd1, 0x0f, 0x22, 0x4f,
360 0x03, 0x00, 0x00,
361}
diff --git a/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
new file mode 100644
index 0000000..f21763a
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
@@ -0,0 +1,44 @@
1syntax = "proto2";
2option go_package = "remote_api";
3
4package remote_api;
5
6message Request {
7 required string service_name = 2;
8 required string method = 3;
9 required bytes request = 4;
10 optional string request_id = 5;
11}
12
13message ApplicationError {
14 required int32 code = 1;
15 required string detail = 2;
16}
17
18message RpcError {
19 enum ErrorCode {
20 UNKNOWN = 0;
21 CALL_NOT_FOUND = 1;
22 PARSE_ERROR = 2;
23 SECURITY_VIOLATION = 3;
24 OVER_QUOTA = 4;
25 REQUEST_TOO_LARGE = 5;
26 CAPABILITY_DISABLED = 6;
27 FEATURE_DISABLED = 7;
28 BAD_REQUEST = 8;
29 RESPONSE_TOO_LARGE = 9;
30 CANCELLED = 10;
31 REPLAY_ERROR = 11;
32 DEADLINE_EXCEEDED = 12;
33 }
34 required int32 code = 1;
35 optional string detail = 2;
36}
37
38message Response {
39 optional bytes response = 1;
40 optional bytes exception = 2;
41 optional ApplicationError application_error = 3;
42 optional bytes java_exception = 4;
43 optional RpcError rpc_error = 5;
44}
diff --git a/vendor/google.golang.org/appengine/internal/transaction.go b/vendor/google.golang.org/appengine/internal/transaction.go
new file mode 100644
index 0000000..9006ae6
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/transaction.go
@@ -0,0 +1,115 @@
1// Copyright 2014 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package internal
6
7// This file implements hooks for applying datastore transactions.
8
9import (
10 "errors"
11 "reflect"
12
13 "github.com/golang/protobuf/proto"
14 netcontext "golang.org/x/net/context"
15
16 basepb "google.golang.org/appengine/internal/base"
17 pb "google.golang.org/appengine/internal/datastore"
18)
19
20var transactionSetters = make(map[reflect.Type]reflect.Value)
21
22// RegisterTransactionSetter registers a function that sets transaction information
23// in a protocol buffer message. f should be a function with two arguments,
24// the first being a protocol buffer type, and the second being *datastore.Transaction.
25func RegisterTransactionSetter(f interface{}) {
26 v := reflect.ValueOf(f)
27 transactionSetters[v.Type().In(0)] = v
28}
29
30// applyTransaction applies the transaction t to message pb
31// by using the relevant setter passed to RegisterTransactionSetter.
32func applyTransaction(pb proto.Message, t *pb.Transaction) {
33 v := reflect.ValueOf(pb)
34 if f, ok := transactionSetters[v.Type()]; ok {
35 f.Call([]reflect.Value{v, reflect.ValueOf(t)})
36 }
37}
38
39var transactionKey = "used for *Transaction"
40
41func transactionFromContext(ctx netcontext.Context) *transaction {
42 t, _ := ctx.Value(&transactionKey).(*transaction)
43 return t
44}
45
46func withTransaction(ctx netcontext.Context, t *transaction) netcontext.Context {
47 return netcontext.WithValue(ctx, &transactionKey, t)
48}
49
50type transaction struct {
51 transaction pb.Transaction
52 finished bool
53}
54
55var ErrConcurrentTransaction = errors.New("internal: concurrent transaction")
56
57func RunTransactionOnce(c netcontext.Context, f func(netcontext.Context) error, xg bool, readOnly bool, previousTransaction *pb.Transaction) (*pb.Transaction, error) {
58 if transactionFromContext(c) != nil {
59 return nil, errors.New("nested transactions are not supported")
60 }
61
62 // Begin the transaction.
63 t := &transaction{}
64 req := &pb.BeginTransactionRequest{
65 App: proto.String(FullyQualifiedAppID(c)),
66 }
67 if xg {
68 req.AllowMultipleEg = proto.Bool(true)
69 }
70 if previousTransaction != nil {
71 req.PreviousTransaction = previousTransaction
72 }
73 if readOnly {
74 req.Mode = pb.BeginTransactionRequest_READ_ONLY.Enum()
75 } else {
76 req.Mode = pb.BeginTransactionRequest_READ_WRITE.Enum()
77 }
78 if err := Call(c, "datastore_v3", "BeginTransaction", req, &t.transaction); err != nil {
79 return nil, err
80 }
81
82 // Call f, rolling back the transaction if f returns a non-nil error, or panics.
83 // The panic is not recovered.
84 defer func() {
85 if t.finished {
86 return
87 }
88 t.finished = true
89 // Ignore the error return value, since we are already returning a non-nil
90 // error (or we're panicking).
91 Call(c, "datastore_v3", "Rollback", &t.transaction, &basepb.VoidProto{})
92 }()
93 if err := f(withTransaction(c, t)); err != nil {
94 return &t.transaction, err
95 }
96 t.finished = true
97
98 // Commit the transaction.
99 res := &pb.CommitResponse{}
100 err := Call(c, "datastore_v3", "Commit", &t.transaction, res)
101 if ae, ok := err.(*APIError); ok {
102 /* TODO: restore this conditional
103 if appengine.IsDevAppServer() {
104 */
105 // The Python Dev AppServer raises an ApplicationError with error code 2 (which is
106 // Error.CONCURRENT_TRANSACTION) and message "Concurrency exception.".
107 if ae.Code == int32(pb.Error_BAD_REQUEST) && ae.Detail == "ApplicationError: 2 Concurrency exception." {
108 return &t.transaction, ErrConcurrentTransaction
109 }
110 if ae.Code == int32(pb.Error_CONCURRENT_TRANSACTION) {
111 return &t.transaction, ErrConcurrentTransaction
112 }
113 }
114 return &t.transaction, err
115}
diff --git a/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go
new file mode 100644
index 0000000..5f72775
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go
@@ -0,0 +1,527 @@
1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
3
4package urlfetch
5
6import proto "github.com/golang/protobuf/proto"
7import fmt "fmt"
8import math "math"
9
10// Reference imports to suppress errors if they are not otherwise used.
11var _ = proto.Marshal
12var _ = fmt.Errorf
13var _ = math.Inf
14
15// This is a compile-time assertion to ensure that this generated file
16// is compatible with the proto package it is being compiled against.
17// A compilation error at this line likely means your copy of the
18// proto package needs to be updated.
19const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
20
21type URLFetchServiceError_ErrorCode int32
22
23const (
24 URLFetchServiceError_OK URLFetchServiceError_ErrorCode = 0
25 URLFetchServiceError_INVALID_URL URLFetchServiceError_ErrorCode = 1
26 URLFetchServiceError_FETCH_ERROR URLFetchServiceError_ErrorCode = 2
27 URLFetchServiceError_UNSPECIFIED_ERROR URLFetchServiceError_ErrorCode = 3
28 URLFetchServiceError_RESPONSE_TOO_LARGE URLFetchServiceError_ErrorCode = 4
29 URLFetchServiceError_DEADLINE_EXCEEDED URLFetchServiceError_ErrorCode = 5
30 URLFetchServiceError_SSL_CERTIFICATE_ERROR URLFetchServiceError_ErrorCode = 6
31 URLFetchServiceError_DNS_ERROR URLFetchServiceError_ErrorCode = 7
32 URLFetchServiceError_CLOSED URLFetchServiceError_ErrorCode = 8
33 URLFetchServiceError_INTERNAL_TRANSIENT_ERROR URLFetchServiceError_ErrorCode = 9
34 URLFetchServiceError_TOO_MANY_REDIRECTS URLFetchServiceError_ErrorCode = 10
35 URLFetchServiceError_MALFORMED_REPLY URLFetchServiceError_ErrorCode = 11
36 URLFetchServiceError_CONNECTION_ERROR URLFetchServiceError_ErrorCode = 12
37)
38
39var URLFetchServiceError_ErrorCode_name = map[int32]string{
40 0: "OK",
41 1: "INVALID_URL",
42 2: "FETCH_ERROR",
43 3: "UNSPECIFIED_ERROR",
44 4: "RESPONSE_TOO_LARGE",
45 5: "DEADLINE_EXCEEDED",
46 6: "SSL_CERTIFICATE_ERROR",
47 7: "DNS_ERROR",
48 8: "CLOSED",
49 9: "INTERNAL_TRANSIENT_ERROR",
50 10: "TOO_MANY_REDIRECTS",
51 11: "MALFORMED_REPLY",
52 12: "CONNECTION_ERROR",
53}
54var URLFetchServiceError_ErrorCode_value = map[string]int32{
55 "OK": 0,
56 "INVALID_URL": 1,
57 "FETCH_ERROR": 2,
58 "UNSPECIFIED_ERROR": 3,
59 "RESPONSE_TOO_LARGE": 4,
60 "DEADLINE_EXCEEDED": 5,
61 "SSL_CERTIFICATE_ERROR": 6,
62 "DNS_ERROR": 7,
63 "CLOSED": 8,
64 "INTERNAL_TRANSIENT_ERROR": 9,
65 "TOO_MANY_REDIRECTS": 10,
66 "MALFORMED_REPLY": 11,
67 "CONNECTION_ERROR": 12,
68}
69
70func (x URLFetchServiceError_ErrorCode) Enum() *URLFetchServiceError_ErrorCode {
71 p := new(URLFetchServiceError_ErrorCode)
72 *p = x
73 return p
74}
75func (x URLFetchServiceError_ErrorCode) String() string {
76 return proto.EnumName(URLFetchServiceError_ErrorCode_name, int32(x))
77}
78func (x *URLFetchServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
79 value, err := proto.UnmarshalJSONEnum(URLFetchServiceError_ErrorCode_value, data, "URLFetchServiceError_ErrorCode")
80 if err != nil {
81 return err
82 }
83 *x = URLFetchServiceError_ErrorCode(value)
84 return nil
85}
86func (URLFetchServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
87 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{0, 0}
88}
89
90type URLFetchRequest_RequestMethod int32
91
92const (
93 URLFetchRequest_GET URLFetchRequest_RequestMethod = 1
94 URLFetchRequest_POST URLFetchRequest_RequestMethod = 2
95 URLFetchRequest_HEAD URLFetchRequest_RequestMethod = 3
96 URLFetchRequest_PUT URLFetchRequest_RequestMethod = 4
97 URLFetchRequest_DELETE URLFetchRequest_RequestMethod = 5
98 URLFetchRequest_PATCH URLFetchRequest_RequestMethod = 6
99)
100
101var URLFetchRequest_RequestMethod_name = map[int32]string{
102 1: "GET",
103 2: "POST",
104 3: "HEAD",
105 4: "PUT",
106 5: "DELETE",
107 6: "PATCH",
108}
109var URLFetchRequest_RequestMethod_value = map[string]int32{
110 "GET": 1,
111 "POST": 2,
112 "HEAD": 3,
113 "PUT": 4,
114 "DELETE": 5,
115 "PATCH": 6,
116}
117
118func (x URLFetchRequest_RequestMethod) Enum() *URLFetchRequest_RequestMethod {
119 p := new(URLFetchRequest_RequestMethod)
120 *p = x
121 return p
122}
123func (x URLFetchRequest_RequestMethod) String() string {
124 return proto.EnumName(URLFetchRequest_RequestMethod_name, int32(x))
125}
126func (x *URLFetchRequest_RequestMethod) UnmarshalJSON(data []byte) error {
127 value, err := proto.UnmarshalJSONEnum(URLFetchRequest_RequestMethod_value, data, "URLFetchRequest_RequestMethod")
128 if err != nil {
129 return err
130 }
131 *x = URLFetchRequest_RequestMethod(value)
132 return nil
133}
134func (URLFetchRequest_RequestMethod) EnumDescriptor() ([]byte, []int) {
135 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{1, 0}
136}
137
138type URLFetchServiceError struct {
139 XXX_NoUnkeyedLiteral struct{} `json:"-"`
140 XXX_unrecognized []byte `json:"-"`
141 XXX_sizecache int32 `json:"-"`
142}
143
144func (m *URLFetchServiceError) Reset() { *m = URLFetchServiceError{} }
145func (m *URLFetchServiceError) String() string { return proto.CompactTextString(m) }
146func (*URLFetchServiceError) ProtoMessage() {}
147func (*URLFetchServiceError) Descriptor() ([]byte, []int) {
148 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{0}
149}
150func (m *URLFetchServiceError) XXX_Unmarshal(b []byte) error {
151 return xxx_messageInfo_URLFetchServiceError.Unmarshal(m, b)
152}
153func (m *URLFetchServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
154 return xxx_messageInfo_URLFetchServiceError.Marshal(b, m, deterministic)
155}
156func (dst *URLFetchServiceError) XXX_Merge(src proto.Message) {
157 xxx_messageInfo_URLFetchServiceError.Merge(dst, src)
158}
159func (m *URLFetchServiceError) XXX_Size() int {
160 return xxx_messageInfo_URLFetchServiceError.Size(m)
161}
162func (m *URLFetchServiceError) XXX_DiscardUnknown() {
163 xxx_messageInfo_URLFetchServiceError.DiscardUnknown(m)
164}
165
166var xxx_messageInfo_URLFetchServiceError proto.InternalMessageInfo
167
168type URLFetchRequest struct {
169 Method *URLFetchRequest_RequestMethod `protobuf:"varint,1,req,name=Method,enum=appengine.URLFetchRequest_RequestMethod" json:"Method,omitempty"`
170 Url *string `protobuf:"bytes,2,req,name=Url" json:"Url,omitempty"`
171 Header []*URLFetchRequest_Header `protobuf:"group,3,rep,name=Header,json=header" json:"header,omitempty"`
172 Payload []byte `protobuf:"bytes,6,opt,name=Payload" json:"Payload,omitempty"`
173 FollowRedirects *bool `protobuf:"varint,7,opt,name=FollowRedirects,def=1" json:"FollowRedirects,omitempty"`
174 Deadline *float64 `protobuf:"fixed64,8,opt,name=Deadline" json:"Deadline,omitempty"`
175 MustValidateServerCertificate *bool `protobuf:"varint,9,opt,name=MustValidateServerCertificate,def=1" json:"MustValidateServerCertificate,omitempty"`
176 XXX_NoUnkeyedLiteral struct{} `json:"-"`
177 XXX_unrecognized []byte `json:"-"`
178 XXX_sizecache int32 `json:"-"`
179}
180
181func (m *URLFetchRequest) Reset() { *m = URLFetchRequest{} }
182func (m *URLFetchRequest) String() string { return proto.CompactTextString(m) }
183func (*URLFetchRequest) ProtoMessage() {}
184func (*URLFetchRequest) Descriptor() ([]byte, []int) {
185 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{1}
186}
187func (m *URLFetchRequest) XXX_Unmarshal(b []byte) error {
188 return xxx_messageInfo_URLFetchRequest.Unmarshal(m, b)
189}
190func (m *URLFetchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
191 return xxx_messageInfo_URLFetchRequest.Marshal(b, m, deterministic)
192}
193func (dst *URLFetchRequest) XXX_Merge(src proto.Message) {
194 xxx_messageInfo_URLFetchRequest.Merge(dst, src)
195}
196func (m *URLFetchRequest) XXX_Size() int {
197 return xxx_messageInfo_URLFetchRequest.Size(m)
198}
199func (m *URLFetchRequest) XXX_DiscardUnknown() {
200 xxx_messageInfo_URLFetchRequest.DiscardUnknown(m)
201}
202
203var xxx_messageInfo_URLFetchRequest proto.InternalMessageInfo
204
205const Default_URLFetchRequest_FollowRedirects bool = true
206const Default_URLFetchRequest_MustValidateServerCertificate bool = true
207
208func (m *URLFetchRequest) GetMethod() URLFetchRequest_RequestMethod {
209 if m != nil && m.Method != nil {
210 return *m.Method
211 }
212 return URLFetchRequest_GET
213}
214
215func (m *URLFetchRequest) GetUrl() string {
216 if m != nil && m.Url != nil {
217 return *m.Url
218 }
219 return ""
220}
221
222func (m *URLFetchRequest) GetHeader() []*URLFetchRequest_Header {
223 if m != nil {
224 return m.Header
225 }
226 return nil
227}
228
229func (m *URLFetchRequest) GetPayload() []byte {
230 if m != nil {
231 return m.Payload
232 }
233 return nil
234}
235
236func (m *URLFetchRequest) GetFollowRedirects() bool {
237 if m != nil && m.FollowRedirects != nil {
238 return *m.FollowRedirects
239 }
240 return Default_URLFetchRequest_FollowRedirects
241}
242
243func (m *URLFetchRequest) GetDeadline() float64 {
244 if m != nil && m.Deadline != nil {
245 return *m.Deadline
246 }
247 return 0
248}
249
250func (m *URLFetchRequest) GetMustValidateServerCertificate() bool {
251 if m != nil && m.MustValidateServerCertificate != nil {
252 return *m.MustValidateServerCertificate
253 }
254 return Default_URLFetchRequest_MustValidateServerCertificate
255}
256
257type URLFetchRequest_Header struct {
258 Key *string `protobuf:"bytes,4,req,name=Key" json:"Key,omitempty"`
259 Value *string `protobuf:"bytes,5,req,name=Value" json:"Value,omitempty"`
260 XXX_NoUnkeyedLiteral struct{} `json:"-"`
261 XXX_unrecognized []byte `json:"-"`
262 XXX_sizecache int32 `json:"-"`
263}
264
265func (m *URLFetchRequest_Header) Reset() { *m = URLFetchRequest_Header{} }
266func (m *URLFetchRequest_Header) String() string { return proto.CompactTextString(m) }
267func (*URLFetchRequest_Header) ProtoMessage() {}
268func (*URLFetchRequest_Header) Descriptor() ([]byte, []int) {
269 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{1, 0}
270}
271func (m *URLFetchRequest_Header) XXX_Unmarshal(b []byte) error {
272 return xxx_messageInfo_URLFetchRequest_Header.Unmarshal(m, b)
273}
274func (m *URLFetchRequest_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
275 return xxx_messageInfo_URLFetchRequest_Header.Marshal(b, m, deterministic)
276}
277func (dst *URLFetchRequest_Header) XXX_Merge(src proto.Message) {
278 xxx_messageInfo_URLFetchRequest_Header.Merge(dst, src)
279}
280func (m *URLFetchRequest_Header) XXX_Size() int {
281 return xxx_messageInfo_URLFetchRequest_Header.Size(m)
282}
283func (m *URLFetchRequest_Header) XXX_DiscardUnknown() {
284 xxx_messageInfo_URLFetchRequest_Header.DiscardUnknown(m)
285}
286
287var xxx_messageInfo_URLFetchRequest_Header proto.InternalMessageInfo
288
289func (m *URLFetchRequest_Header) GetKey() string {
290 if m != nil && m.Key != nil {
291 return *m.Key
292 }
293 return ""
294}
295
296func (m *URLFetchRequest_Header) GetValue() string {
297 if m != nil && m.Value != nil {
298 return *m.Value
299 }
300 return ""
301}
302
303type URLFetchResponse struct {
304 Content []byte `protobuf:"bytes,1,opt,name=Content" json:"Content,omitempty"`
305 StatusCode *int32 `protobuf:"varint,2,req,name=StatusCode" json:"StatusCode,omitempty"`
306 Header []*URLFetchResponse_Header `protobuf:"group,3,rep,name=Header,json=header" json:"header,omitempty"`
307 ContentWasTruncated *bool `protobuf:"varint,6,opt,name=ContentWasTruncated,def=0" json:"ContentWasTruncated,omitempty"`
308 ExternalBytesSent *int64 `protobuf:"varint,7,opt,name=ExternalBytesSent" json:"ExternalBytesSent,omitempty"`
309 ExternalBytesReceived *int64 `protobuf:"varint,8,opt,name=ExternalBytesReceived" json:"ExternalBytesReceived,omitempty"`
310 FinalUrl *string `protobuf:"bytes,9,opt,name=FinalUrl" json:"FinalUrl,omitempty"`
311 ApiCpuMilliseconds *int64 `protobuf:"varint,10,opt,name=ApiCpuMilliseconds,def=0" json:"ApiCpuMilliseconds,omitempty"`
312 ApiBytesSent *int64 `protobuf:"varint,11,opt,name=ApiBytesSent,def=0" json:"ApiBytesSent,omitempty"`
313 ApiBytesReceived *int64 `protobuf:"varint,12,opt,name=ApiBytesReceived,def=0" json:"ApiBytesReceived,omitempty"`
314 XXX_NoUnkeyedLiteral struct{} `json:"-"`
315 XXX_unrecognized []byte `json:"-"`
316 XXX_sizecache int32 `json:"-"`
317}
318
319func (m *URLFetchResponse) Reset() { *m = URLFetchResponse{} }
320func (m *URLFetchResponse) String() string { return proto.CompactTextString(m) }
321func (*URLFetchResponse) ProtoMessage() {}
322func (*URLFetchResponse) Descriptor() ([]byte, []int) {
323 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{2}
324}
325func (m *URLFetchResponse) XXX_Unmarshal(b []byte) error {
326 return xxx_messageInfo_URLFetchResponse.Unmarshal(m, b)
327}
328func (m *URLFetchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
329 return xxx_messageInfo_URLFetchResponse.Marshal(b, m, deterministic)
330}
331func (dst *URLFetchResponse) XXX_Merge(src proto.Message) {
332 xxx_messageInfo_URLFetchResponse.Merge(dst, src)
333}
334func (m *URLFetchResponse) XXX_Size() int {
335 return xxx_messageInfo_URLFetchResponse.Size(m)
336}
337func (m *URLFetchResponse) XXX_DiscardUnknown() {
338 xxx_messageInfo_URLFetchResponse.DiscardUnknown(m)
339}
340
341var xxx_messageInfo_URLFetchResponse proto.InternalMessageInfo
342
343const Default_URLFetchResponse_ContentWasTruncated bool = false
344const Default_URLFetchResponse_ApiCpuMilliseconds int64 = 0
345const Default_URLFetchResponse_ApiBytesSent int64 = 0
346const Default_URLFetchResponse_ApiBytesReceived int64 = 0
347
348func (m *URLFetchResponse) GetContent() []byte {
349 if m != nil {
350 return m.Content
351 }
352 return nil
353}
354
355func (m *URLFetchResponse) GetStatusCode() int32 {
356 if m != nil && m.StatusCode != nil {
357 return *m.StatusCode
358 }
359 return 0
360}
361
362func (m *URLFetchResponse) GetHeader() []*URLFetchResponse_Header {
363 if m != nil {
364 return m.Header
365 }
366 return nil
367}
368
369func (m *URLFetchResponse) GetContentWasTruncated() bool {
370 if m != nil && m.ContentWasTruncated != nil {
371 return *m.ContentWasTruncated
372 }
373 return Default_URLFetchResponse_ContentWasTruncated
374}
375
376func (m *URLFetchResponse) GetExternalBytesSent() int64 {
377 if m != nil && m.ExternalBytesSent != nil {
378 return *m.ExternalBytesSent
379 }
380 return 0
381}
382
383func (m *URLFetchResponse) GetExternalBytesReceived() int64 {
384 if m != nil && m.ExternalBytesReceived != nil {
385 return *m.ExternalBytesReceived
386 }
387 return 0
388}
389
390func (m *URLFetchResponse) GetFinalUrl() string {
391 if m != nil && m.FinalUrl != nil {
392 return *m.FinalUrl
393 }
394 return ""
395}
396
397func (m *URLFetchResponse) GetApiCpuMilliseconds() int64 {
398 if m != nil && m.ApiCpuMilliseconds != nil {
399 return *m.ApiCpuMilliseconds
400 }
401 return Default_URLFetchResponse_ApiCpuMilliseconds
402}
403
404func (m *URLFetchResponse) GetApiBytesSent() int64 {
405 if m != nil && m.ApiBytesSent != nil {
406 return *m.ApiBytesSent
407 }
408 return Default_URLFetchResponse_ApiBytesSent
409}
410
411func (m *URLFetchResponse) GetApiBytesReceived() int64 {
412 if m != nil && m.ApiBytesReceived != nil {
413 return *m.ApiBytesReceived
414 }
415 return Default_URLFetchResponse_ApiBytesReceived
416}
417
418type URLFetchResponse_Header struct {
419 Key *string `protobuf:"bytes,4,req,name=Key" json:"Key,omitempty"`
420 Value *string `protobuf:"bytes,5,req,name=Value" json:"Value,omitempty"`
421 XXX_NoUnkeyedLiteral struct{} `json:"-"`
422 XXX_unrecognized []byte `json:"-"`
423 XXX_sizecache int32 `json:"-"`
424}
425
426func (m *URLFetchResponse_Header) Reset() { *m = URLFetchResponse_Header{} }
427func (m *URLFetchResponse_Header) String() string { return proto.CompactTextString(m) }
428func (*URLFetchResponse_Header) ProtoMessage() {}
429func (*URLFetchResponse_Header) Descriptor() ([]byte, []int) {
430 return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{2, 0}
431}
432func (m *URLFetchResponse_Header) XXX_Unmarshal(b []byte) error {
433 return xxx_messageInfo_URLFetchResponse_Header.Unmarshal(m, b)
434}
435func (m *URLFetchResponse_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
436 return xxx_messageInfo_URLFetchResponse_Header.Marshal(b, m, deterministic)
437}
438func (dst *URLFetchResponse_Header) XXX_Merge(src proto.Message) {
439 xxx_messageInfo_URLFetchResponse_Header.Merge(dst, src)
440}
441func (m *URLFetchResponse_Header) XXX_Size() int {
442 return xxx_messageInfo_URLFetchResponse_Header.Size(m)
443}
444func (m *URLFetchResponse_Header) XXX_DiscardUnknown() {
445 xxx_messageInfo_URLFetchResponse_Header.DiscardUnknown(m)
446}
447
448var xxx_messageInfo_URLFetchResponse_Header proto.InternalMessageInfo
449
450func (m *URLFetchResponse_Header) GetKey() string {
451 if m != nil && m.Key != nil {
452 return *m.Key
453 }
454 return ""
455}
456
457func (m *URLFetchResponse_Header) GetValue() string {
458 if m != nil && m.Value != nil {
459 return *m.Value
460 }
461 return ""
462}
463
464func init() {
465 proto.RegisterType((*URLFetchServiceError)(nil), "appengine.URLFetchServiceError")
466 proto.RegisterType((*URLFetchRequest)(nil), "appengine.URLFetchRequest")
467 proto.RegisterType((*URLFetchRequest_Header)(nil), "appengine.URLFetchRequest.Header")
468 proto.RegisterType((*URLFetchResponse)(nil), "appengine.URLFetchResponse")
469 proto.RegisterType((*URLFetchResponse_Header)(nil), "appengine.URLFetchResponse.Header")
470}
471
472func init() {
473 proto.RegisterFile("google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto", fileDescriptor_urlfetch_service_b245a7065f33bced)
474}
475
476var fileDescriptor_urlfetch_service_b245a7065f33bced = []byte{
477 // 770 bytes of a gzipped FileDescriptorProto
478 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xdd, 0x6e, 0xe3, 0x54,
479 0x10, 0xc6, 0x76, 0x7e, 0xa7, 0x5d, 0x7a, 0x76, 0xb6, 0x45, 0x66, 0xb5, 0xa0, 0x10, 0x09, 0x29,
480 0x17, 0x90, 0x2e, 0x2b, 0x24, 0x44, 0xaf, 0x70, 0xed, 0x93, 0xad, 0xa9, 0x63, 0x47, 0xc7, 0x4e,
481 0x61, 0xb9, 0xb1, 0xac, 0x78, 0x9a, 0x5a, 0xb2, 0xec, 0x60, 0x9f, 0x2c, 0xf4, 0x35, 0x78, 0x0d,
482 0xde, 0x87, 0xa7, 0xe1, 0x02, 0x9d, 0xc4, 0xc9, 0x6e, 0xbb, 0xd1, 0x4a, 0x5c, 0x65, 0xe6, 0x9b,
483 0xef, 0xcc, 0x99, 0x7c, 0xdf, 0xf8, 0x80, 0xb3, 0x2c, 0xcb, 0x65, 0x4e, 0xe3, 0x65, 0x99, 0x27,
484 0xc5, 0x72, 0x5c, 0x56, 0xcb, 0xf3, 0x64, 0xb5, 0xa2, 0x62, 0x99, 0x15, 0x74, 0x9e, 0x15, 0x92,
485 0xaa, 0x22, 0xc9, 0xcf, 0xd7, 0x55, 0x7e, 0x4b, 0x72, 0x71, 0xb7, 0x0f, 0xe2, 0x9a, 0xaa, 0xb7,
486 0xd9, 0x82, 0xc6, 0xab, 0xaa, 0x94, 0x25, 0xf6, 0xf7, 0x67, 0x86, 0x7f, 0xeb, 0x70, 0x3a, 0x17,
487 0xde, 0x44, 0xb1, 0xc2, 0x2d, 0x89, 0x57, 0x55, 0x59, 0x0d, 0xff, 0xd2, 0xa1, 0xbf, 0x89, 0xec,
488 0x32, 0x25, 0xec, 0x80, 0x1e, 0x5c, 0xb3, 0x4f, 0xf0, 0x04, 0x8e, 0x5c, 0xff, 0xc6, 0xf2, 0x5c,
489 0x27, 0x9e, 0x0b, 0x8f, 0x69, 0x0a, 0x98, 0xf0, 0xc8, 0xbe, 0x8a, 0xb9, 0x10, 0x81, 0x60, 0x3a,
490 0x9e, 0xc1, 0xd3, 0xb9, 0x1f, 0xce, 0xb8, 0xed, 0x4e, 0x5c, 0xee, 0x34, 0xb0, 0x81, 0x9f, 0x01,
491 0x0a, 0x1e, 0xce, 0x02, 0x3f, 0xe4, 0x71, 0x14, 0x04, 0xb1, 0x67, 0x89, 0xd7, 0x9c, 0xb5, 0x14,
492 0xdd, 0xe1, 0x96, 0xe3, 0xb9, 0x3e, 0x8f, 0xf9, 0xaf, 0x36, 0xe7, 0x0e, 0x77, 0x58, 0x1b, 0x3f,
493 0x87, 0xb3, 0x30, 0xf4, 0x62, 0x9b, 0x8b, 0xc8, 0x9d, 0xb8, 0xb6, 0x15, 0xf1, 0xa6, 0x53, 0x07,
494 0x9f, 0x40, 0xdf, 0xf1, 0xc3, 0x26, 0xed, 0x22, 0x40, 0xc7, 0xf6, 0x82, 0x90, 0x3b, 0xac, 0x87,
495 0x2f, 0xc0, 0x74, 0xfd, 0x88, 0x0b, 0xdf, 0xf2, 0xe2, 0x48, 0x58, 0x7e, 0xe8, 0x72, 0x3f, 0x6a,
496 0x98, 0x7d, 0x35, 0x82, 0xba, 0x79, 0x6a, 0xf9, 0x6f, 0x62, 0xc1, 0x1d, 0x57, 0x70, 0x3b, 0x0a,
497 0x19, 0xe0, 0x33, 0x38, 0x99, 0x5a, 0xde, 0x24, 0x10, 0x53, 0xee, 0xc4, 0x82, 0xcf, 0xbc, 0x37,
498 0xec, 0x08, 0x4f, 0x81, 0xd9, 0x81, 0xef, 0x73, 0x3b, 0x72, 0x03, 0xbf, 0x69, 0x71, 0x3c, 0xfc,
499 0xc7, 0x80, 0x93, 0x9d, 0x5a, 0x82, 0x7e, 0x5f, 0x53, 0x2d, 0xf1, 0x27, 0xe8, 0x4c, 0x49, 0xde,
500 0x95, 0xa9, 0xa9, 0x0d, 0xf4, 0xd1, 0xa7, 0xaf, 0x46, 0xe3, 0xbd, 0xba, 0xe3, 0x47, 0xdc, 0x71,
501 0xf3, 0xbb, 0xe5, 0x8b, 0xe6, 0x1c, 0x32, 0x30, 0xe6, 0x55, 0x6e, 0xea, 0x03, 0x7d, 0xd4, 0x17,
502 0x2a, 0xc4, 0x1f, 0xa1, 0x73, 0x47, 0x49, 0x4a, 0x95, 0x69, 0x0c, 0x8c, 0x11, 0xbc, 0xfa, 0xea,
503 0x23, 0x3d, 0xaf, 0x36, 0x44, 0xd1, 0x1c, 0xc0, 0x17, 0xd0, 0x9d, 0x25, 0xf7, 0x79, 0x99, 0xa4,
504 0x66, 0x67, 0xa0, 0x8d, 0x8e, 0x2f, 0xf5, 0x9e, 0x26, 0x76, 0x10, 0x8e, 0xe1, 0x64, 0x52, 0xe6,
505 0x79, 0xf9, 0x87, 0xa0, 0x34, 0xab, 0x68, 0x21, 0x6b, 0xb3, 0x3b, 0xd0, 0x46, 0xbd, 0x8b, 0x96,
506 0xac, 0xd6, 0x24, 0x1e, 0x17, 0xf1, 0x39, 0xf4, 0x1c, 0x4a, 0xd2, 0x3c, 0x2b, 0xc8, 0xec, 0x0d,
507 0xb4, 0x91, 0x26, 0xf6, 0x39, 0xfe, 0x0c, 0x5f, 0x4c, 0xd7, 0xb5, 0xbc, 0x49, 0xf2, 0x2c, 0x4d,
508 0x24, 0xa9, 0xed, 0xa1, 0xca, 0xa6, 0x4a, 0x66, 0xb7, 0xd9, 0x22, 0x91, 0x64, 0xf6, 0xdf, 0xeb,
509 0xfc, 0x71, 0xea, 0xf3, 0x97, 0xd0, 0xd9, 0xfe, 0x0f, 0x25, 0xc6, 0x35, 0xdd, 0x9b, 0xad, 0xad,
510 0x18, 0xd7, 0x74, 0x8f, 0xa7, 0xd0, 0xbe, 0x49, 0xf2, 0x35, 0x99, 0xed, 0x0d, 0xb6, 0x4d, 0x86,
511 0x1e, 0x3c, 0x79, 0xa0, 0x26, 0x76, 0xc1, 0x78, 0xcd, 0x23, 0xa6, 0x61, 0x0f, 0x5a, 0xb3, 0x20,
512 0x8c, 0x98, 0xae, 0xa2, 0x2b, 0x6e, 0x39, 0xcc, 0x50, 0xc5, 0xd9, 0x3c, 0x62, 0x2d, 0xb5, 0x2e,
513 0x0e, 0xf7, 0x78, 0xc4, 0x59, 0x1b, 0xfb, 0xd0, 0x9e, 0x59, 0x91, 0x7d, 0xc5, 0x3a, 0xc3, 0x7f,
514 0x0d, 0x60, 0xef, 0x84, 0xad, 0x57, 0x65, 0x51, 0x13, 0x9a, 0xd0, 0xb5, 0xcb, 0x42, 0x52, 0x21,
515 0x4d, 0x4d, 0x49, 0x29, 0x76, 0x29, 0x7e, 0x09, 0x10, 0xca, 0x44, 0xae, 0x6b, 0xf5, 0x71, 0x6c,
516 0x8c, 0x6b, 0x8b, 0xf7, 0x10, 0xbc, 0x78, 0xe4, 0xdf, 0xf0, 0xa0, 0x7f, 0xdb, 0x6b, 0x1e, 0x1b,
517 0xf8, 0x03, 0x3c, 0x6b, 0xae, 0xf9, 0x25, 0xa9, 0xa3, 0x6a, 0x5d, 0x28, 0x81, 0xb6, 0x66, 0xf6,
518 0x2e, 0xda, 0xb7, 0x49, 0x5e, 0x93, 0x38, 0xc4, 0xc0, 0x6f, 0xe0, 0x29, 0xff, 0x73, 0xfb, 0x02,
519 0x5c, 0xde, 0x4b, 0xaa, 0x43, 0x35, 0xb8, 0x72, 0xd7, 0x10, 0x1f, 0x16, 0xf0, 0x7b, 0x38, 0x7b,
520 0x00, 0x0a, 0x5a, 0x50, 0xf6, 0x96, 0xd2, 0x8d, 0xcd, 0x86, 0x38, 0x5c, 0x54, 0xfb, 0x30, 0xc9,
521 0x8a, 0x24, 0x57, 0xfb, 0xaa, 0xec, 0xed, 0x8b, 0x7d, 0x8e, 0xdf, 0x01, 0x5a, 0xab, 0xcc, 0x5e,
522 0xad, 0xa7, 0x59, 0x9e, 0x67, 0x35, 0x2d, 0xca, 0x22, 0xad, 0x4d, 0x50, 0xed, 0x2e, 0xb4, 0x97,
523 0xe2, 0x40, 0x11, 0xbf, 0x86, 0x63, 0x6b, 0x95, 0xbd, 0x9b, 0xf6, 0x68, 0x47, 0x7e, 0x00, 0xe3,
524 0xb7, 0xc0, 0x76, 0xf9, 0x7e, 0xcc, 0xe3, 0x1d, 0xf5, 0x83, 0xd2, 0xff, 0x5f, 0xa6, 0x4b, 0xf8,
525 0xad, 0xb7, 0x7b, 0x2a, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x9f, 0x6d, 0x24, 0x63, 0x05,
526 0x00, 0x00,
527}
diff --git a/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
new file mode 100644
index 0000000..f695edf
--- /dev/null
+++ b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
@@ -0,0 +1,64 @@
1syntax = "proto2";
2option go_package = "urlfetch";
3
4package appengine;
5
6message URLFetchServiceError {
7 enum ErrorCode {
8 OK = 0;
9 INVALID_URL = 1;
10 FETCH_ERROR = 2;
11 UNSPECIFIED_ERROR = 3;
12 RESPONSE_TOO_LARGE = 4;
13 DEADLINE_EXCEEDED = 5;
14 SSL_CERTIFICATE_ERROR = 6;
15 DNS_ERROR = 7;
16 CLOSED = 8;
17 INTERNAL_TRANSIENT_ERROR = 9;
18 TOO_MANY_REDIRECTS = 10;
19 MALFORMED_REPLY = 11;
20 CONNECTION_ERROR = 12;
21 }
22}
23
24message URLFetchRequest {
25 enum RequestMethod {
26 GET = 1;
27 POST = 2;
28 HEAD = 3;
29 PUT = 4;
30 DELETE = 5;
31 PATCH = 6;
32 }
33 required RequestMethod Method = 1;
34 required string Url = 2;
35 repeated group Header = 3 {
36 required string Key = 4;
37 required string Value = 5;
38 }
39 optional bytes Payload = 6 [ctype=CORD];
40
41 optional bool FollowRedirects = 7 [default=true];
42
43 optional double Deadline = 8;
44
45 optional bool MustValidateServerCertificate = 9 [default=true];
46}
47
48message URLFetchResponse {
49 optional bytes Content = 1;
50 required int32 StatusCode = 2;
51 repeated group Header = 3 {
52 required string Key = 4;
53 required string Value = 5;
54 }
55 optional bool ContentWasTruncated = 6 [default=false];
56 optional int64 ExternalBytesSent = 7;
57 optional int64 ExternalBytesReceived = 8;
58
59 optional string FinalUrl = 9;
60
61 optional int64 ApiCpuMilliseconds = 10 [default=0];
62 optional int64 ApiBytesSent = 11 [default=0];
63 optional int64 ApiBytesReceived = 12 [default=0];
64}
diff --git a/vendor/google.golang.org/appengine/namespace.go b/vendor/google.golang.org/appengine/namespace.go
new file mode 100644
index 0000000..21860ca
--- /dev/null
+++ b/vendor/google.golang.org/appengine/namespace.go
@@ -0,0 +1,25 @@
1// Copyright 2012 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package appengine
6
7import (
8 "fmt"
9 "regexp"
10
11 "golang.org/x/net/context"
12
13 "google.golang.org/appengine/internal"
14)
15
16// Namespace returns a replacement context that operates within the given namespace.
17func Namespace(c context.Context, namespace string) (context.Context, error) {
18 if !validNamespace.MatchString(namespace) {
19 return nil, fmt.Errorf("appengine: namespace %q does not match /%s/", namespace, validNamespace)
20 }
21 return internal.NamespacedContext(c, namespace), nil
22}
23
24// validNamespace matches valid namespace names.
25var validNamespace = regexp.MustCompile(`^[0-9A-Za-z._-]{0,100}$`)
diff --git a/vendor/google.golang.org/appengine/timeout.go b/vendor/google.golang.org/appengine/timeout.go
new file mode 100644
index 0000000..05642a9
--- /dev/null
+++ b/vendor/google.golang.org/appengine/timeout.go
@@ -0,0 +1,20 @@
1// Copyright 2013 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5package appengine
6
7import "golang.org/x/net/context"
8
9// IsTimeoutError reports whether err is a timeout error.
10func IsTimeoutError(err error) bool {
11 if err == context.DeadlineExceeded {
12 return true
13 }
14 if t, ok := err.(interface {
15 IsTimeout() bool
16 }); ok {
17 return t.IsTimeout()
18 }
19 return false
20}
diff --git a/vendor/google.golang.org/appengine/travis_install.sh b/vendor/google.golang.org/appengine/travis_install.sh
new file mode 100644
index 0000000..785b62f
--- /dev/null
+++ b/vendor/google.golang.org/appengine/travis_install.sh
@@ -0,0 +1,18 @@
1#!/bin/bash
2set -e
3
4if [[ $GO111MODULE == "on" ]]; then
5 go get .
6else
7 go get -u -v $(go list -f '{{join .Imports "\n"}}{{"\n"}}{{join .TestImports "\n"}}' ./... | sort | uniq | grep -v appengine)
8fi
9
10if [[ $GOAPP == "true" ]]; then
11 mkdir /tmp/sdk
12 curl -o /tmp/sdk.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.68.zip"
13 unzip -q /tmp/sdk.zip -d /tmp/sdk
14 # NOTE: Set the following env vars in the test script:
15 # export PATH="$PATH:/tmp/sdk/go_appengine"
16 # export APPENGINE_DEV_APPSERVER=/tmp/sdk/go_appengine/dev_appserver.py
17fi
18
diff --git a/vendor/google.golang.org/appengine/travis_test.sh b/vendor/google.golang.org/appengine/travis_test.sh
new file mode 100644
index 0000000..d4390f0
--- /dev/null
+++ b/vendor/google.golang.org/appengine/travis_test.sh
@@ -0,0 +1,12 @@
1#!/bin/bash
2set -e
3
4go version
5go test -v google.golang.org/appengine/...
6go test -v -race google.golang.org/appengine/...
7if [[ $GOAPP == "true" ]]; then
8 export PATH="$PATH:/tmp/sdk/go_appengine"
9 export APPENGINE_DEV_APPSERVER=/tmp/sdk/go_appengine/dev_appserver.py
10 goapp version
11 goapp test -v google.golang.org/appengine/...
12fi
diff --git a/vendor/google.golang.org/appengine/urlfetch/urlfetch.go b/vendor/google.golang.org/appengine/urlfetch/urlfetch.go
new file mode 100644
index 0000000..6ffe1e6
--- /dev/null
+++ b/vendor/google.golang.org/appengine/urlfetch/urlfetch.go
@@ -0,0 +1,210 @@
1// Copyright 2011 Google Inc. All rights reserved.
2// Use of this source code is governed by the Apache 2.0
3// license that can be found in the LICENSE file.
4
5// Package urlfetch provides an http.RoundTripper implementation
6// for fetching URLs via App Engine's urlfetch service.
7package urlfetch // import "google.golang.org/appengine/urlfetch"
8
9import (
10 "errors"
11 "fmt"
12 "io"
13 "io/ioutil"
14 "net/http"
15 "net/url"
16 "strconv"
17 "strings"
18 "time"
19
20 "github.com/golang/protobuf/proto"
21 "golang.org/x/net/context"
22
23 "google.golang.org/appengine/internal"
24 pb "google.golang.org/appengine/internal/urlfetch"
25)
26
27// Transport is an implementation of http.RoundTripper for
28// App Engine. Users should generally create an http.Client using
29// this transport and use the Client rather than using this transport
30// directly.
31type Transport struct {
32 Context context.Context
33
34 // Controls whether the application checks the validity of SSL certificates
35 // over HTTPS connections. A value of false (the default) instructs the
36 // application to send a request to the server only if the certificate is
37 // valid and signed by a trusted certificate authority (CA), and also
38 // includes a hostname that matches the certificate. A value of true
39 // instructs the application to perform no certificate validation.
40 AllowInvalidServerCertificate bool
41}
42
43// Verify statically that *Transport implements http.RoundTripper.
44var _ http.RoundTripper = (*Transport)(nil)
45
46// Client returns an *http.Client using a default urlfetch Transport. This
47// client will have the default deadline of 5 seconds, and will check the
48// validity of SSL certificates.
49//
50// Any deadline of the provided context will be used for requests through this client;
51// if the client does not have a deadline then a 5 second default is used.
52func Client(ctx context.Context) *http.Client {
53 return &http.Client{
54 Transport: &Transport{
55 Context: ctx,
56 },
57 }
58}
59
60type bodyReader struct {
61 content []byte
62 truncated bool
63 closed bool
64}
65
66// ErrTruncatedBody is the error returned after the final Read() from a
67// response's Body if the body has been truncated by App Engine's proxy.
68var ErrTruncatedBody = errors.New("urlfetch: truncated body")
69
70func statusCodeToText(code int) string {
71 if t := http.StatusText(code); t != "" {
72 return t
73 }
74 return strconv.Itoa(code)
75}
76
77func (br *bodyReader) Read(p []byte) (n int, err error) {
78 if br.closed {
79 if br.truncated {
80 return 0, ErrTruncatedBody
81 }
82 return 0, io.EOF
83 }
84 n = copy(p, br.content)
85 if n > 0 {
86 br.content = br.content[n:]
87 return
88 }
89 if br.truncated {
90 br.closed = true
91 return 0, ErrTruncatedBody
92 }
93 return 0, io.EOF
94}
95
96func (br *bodyReader) Close() error {
97 br.closed = true
98 br.content = nil
99 return nil
100}
101
102// A map of the URL Fetch-accepted methods that take a request body.
103var methodAcceptsRequestBody = map[string]bool{
104 "POST": true,
105 "PUT": true,
106 "PATCH": true,
107}
108
109// urlString returns a valid string given a URL. This function is necessary because
110// the String method of URL doesn't correctly handle URLs with non-empty Opaque values.
111// See http://code.google.com/p/go/issues/detail?id=4860.
112func urlString(u *url.URL) string {
113 if u.Opaque == "" || strings.HasPrefix(u.Opaque, "//") {
114 return u.String()
115 }
116 aux := *u
117 aux.Opaque = "//" + aux.Host + aux.Opaque
118 return aux.String()
119}
120
121// RoundTrip issues a single HTTP request and returns its response. Per the
122// http.RoundTripper interface, RoundTrip only returns an error if there
123// was an unsupported request or the URL Fetch proxy fails.
124// Note that HTTP response codes such as 5xx, 403, 404, etc are not
125// errors as far as the transport is concerned and will be returned
126// with err set to nil.
127func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error) {
128 methNum, ok := pb.URLFetchRequest_RequestMethod_value[req.Method]
129 if !ok {
130 return nil, fmt.Errorf("urlfetch: unsupported HTTP method %q", req.Method)
131 }
132
133 method := pb.URLFetchRequest_RequestMethod(methNum)
134
135 freq := &pb.URLFetchRequest{
136 Method: &method,
137 Url: proto.String(urlString(req.URL)),
138 FollowRedirects: proto.Bool(false), // http.Client's responsibility
139 MustValidateServerCertificate: proto.Bool(!t.AllowInvalidServerCertificate),
140 }
141 if deadline, ok := t.Context.Deadline(); ok {
142 freq.Deadline = proto.Float64(deadline.Sub(time.Now()).Seconds())
143 }
144
145 for k, vals := range req.Header {
146 for _, val := range vals {
147 freq.Header = append(freq.Header, &pb.URLFetchRequest_Header{
148 Key: proto.String(k),
149 Value: proto.String(val),
150 })
151 }
152 }
153 if methodAcceptsRequestBody[req.Method] && req.Body != nil {
154 // Avoid a []byte copy if req.Body has a Bytes method.
155 switch b := req.Body.(type) {
156 case interface {
157 Bytes() []byte
158 }:
159 freq.Payload = b.Bytes()
160 default:
161 freq.Payload, err = ioutil.ReadAll(req.Body)
162 if err != nil {
163 return nil, err
164 }
165 }
166 }
167
168 fres := &pb.URLFetchResponse{}
169 if err := internal.Call(t.Context, "urlfetch", "Fetch", freq, fres); err != nil {
170 return nil, err
171 }
172
173 res = &http.Response{}
174 res.StatusCode = int(*fres.StatusCode)
175 res.Status = fmt.Sprintf("%d %s", res.StatusCode, statusCodeToText(res.StatusCode))
176 res.Header = make(http.Header)
177 res.Request = req
178
179 // Faked:
180 res.ProtoMajor = 1
181 res.ProtoMinor = 1
182 res.Proto = "HTTP/1.1"
183 res.Close = true
184
185 for _, h := range fres.Header {
186 hkey := http.CanonicalHeaderKey(*h.Key)
187 hval := *h.Value
188 if hkey == "Content-Length" {
189 // Will get filled in below for all but HEAD requests.
190 if req.Method == "HEAD" {
191 res.ContentLength, _ = strconv.ParseInt(hval, 10, 64)
192 }
193 continue
194 }
195 res.Header.Add(hkey, hval)
196 }
197
198 if req.Method != "HEAD" {
199 res.ContentLength = int64(len(fres.Content))
200 }
201
202 truncated := fres.GetContentWasTruncated()
203 res.Body = &bodyReader{content: fres.Content, truncated: truncated}
204 return
205}
206
207func init() {
208 internal.RegisterErrorCodeMap("urlfetch", pb.URLFetchServiceError_ErrorCode_name)
209 internal.RegisterTimeoutErrorCode("urlfetch", int32(pb.URLFetchServiceError_DEADLINE_EXCEEDED))
210}