64 lines
1.0 KiB
Go
64 lines
1.0 KiB
Go
package util
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func LoadConfig() (*Config, error) {
|
|
config := Config{}
|
|
|
|
err := config.loadEnv()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// other sources?
|
|
|
|
config.def()
|
|
config.verify()
|
|
return &config, nil
|
|
}
|
|
|
|
type Config struct {
|
|
ClientID string
|
|
RedirectURI string
|
|
SQliteDB string
|
|
}
|
|
|
|
func (c *Config) def() {
|
|
c.SQliteDB = "./db.sqlite"
|
|
}
|
|
|
|
func (c *Config) loadEnv() error {
|
|
err := godotenv.Load()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if str, found := os.LookupEnv("CLIENT_ID"); found {
|
|
c.ClientID = strings.TrimSpace(str)
|
|
}
|
|
if str, found := os.LookupEnv("REDIR_URI"); found {
|
|
c.RedirectURI = strings.TrimSpace(str)
|
|
}
|
|
if str, found := os.LookupEnv("SQLITE_DB"); found {
|
|
c.SQliteDB = strings.TrimSpace(str)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Config) verify() error {
|
|
if c.ClientID == "" {
|
|
return errors.New("unable to load a configured Client ID")
|
|
}
|
|
if c.RedirectURI == "" {
|
|
return errors.New("unable to load a configured Redirect URI")
|
|
}
|
|
|
|
return nil
|
|
}
|