github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/bank/bank.go (about)

     1  package bank
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/mundipagg/boleto-api/bank/services/jpmorgan"
     7  	"github.com/mundipagg/boleto-api/log"
     8  	"github.com/mundipagg/boleto-api/models"
     9  )
    10  
    11  //Bank é a interface que vai oferecer os serviços em comum entre os bancos
    12  type Bank interface {
    13  	ProcessBoleto(*models.BoletoRequest) (models.BoletoResponse, error)
    14  	RegisterBoleto(*models.BoletoRequest) (models.BoletoResponse, error)
    15  	ValidateBoleto(*models.BoletoRequest) models.Errors
    16  	GetBankNumber() models.BankNumber
    17  	GetBankNameIntegration() string
    18  	GetErrorsMap() map[string]int
    19  	Log() *log.Log
    20  }
    21  
    22  //Get retorna estrategia de acordo com o banco ou erro caso o banco não exista
    23  func Get(boleto models.BoletoRequest) (Bank, error) {
    24  	switch boleto.BankNumber {
    25  	case models.BancoDoBrasil:
    26  		return getIntegrationBB(boleto)
    27  	case models.Bradesco:
    28  		return getIntegrationBradesco(boleto)
    29  	case models.Caixa:
    30  		return getIntegrationCaixa(boleto)
    31  	case models.Citibank:
    32  		return getIntegrationCitibank(boleto)
    33  	case models.Santander:
    34  		return getIntegrationSantander(boleto)
    35  	case models.Itau:
    36  		return getIntegrationItau(boleto)
    37  	case models.Pefisa:
    38  		return getIntegrationPefisa(boleto)
    39  	case models.Stone:
    40  		return getIntegrationStone(boleto)
    41  	case models.JPMorgan:
    42  		return jpmorgan.New()
    43  	default:
    44  		return nil, models.NewErrorResponse("MPBankNumber", fmt.Sprintf("Banco %d não existe", boleto.BankNumber))
    45  	}
    46  }