summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/config/client/client.go9
-rw-r--r--internal/config/config.go21
-rw-r--r--internal/config/config_test.go21
-rw-r--r--internal/config/server/server.go16
-rw-r--r--internal/server/handler/handler.go4
-rw-r--r--internal/server/server.go2
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