From c3c5be0d18f0d93a4b999c4063a9f60488b0c20b Mon Sep 17 00:00:00 2001 From: Zlatko Bratkovic Date: Tue, 18 Feb 2025 10:45:27 +0100 Subject: [PATCH] MINOR: add option to set url_env and private_token_env for aspell --- .aspell.yml | 1 + aspell/aspell.go | 2 ++ aspell/new.go | 8 ++++++-- aspell/remote.go | 14 +++++++++++--- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.aspell.yml b/.aspell.yml index b579951..6d61cab 100644 --- a/.aspell.yml +++ b/.aspell.yml @@ -33,3 +33,4 @@ allowed: - json - req - nallowed + - url diff --git a/aspell/aspell.go b/aspell/aspell.go index dcd44d9..0e7e80b 100644 --- a/aspell/aspell.go +++ b/aspell/aspell.go @@ -16,7 +16,9 @@ import ( type RemoteFile struct { URL string `yaml:"url"` + URLEnv string `yaml:"url_env"` HeaderFromENV string `yaml:"header_from_env"` + PrivateTokenENV string `yaml:"private_token_env"` AllowedItemsKey string `yaml:"allowed_items_key"` } diff --git a/aspell/new.go b/aspell/new.go index e77608a..80096ce 100644 --- a/aspell/new.go +++ b/aspell/new.go @@ -14,7 +14,7 @@ func New(filename string) (Aspell, error) { var err error fileExists := true if data, err = os.ReadFile(filename); err != nil { - log.Printf("warning: aspell exceptions file not found (%s)", err) + log.Printf("warning: aspell exceptions file not found (%s)", err.Error()) fileExists = false } @@ -25,11 +25,15 @@ func New(filename string) (Aspell, error) { } var extraAllowedWords []string - if aspell.RemoteFile.URL != "" { + if aspell.RemoteFile.URL != "" || aspell.RemoteFile.URLEnv != "" { extraAllowedWords, err = fetchRemoteFile(aspell) if err != nil { + log.Printf("warning: aspell remote file (%s)", err.Error()) return Aspell{}, err } + if len(extraAllowedWords) == 0 { + log.Printf("warning: aspell remote file is empty") + } } for i, word := range aspell.AllowedWords { diff --git a/aspell/remote.go b/aspell/remote.go index 8fded05..ce2a7e2 100644 --- a/aspell/remote.go +++ b/aspell/remote.go @@ -2,6 +2,7 @@ package aspell import ( "encoding/json" + "fmt" "net/http" "os" "strings" @@ -11,8 +12,8 @@ import ( func fetchRemoteFile(aspell Aspell) ([]string, error) { url := aspell.RemoteFile.URL - if url == "" { - return []string{}, nil + if aspell.RemoteFile.URLEnv != "" { + url = os.Getenv(aspell.RemoteFile.URLEnv) } req, err := http.NewRequest("GET", url, nil) @@ -24,15 +25,22 @@ func fetchRemoteFile(aspell Aspell) ([]string, error) { envValue := os.Getenv(aspell.RemoteFile.HeaderFromENV) req.Header.Set(aspell.RemoteFile.HeaderFromENV, envValue) } + if aspell.RemoteFile.PrivateTokenENV != "" { + envValue := os.Getenv(aspell.RemoteFile.PrivateTokenENV) + req.Header.Set("PRIVATE-TOKEN", envValue) + } client := &http.Client{} resp, err := client.Do(req) if err != nil { return nil, err } - defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("error fetching remote file: %s", resp.Status) + } + var data map[string]interface{} err = json.NewDecoder(resp.Body).Decode(&data) if err != nil {