customer/internal/interface/client/verification.go

65 lines
1.6 KiB
Go
Raw Normal View History

package client
import (
"context"
"fmt"
"log"
"net/url"
2023-12-01 11:59:27 +00:00
"go.uber.org/zap"
"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/pkg/client"
)
type VerificationClientDeps struct {
Logger *zap.Logger
URLs *models.VerificationMicroserviceURL
}
type VerificationClient struct {
logger *zap.Logger
urls *models.VerificationMicroserviceURL
}
func NewVerificationClient(deps VerificationClientDeps) *VerificationClient {
if deps.Logger == nil {
log.Panicln("logger is nil on <NewVerificationClient>")
}
if deps.URLs == nil {
log.Panicln("urls is nil on <NewVerificationClient>")
}
return &VerificationClient{
logger: deps.Logger,
urls: deps.URLs,
}
}
2024-02-16 22:04:29 +00:00
func (receiver *VerificationClient) GetVerification(ctx context.Context, token, userID string) (*models.Verification, errors.Error) {
verifURL, err := url.JoinPath(receiver.urls.Verification, userID)
if err != nil {
return nil, errors.New(
fmt.Errorf("failed to join path on <GetVerification> of <VerificationClient>: %w", err),
errors.ErrInternalError,
)
}
response, err := client.Get[models.Verification, models.FastifyError](ctx, &client.RequestSettings{
URL: verifURL,
2024-02-16 22:04:29 +00:00
Headers: map[string]string{
"Content-Type": "application/json",
"Authorization": token,
},
})
if err != nil {
2024-02-04 20:20:52 +00:00
if response.StatusCode == 404 {
return &models.Verification{},nil
2024-02-04 20:20:52 +00:00
}
return nil, errors.New(err, errors.ErrInternalError)
}
return response.Body, nil
}