notifier/internal/clients/customer.go

60 lines
1.3 KiB
Go
Raw Normal View History

package clients
import (
"encoding/json"
"fmt"
2024-12-16 12:07:19 +00:00
"gitea.pena/PenaSide/notifier/internal/models"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
)
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 {
2024-12-16 12:07:19 +00:00
c.logger.Error(errSendingRequest.Error(), 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
}