vendor/google.golang.org/appengine/internal/identity.go
changeset 251 1c52a0eeb952
parent 242 2a9ec03fe5a1
--- a/vendor/google.golang.org/appengine/internal/identity.go	Wed Sep 18 19:17:42 2019 +0200
+++ b/vendor/google.golang.org/appengine/internal/identity.go	Sun Feb 16 18:54:01 2020 +0100
@@ -4,11 +4,52 @@
 
 package internal
 
-import netcontext "golang.org/x/net/context"
+import (
+	"os"
+
+	netcontext "golang.org/x/net/context"
+)
 
-// These functions are implementations of the wrapper functions
-// in ../appengine/identity.go. See that file for commentary.
+var (
+	// This is set to true in identity_classic.go, which is behind the appengine build tag.
+	// The appengine build tag is set for the first generation runtimes (<= Go 1.9) but not
+	// the second generation runtimes (>= Go 1.11), so this indicates whether we're on a
+	// first-gen runtime. See IsStandard below for the second-gen check.
+	appengineStandard bool
 
+	// This is set to true in identity_flex.go, which is behind the appenginevm build tag.
+	appengineFlex bool
+)
+
+// AppID is the implementation of the wrapper function of the same name in
+// ../identity.go. See that file for commentary.
 func AppID(c netcontext.Context) string {
 	return appID(FullyQualifiedAppID(c))
 }
+
+// IsStandard is the implementation of the wrapper function of the same name in
+// ../appengine.go. See that file for commentary.
+func IsStandard() bool {
+	// appengineStandard will be true for first-gen runtimes (<= Go 1.9) but not
+	// second-gen (>= Go 1.11).
+	return appengineStandard || IsSecondGen()
+}
+
+// IsStandard is the implementation of the wrapper function of the same name in
+// ../appengine.go. See that file for commentary.
+func IsSecondGen() bool {
+	// Second-gen runtimes set $GAE_ENV so we use that to check if we're on a second-gen runtime.
+	return os.Getenv("GAE_ENV") == "standard"
+}
+
+// IsFlex is the implementation of the wrapper function of the same name in
+// ../appengine.go. See that file for commentary.
+func IsFlex() bool {
+	return appengineFlex
+}
+
+// IsAppEngine is the implementation of the wrapper function of the same name in
+// ../appengine.go. See that file for commentary.
+func IsAppEngine() bool {
+	return IsStandard() || IsFlex()
+}