This repository has been archived on 2022-05-25. You can view files and clone it, but cannot push or open issues or pull requests.
elon-eats-my-tweets/config/config.go

41 lines
1021 B
Go

package config
import (
"errors"
"os"
)
type TwitterConfig struct {
BearerToken, ClientID, ClientSecret, CallbackURL, AuthorizeURL, TokenURL string
}
type Config struct {
DatabaseURL string
SessionKey string
ListenAddr string
Twitter TwitterConfig
}
func NewFromEnv() (Config, error) {
listenAddr := os.Getenv("ELON_LISTEN_ADDR")
if listenAddr == "" {
listenAddr = ":8000"
}
sessionKey := os.Getenv("ELON_SESSION_KEY")
if sessionKey == "" {
return Config{}, errors.New("missing ELON_SESSION_KEY")
}
return Config{
DatabaseURL: os.Getenv("ELON_DATABASE_URL"),
SessionKey: sessionKey,
ListenAddr: listenAddr,
Twitter: TwitterConfig{
BearerToken: os.Getenv("ELON_TWITTER_BEARER_TOKEN"),
ClientID: os.Getenv("ELON_TWITTER_CLIENT_ID"),
ClientSecret: os.Getenv("ELON_TWITTER_CLIENT_SECRET"),
CallbackURL: os.Getenv("ELON_TWITTER_CALLBACK_URL"),
AuthorizeURL: os.Getenv("ELON_TWITTER_AUTHORIZE_URL"),
TokenURL: os.Getenv("ELON_TWITTER_TOKEN_URL"),
},
}, nil
}