From 51ebb1e131818f9b23dd25dea5be841a90476d50 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 15 May 2024 21:01:14 +0300 Subject: initial merge operation --- cmd/gosd/main.go | 2 +- internal/config/server/server.go | 5 +++++ internal/easyhttp/easyhttp.go | 46 ++++++++++++++++++++++++++++++++++++++++ internal/server/handle/handle.go | 10 ++++++++- 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 internal/easyhttp/easyhttp.go diff --git a/cmd/gosd/main.go b/cmd/gosd/main.go index 06a0353..f8173b7 100644 --- a/cmd/gosd/main.go +++ b/cmd/gosd/main.go @@ -39,7 +39,7 @@ func main() { }) serv.Handle("merge", func(w http.ResponseWriter, r *http.Request) error { - return handle.Merge(w, r, conf.DataDir) + return handle.Merge(w, r, conf) }) log.Println("Server is starting on", conf.ListenAddr) diff --git a/internal/config/server/server.go b/internal/config/server/server.go index 6778b1b..0870950 100644 --- a/internal/config/server/server.go +++ b/internal/config/server/server.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "os" + "strings" "codeberg.org/snonux/gos/internal/config" ) @@ -39,3 +40,7 @@ func New(configFile string) (ServerConfig, error) { return conf, nil } + +func (conf ServerConfig) Partners() []string { + return strings.Split(conf.Partner, ",") +} diff --git a/internal/easyhttp/easyhttp.go b/internal/easyhttp/easyhttp.go new file mode 100644 index 0000000..aa405e6 --- /dev/null +++ b/internal/easyhttp/easyhttp.go @@ -0,0 +1,46 @@ +package easyhttp + +import ( + "io" + "net/http" + "encoding/json" +) + +func Get(uri, apiKey string) ([]byte, error) { + var ( + client = &http.Client{} + bytes []byte + ) + + req, err := http.NewRequest("GET", uri, nil) + if err != nil { + return bytes, err + } + + req.Header.Set("X-API-KEY", apiKey) + + resp, err := client.Do(req) + if err != nil { + return bytes, err + } + defer resp.Body.Close() + + bytes, err = io.ReadAll(resp.Body) + if err != nil { + return bytes, err + } + + return bytes, nil +} + +func GetFromJson[T any](uri, apiKey string) (T, error) { + var data T + + bytes, err := Get(uri, apiKey) + if err != nil { + return data, err + } + + err = json.Unmarshal(bytes, &data) + return data, err +} diff --git a/internal/server/handle/handle.go b/internal/server/handle/handle.go index 55f7b3e..011e31c 100644 --- a/internal/server/handle/handle.go +++ b/internal/server/handle/handle.go @@ -3,12 +3,15 @@ package handle import ( "fmt" "io" + "log" "net/http" "os" "regexp" "time" "codeberg.org/snonux/gos/internal" + "codeberg.org/snonux/gos/internal/config/server" + "codeberg.org/snonux/gos/internal/easyhttp" "codeberg.org/snonux/gos/internal/server/repository" "codeberg.org/snonux/gos/internal/types" ) @@ -72,7 +75,12 @@ func Get(w http.ResponseWriter, r *http.Request, dataDir string) error { return nil } -func Merge(w http.ResponseWriter, r *http.Request, dataDir string) error { +func Merge(w http.ResponseWriter, r *http.Request, conf server.ServerConfig) error { + for _, partner := range conf.Partners() { + uri := fmt.Sprintf("%s/list", partner) + data, err := easyhttp.Get(uri, conf.ApiKey) + log.Println(string(data), err) + } return nil } -- cgit v1.2.3