summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-05-15 21:01:14 +0300
committerPaul Buetow <paul@buetow.org>2024-05-15 21:01:14 +0300
commit51ebb1e131818f9b23dd25dea5be841a90476d50 (patch)
tree83d7d81fb6528a37177f7f17ebb112beaee9325c /internal
parentb97854c8ec2665887121d773ab994a09ca768adb (diff)
initial merge operation
Diffstat (limited to 'internal')
-rw-r--r--internal/config/server/server.go5
-rw-r--r--internal/easyhttp/easyhttp.go46
-rw-r--r--internal/server/handle/handle.go10
3 files changed, 60 insertions, 1 deletions
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
}