mirror of
https://github.com/imjasonh/appengine-value
synced 2026-07-06 22:12:22 +00:00
51 lines
1.1 KiB
Markdown
51 lines
1.1 KiB
Markdown
`appengine-value` is a simple utility library to handle simple secret configuration values in an App Engine app.
|
|
|
|
Problem
|
|
-----
|
|
|
|
Your app requires secret values (OAuth secrets, API keys, passwords) and you rightly don't want to specify these values as consts in your source code.
|
|
|
|
**Don't do this!**
|
|
|
|
```
|
|
const (
|
|
clientID = "123456.clientaccount.foo"
|
|
clientSecret = "s8p3rs3cr1t"
|
|
)
|
|
```
|
|
|
|
Solution
|
|
-----
|
|
|
|
**Do this instead**
|
|
```
|
|
import value "github.com/ImJasonH/appengine-value"
|
|
|
|
func doOAuth(c appengine.Context) {
|
|
clientID := value.Get(c, "client_id")
|
|
clientSecret := value.Get(c, "client_secret")
|
|
// use clientID and clientSecret
|
|
}
|
|
```
|
|
|
|
If you have multiple values, you can **batch lookups**:
|
|
```
|
|
func doOAuth(c appengine.Context) {
|
|
vals := value.GetMulti(c, "client_id", "client_secret")
|
|
clientID, clientSecret := vals["client_id"], vals["client_secret"]
|
|
}
|
|
```
|
|
|
|
Configuration
|
|
-----
|
|
|
|
To set or unset values, use the admin UI which is served at `/_ah/value/admin` -- be sure to map this in your `app.yaml`:
|
|
|
|
```
|
|
handlers:
|
|
- url: /_ah/value/.*
|
|
script: _go_app
|
|
login: admin
|
|
```
|
|
|
|
(You can always remove the URL mapping if you're done setting values)
|