package clients import ( "encoding/json" "fmt" "github.com/gofiber/fiber/v2" "go.uber.org/zap" "gitea.pena/PenaSide/notifier/internal/models" ) type Customer struct { url string fiberClient *fiber.Client logger *zap.Logger } type CustomerDeps struct { Url string FiberClient *fiber.Client Logger *zap.Logger } func NewCustomerClient(deps CustomerDeps) *Customer { if deps.FiberClient == nil { deps.FiberClient = fiber.AcquireClient() } return &Customer{ url: deps.Url, fiberClient: deps.FiberClient, logger: deps.Logger, } } func (c *Customer) GetAccount(userID string) (models.Account, error) { var account models.Account reqURL := c.url + "/account/" + userID resp := c.fiberClient.Get(reqURL) statusCode, body, errs := resp.Bytes() if errs != nil { c.logger.Error("Error sending request:", zap.Error(errs[0])) return account, errs[0] } if statusCode != fiber.StatusOK { c.logger.Error("Unexpected status code", zap.Int("status_code", statusCode)) return account, fmt.Errorf("unexpected status code: %d", statusCode) } if err := json.Unmarshal(body, &account); err != nil { c.logger.Error("Error parsing response body", zap.Error(err)) return account, err } return account, nil }