Class: ApiBrasil::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/api_brasil/client.rb

Overview

Cliente oficial da plataforma APIBrasil.

api = ApiBrasil.new(
bearer_token: ENV["APIBRASIL_BEARER_TOKEN"],
device_token: ENV["APIBRASIL_DEVICE_TOKEN"]
)

api.whatsapp.send_text("number" => "5511999999999", "text" => "Ola!")
empresa = api.consulta.cnpj("cnpj" => "00000000000000")

Credenciais nao informadas sao lidas das variaveis de ambiente APIBRASIL_BEARER_TOKEN, APIBRASIL_DEVICE_TOKEN, APIBRASIL_SECRET_KEY e APIBRASIL_BASE_URL.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Client

Returns a new instance of Client.

Parameters:

  • config (Hash) (defaults to: {})

    veja Core::HttpClient para as chaves aceitas



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/api_brasil/client.rb', line 139

def initialize(config = {})
  @http = Core::HttpClient.new(config)

  @auth = Services::Platform::AuthService.new(@http)
  @devices = Services::Platform::DevicesService.new(@http)

  @whatsapp = Services::Messaging::WhatsAppService.new(@http)
  @evolution = Services::Messaging::EvolutionService.new(@http)
  @whatsmeow = Services::Messaging::WhatsMeowService.new(@http)
  @sms = Services::Messaging::SmsService.new(@http)

  @dados = Services::Data::DadosService.new(@http)
  @vehicles = Services::Data::VehiclesService.new(@http)
  @fipe = Services::Data::FipeService.new(@http)
  @correios = Services::Data::CorreiosService.new(@http)
  @cep = Services::Data::CepService.new(@http)
  @geolocation = Services::Data::GeolocationService.new(@http)
  @geomatrix = Services::Data::GeomatrixService.new(@http)
  @recognize = Services::Data::RecognizeService.new(@http)
  @ddd = Services::Data::DddService.new(@http)
  @holidays = Services::Data::HolidaysService.new(@http)
  @translate = Services::Data::TranslateService.new(@http)
  @weather = Services::Data::WeatherService.new(@http)
  @loterias = Services::Data::LoteriasService.new(@http)
  @database_ip = Services::Data::DatabaseIpService.new(@http)

  @consulta = Services::Data::ConsultaService.new(@http)
  @ura = Services::Data::UraService.new(@http)
  @chip_virtual = Services::Data::ChipVirtualService.new(@http)
  @bulk = Services::Data::BulkService.new(@http)

  @catalog = Services::Platform::CatalogService.new(@http)
  @account = Services::Platform::AccountService.new(@http)
  @payments = Services::Platform::PaymentsService.new(@http)
  @ip_whitelist = Services::Platform::IpWhitelistService.new(@http)
  @bearer_rate_limit = Services::Platform::BearerRateLimitService.new(@http)
  @reports = Services::Platform::ReportsService.new(@http)
end

Instance Attribute Details

#accountServices::Platform::AccountService (readonly)

Returns saldo, faturas, notificacoes, tickets.

Returns:



124
125
126
# File 'lib/api_brasil/client.rb', line 124

def 
  @account
end

#authServices::Platform::AuthService (readonly)

Returns login, 2FA, cadastro, senha e perfil.

Returns:



49
50
51
# File 'lib/api_brasil/client.rb', line 49

def auth
  @auth
end

#bearer_rate_limitServices::Platform::BearerRateLimitService (readonly)

Returns rate limit por Bearer Token.

Returns:



133
134
135
# File 'lib/api_brasil/client.rb', line 133

def bearer_rate_limit
  @bearer_rate_limit
end

#bulkServices::Data::BulkService (readonly)

Returns execucao em lote.

Returns:



118
119
120
# File 'lib/api_brasil/client.rb', line 118

def bulk
  @bulk
end

#catalogServices::Platform::CatalogService (readonly)

Returns catalogo de APIs, planos, docs e servidores.

Returns:



121
122
123
# File 'lib/api_brasil/client.rb', line 121

def catalog
  @catalog
end

#cepServices::Data::CepService (readonly)

Returns CEP + geolocalizacao.

Returns:



