Files
netmaker/cli/functions/http_client.go
2022-11-28 18:16:56 +05:30

44 lines
1013 B
Go

package functions
import (
"bytes"
"encoding/json"
"io/ioutil"
"log"
"net/http"
)
func Request[T any](method, route string, payload any) *T {
requestURL := "http://localhost:3000"
var (
req *http.Request
err error
)
if payload == nil {
req, err = http.NewRequest(method, requestURL+route, nil)
} else {
payloadBytes, jsonErr := json.Marshal(payload)
if jsonErr != nil {
log.Fatalf("Error in request JSON marshalling: %s", err)
}
req, err = http.NewRequest(method, requestURL+route, bytes.NewReader(payloadBytes))
}
if err != nil {
log.Fatalf("Client could not create request: %s", err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatalf("Client error making http request: %s", err)
}
resBodyBytes, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Fatalf("Client could not read response body: %s", err)
}
body := new(T)
if err := json.Unmarshal(resBodyBytes, body); err != nil {
log.Fatalf("Error unmarshalling JSON: %s", err)
}
return body
}