Zack Williams | e940c7a | 2019-08-21 14:25:39 -0700 | [diff] [blame] | 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 |
| 6 | |
| 7 | import ( |
| 8 | "os" |
| 9 | |
| 10 | netcontext "golang.org/x/net/context" |
| 11 | ) |
| 12 | |
| 13 | var ( |
| 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. |
| 26 | func 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. |
| 32 | func 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. |
| 40 | func 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. |
| 47 | func 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. |
| 53 | func IsAppEngine() bool { |
| 54 | return IsStandard() || IsFlex() |
| 55 | } |