diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/config/client/client.go | 9 | ||||
| -rw-r--r-- | internal/config/config.go | 21 | ||||
| -rw-r--r-- | internal/config/config_test.go | 21 | ||||
| -rw-r--r-- | internal/config/server/server.go | 16 | ||||
| -rw-r--r-- | internal/server/handler/handler.go | 4 | ||||
| -rw-r--r-- | internal/server/server.go | 2 |
6 files changed, 21 insertions, 52 deletions
diff --git a/internal/config/client/client.go b/internal/config/client/client.go index 9329759..65dd246 100644 --- a/internal/config/client/client.go +++ b/internal/config/client/client.go @@ -8,13 +8,16 @@ import ( type ClientConfig struct { Server string `json:"Partner,omitempty"` - ApiKey string `json:"ApiKey,omitempty"` + APIKey string `json:"APIKey,omitempty"` + Editor string `json:"Editor,omitempty"` } func New(configFile string) (ClientConfig, error) { conf, _ := config.FromFile[ClientConfig](configFile) - conf.Server = config.FromENV("Servers", conf.Server) - conf.ApiKey = config.FromENV("ApiKey", conf.ApiKey) + // TODO: Refactor + conf.Server = config.FromENV("GOS_SERVERS", conf.Server) + conf.APIKey = config.FromENV("GOS_API_KEY", conf.APIKey) + conf.Editor = config.FromENV("GOS_EDITOR", "EDITOR", conf.Editor, "vi") return conf, nil } diff --git a/internal/config/config.go b/internal/config/config.go index 3dcc0e6..784c34b 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -4,8 +4,6 @@ import ( "encoding/json" "io" "os" - "strings" - "unicode" ) func FromFile[T any](configFile string) (T, error) { @@ -27,8 +25,7 @@ func FromFile[T any](configFile string) (T, error) { } // Set config from envoronment variable if present, e.g. hansWurst from GOS_HANS_WURST -func FromENV(configKey string, defaultValue ...string) string { - envKey := camelToSnakeWithPrefix("GOS", configKey) +func FromENV(envKey string, defaultValue ...string) string { if value := os.Getenv(envKey); value != "" { return value } @@ -42,19 +39,3 @@ func FromENV(configKey string, defaultValue ...string) string { return "" } - -// camelToSnaeWithPrefix converts camelCase strings to UPPER_SNAKE_CASE with a prefix. -func camelToSnakeWithPrefix(prefix, s string) string { - var builder strings.Builder - builder.WriteString(strings.ToUpper(prefix)) - builder.WriteRune('_') - - for i, r := range s { - if unicode.IsUpper(r) && i > 0 { - builder.WriteRune('_') - } - builder.WriteRune(unicode.ToUpper(r)) - } - - return builder.String() -} diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 5c4db88..2bd8fb6 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -5,21 +5,6 @@ import ( "testing" ) -func TestCamelToSnake(t *testing.T) { - t.Parallel() - - var ( - expected = "GOS_FOO_BAR_BAZ" - got = camelToSnakeWithPrefix("GOS", "fooBarBaz") - ) - - if got != expected { - t.Errorf("got '%s' but expected '%s'", got, expected) - return - } - t.Logf("got '%s' as expected", expected) -} - func TestFromENV(t *testing.T) { t.Parallel() @@ -27,7 +12,7 @@ func TestFromENV(t *testing.T) { var ( expected = "foobarbaz" - got = FromENV("testFromEnv") + got = FromENV("GOS_TEST_FROM_ENV") ) if got != expected { @@ -37,7 +22,7 @@ func TestFromENV(t *testing.T) { t.Logf("got '%s' as expected", expected) expected = "default value" - got = FromENV("jajaja", expected) + got = FromENV("GOS_JAJAJA", expected) if got != expected { t.Errorf("got '%s' but expected '%s'", got, expected) return @@ -51,7 +36,7 @@ func TestFromENV(t *testing.T) { t.Logf("got empty string as expected") expected = "casio g-shock" - got = FromENV("watch", "", "", "", expected, "") + got = FromENV("GOS_WATCH", "", "", "", expected, "") if got != expected { t.Errorf("got '%s' but expected '%s'", got, expected) return diff --git a/internal/config/server/server.go b/internal/config/server/server.go index 0870950..6b06ff3 100644 --- a/internal/config/server/server.go +++ b/internal/config/server/server.go @@ -12,7 +12,7 @@ import ( type ServerConfig struct { ListenAddr string `json:"ListenAddr,omitempty"` Partner string `json:"Partner,omitempty"` - ApiKey string `json:"ApiKey,omitempty"` + APIKey string `json:"APIKey,omitempty"` DataDir string `json:"StateDir,omitempty"` EmailTo string `json:"EmailTo,omitempty"` EmailFrom string `json:"EmailFrom,omitempty"` @@ -21,13 +21,13 @@ type ServerConfig struct { func New(configFile string) (ServerConfig, error) { conf, _ := config.FromFile[ServerConfig](configFile) - conf.ListenAddr = config.FromENV("ListenAddr", conf.ListenAddr, "localhost:8080") - conf.Partner = config.FromENV("Partner", conf.Partner) - conf.ApiKey = config.FromENV("ApiKey", conf.ApiKey) - conf.DataDir = config.FromENV("DataDir", conf.DataDir, "data") - conf.EmailTo = config.FromENV("EmailTo", conf.EmailTo) - conf.EmailFrom = config.FromENV("EmailFrom", conf.EmailFrom) - conf.SMTPServer = config.FromENV("SMTPServer", conf.SMTPServer) + conf.ListenAddr = config.FromENV("GOS_LISTEN_ADDR", conf.ListenAddr, "localhost:8080") + conf.Partner = config.FromENV("GOS_PARTNER", conf.Partner) + conf.APIKey = config.FromENV("GOS_API_KEY", conf.APIKey) + conf.DataDir = config.FromENV("GOS_DATA_DIR", conf.DataDir, "data") + conf.EmailTo = config.FromENV("GOS_EMAIL_TO", conf.EmailTo) + conf.EmailFrom = config.FromENV("GOS_EMAIL_FROM", conf.EmailFrom) + conf.SMTPServer = config.FromENV("GOS_SMTP_SERVER", conf.SMTPServer) if conf.SMTPServer == "" { hostname, err := os.Hostname() diff --git a/internal/server/handler/handler.go b/internal/server/handler/handler.go index 0a9e34f..80494dd 100644 --- a/internal/server/handler/handler.go +++ b/internal/server/handler/handler.go @@ -96,7 +96,7 @@ func (h Handler) mergeFromPartner(partner string) error { pairs []repository.EntryPair ) - if err := easyhttp.GetData(uri, h.conf.ApiKey, &pairs); err != nil { + if err := easyhttp.GetData(uri, h.conf.APIKey, &pairs); err != nil { return err } @@ -110,7 +110,7 @@ func (h Handler) mergeFromPartner(partner string) error { uri = fmt.Sprintf("%s/get?id=%s", partner, pair.ID) ) - if err := easyhttp.GetData(uri, h.conf.ApiKey, &entry); err != nil { + if err := easyhttp.GetData(uri, h.conf.APIKey, &entry); err != nil { errs = append(errs, err) continue } diff --git a/internal/server/server.go b/internal/server/server.go index 010b5b7..3c5cd27 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -35,7 +35,7 @@ func (serv Server) Handle(name string, handler HandlerFuncWithError) { log.Println("Someone requested", handlerName) // The health endpoint doesn't require an API key - if handlerName != HealthHandlerName && r.Header.Get("X-API-KEY") != serv.Conf.ApiKey { + if handlerName != HealthHandlerName && r.Header.Get("X-API-KEY") != serv.Conf.APIKey { http.Error(w, "Invalid API key", http.StatusUnauthorized) log.Println("Unauthorized access attempt to", handlerName) return |
