package service import ( "context" "fmt" "card-to-iban/internal/card" ) type CardToIBANClient interface { Convert(ctx context.Context, cardNumber string) (string, error) } type CardService struct { client CardToIBANClient } func NewCardService(client CardToIBANClient) *CardService { return &CardService{ client: client, } } func (s *CardService) ConvertCardToIBAN( ctx context.Context, cardNumber string, ) (string, error) { if err := card.Validate(cardNumber); err != nil { return "", err } iban, err := s.client.Convert(ctx, cardNumber) if err != nil { return "", fmt.Errorf("convert card to iban: %w", err) } return iban, nil }