robot-control-manager/modules/request/request.go

50 lines
910 B
Go

package request
import (
"encoding/json"
"errors"
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog/log"
)
func Request(requestMethod string, url string, body any) error {
a := fiber.AcquireAgent()
req := a.Request()
req.Header.SetMethod(requestMethod)
addr := "http://" + url
req.SetRequestURI(addr)
req.Header.SetContentType("application/json")
reqestBodyBytes, err := json.Marshal(body)
if err != nil {
log.Error().Msgf("Failed to marshal request body, err: %s", err)
return err
}
req.SetBody(reqestBodyBytes)
if err := a.Parse(); err != nil {
log.Error().Msgf("Failed to parse request, err: %s", err)
return err
}
code, _, errB := a.Bytes()
if len(errB) != 0 {
log.Error().Msgf("Failed to parse bytes %v", errB)
return errB[0]
}
if code != 200 {
log.Error().Msgf("Request failed with code %v", code)
return errors.New("request failed")
}
return nil
}