79
80
81
# File 'lib/api_brasil/client.rb', line 79

def cep
  @cep
end

#chip_virtualServices::Data::ChipVirtualService (readonly)

Returns chip virtual.

Returns:



115
116
117
# File 'lib/api_brasil/client.rb', line 115

def chip_virtual
  @chip_virtual
end

#consultaServices::Data::ConsultaService (readonly)

Returns consultas por credito.

Returns:



109
110
111
# File 'lib/api_brasil/client.rb', line 109

def consulta
  @consulta
end

#correiosServices::Data::CorreiosService (readonly)

Returns Correios.

Returns:



76
77
78
# File 'lib/api_brasil/client.rb', line 76

def correios
  @correios
end

#dadosServices::Data::DadosService (readonly)

Returns dados cadastrais device-based.

Returns:



67
68
69
# File 'lib/api_brasil/client.rb', line 67

def dados
  @dados
end

#database_ipServices::Data::DatabaseIpService (readonly)

Returns GeoIP (/database/ip).

Returns:



106
107
108
# File 'lib/api_brasil/client.rb', line 106

def database_ip
  @database_ip
end

#dddServices::Data::DddService (readonly)

Returns DDD.

Returns:



91
92
93
# File 'lib/api_brasil/client.rb', line 91

def ddd
  @ddd
end

#devicesServices::Platform::DevicesService (readonly)

Returns gestao de devices.

Returns:



52
53
54
# File 'lib/api_brasil/client.rb', line 52

def devices
  @devices
end

#evolutionServices::Messaging::EvolutionService (readonly)

Returns Evolution API (/evolution/{controller}/{action}).

Returns:



58
59
60
# File 'lib/api_brasil/client.rb', line 58

def evolution
  @evolution
end

#fipeServices::Data::FipeService (readonly)

Returns tabela FIPE.

Returns:



73
74
75
# File 'lib/api_brasil/client.rb', line 73

def fipe
  @fipe
end

#geolocationServices::Data::GeolocationService (readonly)

Returns geolocalizacao.

Returns:



82
83
84
# File 'lib/api_brasil/client.rb', line 82

def geolocation
  @geolocation
end

#geomatrixServices::Data::GeomatrixService (readonly)

Returns matriz de distancias.

Returns:



85
86
87
# File 'lib/api_brasil/client.rb', line 85

def geomatrix
  @geomatrix
end

#holidaysServices::Data::HolidaysService (readonly)

Returns feriados.

Returns:



94
95
96
# File 'lib/api_brasil/client.rb', line 94

def holidays
  @holidays
end

#httpCore::HttpClient (readonly)

Returns cliente HTTP interno (headers, retry, hooks, erros).

Returns:



46
47
48
# File 'lib/api_brasil/client.rb', line 46

def http
  @http
end

#ip_whitelistServices::Platform::IpWhitelistService (readonly)

Returns IP whitelist da conta.

Returns:



130
131
132
# File 'lib/api_brasil/client.rb', line 130

def ip_whitelist
  @ip_whitelist
end

#loteriasServices::Data::LoteriasService (readonly)

Returns loterias.

Returns:



103
104
105
# File 'lib/api_brasil/client.rb', line 103

def loterias
  @loterias
end

#paymentsServices::Platform::PaymentsService (readonly)

Returns recargas e pagamentos (PIX, boleto, cartao).

Returns:



127
128
129
# File 'lib/api_brasil/client.rb', line 127

def payments
  @payments
end

#recognizeServices::Data::RecognizeService (readonly)

Returns OCR / Google Vision.

Returns:



88
89
90
# File 'lib/api_brasil/client.rb', line 88

def recognize
  @recognize
end

#reportsServices::Platform::ReportsService (readonly)

Returns relatorios e dashboard de consumo.

Returns:



136
137
138
# File 'lib/api_brasil/client.rb', line 136

def reports
  @reports
end

#smsServices::Messaging::SmsService (readonly)

Returns SMS (/sms/{action} e /sms/send/credits).

Returns:



64
65
66
# File 'lib/api_brasil/client.rb', line 64

def sms
  @sms
end

#translateServices::Data::TranslateService (readonly)

