customer/internal/client/auth.go

52 lines
1.4 KiB
Go
Raw Normal View History

2023-05-16 01:12:07 +00:00
package client
import (
"context"
"net/url"
"github.com/sirupsen/logrus"
2023-05-16 04:01:55 +00:00
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/errors"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/utils"
"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/client"
2023-05-16 01:12:07 +00:00
)
type AuthClientDeps struct {
Logger *logrus.Logger
URLs *models.AuthMicroServiceURL
}
type AuthClient struct {
logger *logrus.Logger
urls *models.AuthMicroServiceURL
}
func NewAuthClient(deps *AuthClientDeps) *AuthClient {
return &AuthClient{
logger: deps.Logger,
urls: deps.URLs,
}
}
func (receiver *AuthClient) GetUser(ctx context.Context, userID string) (*models.AuthUser, error) {
userURL, err := url.JoinPath(receiver.urls.User, userID)
if err != nil {
return nil, errors.ErrInvalidReturnValue
}
response, err := client.Get[models.AuthUser, models.FastifyError](ctx, &client.RequestSettings{
URL: userURL,
Headers: map[string]string{"Content-Type": "application/json"},
})
if err != nil {
receiver.logger.Errorf("failed to get user on <GetUser> of <AuthClient>: %v", err)
return nil, err
}
if response.Error != nil {
receiver.logger.Errorf("failed request on <GetUser> of <AuthClient>: %s", response.Error.Message)
return nil, utils.DetermineClientErrorResponse(response.StatusCode)
}
return response.Body, nil
}