60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package clients
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"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 {
|
|
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
|
|
}
|