Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: service/info/interface.go

Issue 2302743002: Interface update, per-method Contexts. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The LUCI Authors. All rights reserved. 1 // Copyright 2015 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package info 5 package info
6 6
7 import ( 7 import (
8 "strings"
8 "time" 9 "time"
9 10
10 "golang.org/x/net/context" 11 "golang.org/x/net/context"
11 ) 12 )
12 13
13 // RawInterface is the interface for all of the package methods which normally 14 // RawInterface is the interface for all of the package methods which normally
14 // would be in the 'appengine' package. 15 // would be in the 'appengine' package.
15 type RawInterface interface { 16 type RawInterface interface {
16 AppID() string 17 AppID() string
17 FullyQualifiedAppID() string 18 FullyQualifiedAppID() string
18 » GetNamespace() (string, bool) 19 » GetNamespace() string
19 20
20 Datacenter() string 21 Datacenter() string
21 DefaultVersionHostname() string 22 DefaultVersionHostname() string
22 InstanceID() string 23 InstanceID() string
23 IsDevAppServer() bool 24 IsDevAppServer() bool
24 IsOverQuota(err error) bool 25 IsOverQuota(err error) bool
25 IsTimeoutError(err error) bool 26 IsTimeoutError(err error) bool
26 ModuleHostname(module, version, instance string) (string, error) 27 ModuleHostname(module, version, instance string) (string, error)
27 ModuleName() string 28 ModuleName() string
28 RequestID() string 29 RequestID() string
29 ServerSoftware() string 30 ServerSoftware() string
30 ServiceAccount() (string, error) 31 ServiceAccount() (string, error)
31 VersionID() string 32 VersionID() string
32 33
33 Namespace(namespace string) (context.Context, error) 34 Namespace(namespace string) (context.Context, error)
34 35
35 AccessToken(scopes ...string) (token string, expiry time.Time, err error ) 36 AccessToken(scopes ...string) (token string, expiry time.Time, err error )
36 PublicCertificates() ([]Certificate, error) 37 PublicCertificates() ([]Certificate, error)
37 SignBytes(bytes []byte) (keyName string, signature []byte, err error) 38 SignBytes(bytes []byte) (keyName string, signature []byte, err error)
38 39
39 » // Testable returns this Interface's Testable interface. Testing will re turn 40 » // Testable returns this RawInterface's Testing interface. Testing will
40 » // nil if testing is not supported in this implementation. 41 » // return nil if testing is not supported in this implementation.
41 » Testable() Testable 42 » GetTestable() Testable
42 }
43
44 // Interface is the interface for all of the package methods which normally
45 // would be in the 'appengine' package. This version adds a couple helper
46 // functions on top of the RawInterface.
47 type Interface interface {
dnj 2016/09/01 15:25:40 Gone.
48 » RawInterface
49
50 » // TrimmedAppID gets the 'appid' portion of "foo.com:appid". This form c an
51 » // occur if you use
52 » TrimmedAppID() string
53
54 » // MustNamespace is the same as Namespace, but will panic if there's an error.
55 » // Since an error can only occur if namespace doesn't match the a regex this
56 » // is valid to use if the namespace you're using is statically known, or known
57 » // to conform to the regex. The regex in question is:
58 » //
59 » // ^[0-9A-Za-z._-]{0,100}$
60 » MustNamespace(namespace string) context.Context
61 } 43 }
62 44
63 // Testable is an additional set of functions for testing instrumentation. 45 // Testable is an additional set of functions for testing instrumentation.
64 type Testable interface { 46 type Testable interface {
65 SetVersionID(string) context.Context 47 SetVersionID(string) context.Context
66 SetRequestID(string) context.Context 48 SetRequestID(string) context.Context
67 } 49 }
50
dnj 2016/09/01 15:25:40 Top-level, transplant from wrapper.go.
51 // AppID returns the current App ID.
52 func AppID(c context.Context) string {
53 return Raw(c).AppID()
54 }
55
56 // TrimmedAppID gets the 'appid' portion of "foo.com:appid". This form can
57 // occur if you use
58 func TrimmedAppID(c context.Context) string {
59 toks := strings.Split(AppID(c), ":")
60 return toks[len(toks)-1]
61 }
62
63 // FullyQualifiedAppID returns the fully-qualified App ID.
64 func FullyQualifiedAppID(c context.Context) string {
65 return Raw(c).FullyQualifiedAppID()
66 }
67
68 // GetNamespace returns the current namespace. If the current namespace is the
69 // default namespace, GetNamespace will return an empty string.
70 func GetNamespace(c context.Context) string {
71 return Raw(c).GetNamespace()
72 }
73
74 // Datacenter returns the current datacenter.
75 func Datacenter(c context.Context) string {
76 return Raw(c).Datacenter()
77 }
78
79 // DefaultVersionHostname returns the default version hostname.
80 func DefaultVersionHostname(c context.Context) string {
81 return Raw(c).DefaultVersionHostname()
82 }
83
84 // InstanceID returns the current instance ID.
85 func InstanceID(c context.Context) string {
86 return Raw(c).InstanceID()
87 }
88
89 // IsDevAppServer returns true if running on a development server.
90 func IsDevAppServer(c context.Context) bool {
91 return Raw(c).IsDevAppServer()
92 }
93
94 // IsOverQuota returns true if the supplied error is an over quota error.
95 func IsOverQuota(c context.Context, err error) bool {
96 return Raw(c).IsOverQuota(err)
97 }
98
99 // IsTimeoutError returns true if the supplied error indicates a timeout.
100 func IsTimeoutError(c context.Context, err error) bool {
101 return Raw(c).IsTimeoutError(err)
102 }
103
104 // ModuleHostname returns the hostname of a module instance.
105 func ModuleHostname(c context.Context, module, version, instance string) (string , error) {
106 return Raw(c).ModuleHostname(module, version, instance)
107 }
108
109 // ModuleName returns the current module name.
110 func ModuleName(c context.Context) string {
111 return Raw(c).ModuleName()
112 }
113
114 // RequestID returns the current request ID.
115 func RequestID(c context.Context) string {
116 return Raw(c).RequestID()
117 }
118
119 // ServerSoftware returns the AppEngine release version.
120 func ServerSoftware(c context.Context) string {
121 return Raw(c).ServerSoftware()
122 }
123
124 // ServiceAccount returns the current service account name, in the form of an
125 // e-mail address.
126 func ServiceAccount(c context.Context) (string, error) {
127 return Raw(c).ServiceAccount()
128 }
129
130 // VersionID returns the version ID for the current application, in the form
131 // "X.Y".
132 func VersionID(c context.Context) string {
133 return Raw(c).VersionID()
134 }
135
136 // Namespace sets the current namespace. If the namespace is invalid or could
137 // not be set, an error will be returned.
138 func Namespace(c context.Context, namespace string) (context.Context, error) {
139 return Raw(c).Namespace(namespace)
140 }
141
142 // MustNamespace is the same as Namespace, but will panic if there's an error.
143 // Since an error can only occur if namespace doesn't match the a regex this
144 // is valid to use if the namespace you're using is statically known, or known
145 // to conform to the regex. The regex in question is:
146 //
147 // ^[0-9A-Za-z._-]{0,100}$
148 func MustNamespace(c context.Context, namespace string) context.Context {
149 ret, err := Namespace(c, namespace)
150 if err != nil {
151 panic(err)
152 }
153 return ret
154 }
155
156 // AccessToken generates an OAuth2 access token for the specified scopes
157 // on behalf of the current ServiceAccount.
158 func AccessToken(c context.Context, scopes ...string) (token string, expiry time .Time, err error) {
159 return Raw(c).AccessToken(scopes...)
160 }
161
162 // PublicCertificates retrieves the public certificates of the app.
163 func PublicCertificates(c context.Context) ([]Certificate, error) {
164 return Raw(c).PublicCertificates()
165 }
166
167 // SignBytes signs bytes using the application's unique private key.
168 func SignBytes(c context.Context, bytes []byte) (keyName string, signature []byt e, err error) {
169 return Raw(c).SignBytes(bytes)
170 }
171
172 // GetTestable returns this Interface's Testing interface. Testing will return
173 // nil if testing is not supported in this implementation.
174 func GetTestable(c context.Context) Testable {
175 return Raw(c).GetTestable()
176 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698