Returns traducao.

Returns:



97
98
99
# File 'lib/api_brasil/client.rb', line 97

def translate
  @translate
end

#uraServices::Data::UraService (readonly)

Returns URA reversa / ligacoes.

Returns:



112
113
114
# File 'lib/api_brasil/client.rb', line 112

def ura
  @ura
end

#vehiclesServices::Data::VehiclesService (readonly)

Returns veiculos por placa.

Returns:



70
71
72
# File 'lib/api_brasil/client.rb', line 70

def vehicles
  @vehicles
end

#weatherServices::Data::WeatherService (readonly)

Returns clima.

Returns:



100
101
102
# File 'lib/api_brasil/client.rb', line 100

def weather
  @weather
end

#whatsappServices::Messaging::WhatsAppService (readonly)

Returns WhatsApp device-based (/whatsapp/{action}).

Returns:



55
56
57
# File 'lib/api_brasil/client.rb', line 55

def whatsapp
  @whatsapp
end

#whatsmeowServices::Messaging::WhatsMeowService (readonly)

Returns WhatsMeow (/whatsmeow/{action}).

Returns:



61
62
63
# File 'lib/api_brasil/client.rb', line 61

def whatsmeow
  @whatsmeow
end

Class Method Details

.login(credentials, config = {}) ⇒ Hash

Faz login e retorna um cliente ja autenticado. Levanta ApiBrasilError se a conta exigir 2FA - nesse caso crie o cliente manualmente e use auth.login + auth.verify_2fa.

Parameters:

  • credentials (Hash)

    email e password

  • config (Hash) (defaults to: {})

Returns:

  • (Hash)

    { client: Client, session: Object }



185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/api_brasil/client.rb', line 185

def self.(credentials, config = {})
  client = new(config)
  session = client.auth.(credentials)

  if session.is_a?(Hash) && session["requires_2fa"]
    raise Core::Errors::ApiBrasilError.new(
      "Esta conta exige autenticacao em dois fatores. Use auth.login + auth.verify_2fa.",
      response: session
    )
  end

  { client: client, session: session }
end

Instance Method Details

#bearer_tokenString?

Returns:

  • (String, nil)


216
217
218
# File 'lib/api_brasil/client.rb', line 216

def bearer_token
  http.bearer_token
end

#bearer_token=(token) ⇒ Object



220
221
222
# File 'lib/api_brasil/client.rb', line 220

def bearer_token=(token)
  http.bearer_token = token
end

#device_tokenString?

Returns:

  • (String, nil)


225
226
227
# File 'lib/api_brasil/client.rb', line 225

def device_token
  http.device_token
end

#device_token=(token) ⇒ Object



229
230
231
# File 'lib/api_brasil/client.rb', line 229

def device_token=(token)
  http.device_token = token
end

#request(method, path, body = nil, options = {}) ⇒ Object

Porta de saida generica: chama qualquer endpoint do gateway com os headers de autenticacao ja configurados. Use para rotas que ainda nao tem metodo dedicado na SDK.

api.request("POST", "/consulta/cpf/credits", "cpf" => "...")

Returns:

  • (Object)


248
249
250
# File 'lib/api_brasil/client.rb', line 248

def request(method, path, body = nil, options = {})
  http.request(method, path, body, options)
end

#set_bearer_token(token) ⇒ self

Define/atualiza o Bearer Token do cliente.

Returns:

  • (self)


202
203
204
205
# File 'lib/api_brasil/client.rb', line 202

def set_bearer_token(token)
  http.bearer_token = token
  self
end

#set_device_token(token) ⇒ self

Define/atualiza o DeviceToken do cliente.

Returns:

  • (self)


210
211
212
213
# File 'lib/api_brasil/client.rb', line 210

def set_device_token(token)
  http.device_token = token
  self
end

#with_device(device_token) ⇒ Client

Retorna um novo cliente com as mesmas credenciais, mas apontando para outro device - util para gerenciar varios numeros/instancias.

Returns:



237
238
239
# File 'lib/api_brasil/client.rb', line 237

def with_device(device_token)
  self.class.new(http.to_config.merge(device_token: device_token))
end