diff options
| author | Paul Buetow <paul@buetow.org> | 2024-07-14 23:55:53 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-07-14 23:55:53 +0300 |
| commit | 95b055a9f40787d15c42927041c9e65c49b05ea5 (patch) | |
| tree | 62a3361cf520077c88a4c672810e9f31c7549954 /internal | |
| parent | 50b06ab176a24d7ee842e3e07d7462ef465b6762 (diff) | |
make it all context.Context aware
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/client/tui/submit.go | 3 | ||||
| -rw-r--r-- | internal/easyhttp/easyhttp.go | 22 | ||||
| -rw-r--r-- | internal/server/handler/handler.go | 13 |
3 files changed, 20 insertions, 18 deletions
diff --git a/internal/client/tui/submit.go b/internal/client/tui/submit.go index 1176e3c..5e489cb 100644 --- a/internal/client/tui/submit.go +++ b/internal/client/tui/submit.go @@ -1,6 +1,7 @@ package tui import ( + "context" "fmt" "codeberg.org/snonux/gos/internal/config/client" @@ -23,7 +24,7 @@ func submitMessage(conf client.ClientConfig, filePath string, callback func() er servers, err := conf.Servers() if err == nil { var entry types.Entry - err = easyhttp.PostData("/submit", conf.APIKey, &entry, servers...) + err = easyhttp.PostData(context.Background(), "/submit", conf.APIKey, &entry, servers...) } return func() tea.Msg { diff --git a/internal/easyhttp/easyhttp.go b/internal/easyhttp/easyhttp.go index a28a77e..32a3069 100644 --- a/internal/easyhttp/easyhttp.go +++ b/internal/easyhttp/easyhttp.go @@ -2,6 +2,7 @@ package easyhttp import ( "bytes" + "context" "encoding/json" "fmt" "io" @@ -9,13 +10,13 @@ import ( "sync" ) -func Get(uri, apiKey string) ([]byte, error) { +func Get(ctx context.Context, uri, apiKey string) ([]byte, error) { var ( client = &http.Client{} bytes []byte ) - req, err := http.NewRequest("GET", uri, nil) + req, err := http.NewRequestWithContext(ctx, "GET", uri, nil) if err != nil { return bytes, fmt.Errorf("%s: %w", uri, err) } @@ -37,8 +38,8 @@ func Get(uri, apiKey string) ([]byte, error) { } // Get data from JSON -func GetData[T any](uri, apiKey string, data *T) error { - bytes, err := Get(uri, apiKey) +func GetData[T any](ctx context.Context, uri, apiKey string, data *T) error { + bytes, err := Get(ctx, uri, apiKey) if err != nil { return err } @@ -46,9 +47,8 @@ func GetData[T any](uri, apiKey string, data *T) error { return json.Unmarshal(bytes, data) } -func Post(uri, apiKey string, data []byte) ([]byte, error) { - // TODO: Use contexts in Post and Get requests, e.g. NewRequestWithContext - req, err := http.NewRequest("POST", uri, bytes.NewBuffer(data)) +func Post(ctx context.Context, uri, apiKey string, data []byte) ([]byte, error) { + req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewBuffer(data)) if err != nil { return []byte{}, fmt.Errorf("%s: %w", uri, err) } @@ -71,7 +71,7 @@ func Post(uri, apiKey string, data []byte) ([]byte, error) { } // Submit structure as JSON to API -func PostData[T any](uri, apiKey string, data *T, servers ...string) error { +func PostData[T any](ctx context.Context, uri, apiKey string, data *T, servers ...string) error { if len(servers) == 0 { return fmt.Errorf("no server configured") } @@ -82,7 +82,7 @@ func PostData[T any](uri, apiKey string, data *T, servers ...string) error { wg.Add(1) go func(server string) { defer wg.Done() - errs.Append(postData[T](fmt.Sprintf("%s/%s", server, uri), apiKey, data)) + errs.Append(postData[T](ctx, fmt.Sprintf("%s/%s", server, uri), apiKey, data)) }(server) } @@ -90,11 +90,11 @@ func PostData[T any](uri, apiKey string, data *T, servers ...string) error { return errs.Join() } -func postData[T any](uri, apiKey string, data *T) error { +func postData[T any](ctx context.Context, uri, apiKey string, data *T) error { jsonData, err := json.Marshal(data) if err != nil { return err } - _, err = Post(uri, apiKey, jsonData) + _, err = Post(ctx, uri, apiKey, jsonData) return err } diff --git a/internal/server/handler/handler.go b/internal/server/handler/handler.go index 80494dd..41664b1 100644 --- a/internal/server/handler/handler.go +++ b/internal/server/handler/handler.go @@ -1,6 +1,7 @@ package handler import ( + "context" "errors" "fmt" "io" @@ -25,7 +26,7 @@ func New(conf server.ServerConfig) Handler { } } -func (h Handler) Submit(w http.ResponseWriter, r *http.Request) error { +func (h Handler) Submit(ctx context.Context, w http.ResponseWriter, r *http.Request) error { if r.Method != "POST" { return fmt.Errorf("expexted POST request") } @@ -71,11 +72,11 @@ func (h Handler) Get(w http.ResponseWriter, r *http.Request) error { return nil } -func (h Handler) Merge(w http.ResponseWriter, r *http.Request) error { +func (h Handler) Merge(ctx context.Context, w http.ResponseWriter, r *http.Request) error { var errs []error for _, partner := range h.conf.Partners() { - if err := h.mergeFromPartner(partner); err != nil { + if err := h.mergeFromPartner(ctx, partner); err != nil { errs = append(errs, err) } } @@ -88,7 +89,7 @@ func (h Handler) Merge(w http.ResponseWriter, r *http.Request) error { return nil } -func (h Handler) mergeFromPartner(partner string) error { +func (h Handler) mergeFromPartner(ctx context.Context, partner string) error { var ( errs []error uri = fmt.Sprintf("%s/list", partner) @@ -96,7 +97,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(ctx, uri, h.conf.APIKey, &pairs); err != nil { return err } @@ -110,7 +111,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(ctx, uri, h.conf.APIKey, &entry); err != nil { errs = append(errs, err) continue } |
