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 }