Index: service/info/interface.go |
diff --git a/service/info/interface.go b/service/info/interface.go |
index d35b9329b0268521237ef585a98a68e1cc1e0d5e..89c9c522f44a7e14d118b3af5abac06c838ccf7e 100644 |
--- a/service/info/interface.go |
+++ b/service/info/interface.go |
@@ -5,6 +5,7 @@ |
package info |
import ( |
+ "strings" |
"time" |
"golang.org/x/net/context" |
@@ -15,7 +16,7 @@ import ( |
type RawInterface interface { |
AppID() string |
FullyQualifiedAppID() string |
- GetNamespace() (string, bool) |
+ GetNamespace() string |
Datacenter() string |
DefaultVersionHostname() string |
@@ -36,28 +37,9 @@ type RawInterface interface { |
PublicCertificates() ([]Certificate, error) |
SignBytes(bytes []byte) (keyName string, signature []byte, err error) |
- // Testable returns this Interface's Testable interface. Testing will return |
- // nil if testing is not supported in this implementation. |
- Testable() Testable |
-} |
- |
-// Interface is the interface for all of the package methods which normally |
-// would be in the 'appengine' package. This version adds a couple helper |
-// functions on top of the RawInterface. |
-type Interface interface { |
- RawInterface |
- |
- // TrimmedAppID gets the 'appid' portion of "foo.com:appid". This form can |
- // occur if you use |
- TrimmedAppID() string |
- |
- // MustNamespace is the same as Namespace, but will panic if there's an error. |
- // Since an error can only occur if namespace doesn't match the a regex this |
- // is valid to use if the namespace you're using is statically known, or known |
- // to conform to the regex. The regex in question is: |
- // |
- // ^[0-9A-Za-z._-]{0,100}$ |
- MustNamespace(namespace string) context.Context |
+ // Testable returns this RawInterface's Testing interface. Testing will |
+ // return nil if testing is not supported in this implementation. |
+ GetTestable() Testable |
} |
// Testable is an additional set of functions for testing instrumentation. |
@@ -65,3 +47,130 @@ type Testable interface { |
SetVersionID(string) context.Context |
SetRequestID(string) context.Context |
} |
+ |
+// AppID returns the current App ID. |
+func AppID(c context.Context) string { |
+ return Raw(c).AppID() |
+} |
+ |
+// TrimmedAppID gets the 'appid' portion of "foo.com:appid". This form can |
+// occur if you use |
+func TrimmedAppID(c context.Context) string { |
+ toks := strings.Split(AppID(c), ":") |
+ return toks[len(toks)-1] |
+} |
+ |
+// FullyQualifiedAppID returns the fully-qualified App ID. |
+func FullyQualifiedAppID(c context.Context) string { |
+ return Raw(c).FullyQualifiedAppID() |
+} |
+ |
+// GetNamespace returns the current namespace. If the current namespace is the |
+// default namespace, GetNamespace will return an empty string. |
+func GetNamespace(c context.Context) string { |
+ return Raw(c).GetNamespace() |
+} |
+ |
+// Datacenter returns the current datacenter. |
+func Datacenter(c context.Context) string { |
+ return Raw(c).Datacenter() |
+} |
+ |
+// DefaultVersionHostname returns the default version hostname. |
+func DefaultVersionHostname(c context.Context) string { |
+ return Raw(c).DefaultVersionHostname() |
+} |
+ |
+// InstanceID returns the current instance ID. |
+func InstanceID(c context.Context) string { |
+ return Raw(c).InstanceID() |
+} |
+ |
+// IsDevAppServer returns true if running on a development server. |
+func IsDevAppServer(c context.Context) bool { |
+ return Raw(c).IsDevAppServer() |
+} |
+ |
+// IsOverQuota returns true if the supplied error is an over quota error. |
+func IsOverQuota(c context.Context, err error) bool { |
+ return Raw(c).IsOverQuota(err) |
+} |
+ |
+// IsTimeoutError returns true if the supplied error indicates a timeout. |
+func IsTimeoutError(c context.Context, err error) bool { |
+ return Raw(c).IsTimeoutError(err) |
+} |
+ |
+// ModuleHostname returns the hostname of a module instance. |
+func ModuleHostname(c context.Context, module, version, instance string) (string, error) { |
+ return Raw(c).ModuleHostname(module, version, instance) |
+} |
+ |
+// ModuleName returns the current module name. |
+func ModuleName(c context.Context) string { |
+ return Raw(c).ModuleName() |
+} |
+ |
+// RequestID returns the current request ID. |
+func RequestID(c context.Context) string { |
+ return Raw(c).RequestID() |
+} |
+ |
+// ServerSoftware returns the AppEngine release version. |
+func ServerSoftware(c context.Context) string { |
+ return Raw(c).ServerSoftware() |
+} |
+ |
+// ServiceAccount returns the current service account name, in the form of an |
+// e-mail address. |
+func ServiceAccount(c context.Context) (string, error) { |
+ return Raw(c).ServiceAccount() |
+} |
+ |
+// VersionID returns the version ID for the current application, in the form |
+// "X.Y". |
+func VersionID(c context.Context) string { |
+ return Raw(c).VersionID() |
+} |
+ |
+// Namespace sets the current namespace. If the namespace is invalid or could |
+// not be set, an error will be returned. |
+func Namespace(c context.Context, namespace string) (context.Context, error) { |
+ return Raw(c).Namespace(namespace) |
+} |
+ |
+// MustNamespace is the same as Namespace, but will panic if there's an error. |
+// Since an error can only occur if namespace doesn't match the a regex this |
+// is valid to use if the namespace you're using is statically known, or known |
+// to conform to the regex. The regex in question is: |
+// |
+// ^[0-9A-Za-z._-]{0,100}$ |
+func MustNamespace(c context.Context, namespace string) context.Context { |
+ ret, err := Namespace(c, namespace) |
+ if err != nil { |
+ panic(err) |
+ } |
+ return ret |
+} |
+ |
+// AccessToken generates an OAuth2 access token for the specified scopes |
+// on behalf of the current ServiceAccount. |
+func AccessToken(c context.Context, scopes ...string) (token string, expiry time.Time, err error) { |
+ return Raw(c).AccessToken(scopes...) |
+} |
+ |
+// PublicCertificates retrieves the public certificates of the app. |
+func PublicCertificates(c context.Context) ([]Certificate, error) { |
+ return Raw(c).PublicCertificates() |
+} |
+ |
+// SignBytes signs bytes using the application's unique private key. |
+func SignBytes(c context.Context, bytes []byte) (keyName string, signature []byte, err error) { |
+ return Raw(c).SignBytes(bytes) |
+} |
+ |
+// GetTestable returns this Interface's Testing interface. Testing will return |
+// nil if testing is not supported in this implementation. |
+func GetTestable(c context.Context) Testable { |
+ return Raw(c).GetTestable() |
+} |