Simples instalação via ruby gem
# gem install bipbop-client
Biblioteca em Ruby para interação com a Bipbop API. Com ela você pode fazer consulta de dados cadastrais, consulta do Perfil Consumidor para SAC, Correios, placas de veículos entre outras bases. Tudo que você precisa é adquirir uma chave de API válida entrando em contato com a Bipbop.
Existe uma classe especial chamada NameByCPFCNPJ
cujo método estático evaluate pode ser usado para consultar o nome através do CPF/CNPJ, passando-se o CPF/CNPJ como string e opcionalmente a data de nascimento como TIME:
puts Bipbop::Client::NameByCpfCnpj.evaluate(cpf, nasc)
Com uma chave de API válida em mãos você pode interagir com bancos os quais sua chave tem acesso. Nesse repositório você encontrará o arquivo example.rb com o codigo a abaixo.
O primeiro passo é saber quais são esses bancos. Para isso temos a classe ServiceDiscovery
que usa uma instância de WebService
, criada a partir de sua chave:
require 'bipbop'
Bipbop::Client::Config.new({:bipbop_api_key => # sua chave #})
webservice = Bipbop::Client::Webservice.new
service_discovery = Bipbop::Client::ServiceDiscovery.factory(webservice)
puts "\n\n== Listando todos os databases ==\n\n"
service_discovery.list_databases() { |database_info|
database = service_discovery.get_database(database_info.first['name'])
puts "Available Database: %s\nDescription: %s\nURL: %s\n\n" % [database.name(), database.get("description"), database.get("url")]
}
Vamos tomar como exemplo o database PLACA e descobrir quais tabelas podemos consultar e com quais campos:
puts "\n== Listando tabelas de PLACA ==\n\n"
database_placa = service_discovery.get_database('PLACA')
database_placa.list_tables() { |table_info|
table = database_placa.get_table(table_info.first['name'])
puts "Available Table: %s\nDescription: %s\nURL: %s\n\n" % [table.name(), table.get("description"), table.get("url")]
}
Nossa listagem retornou a tabela CONSULTA mas quais serão os campos que podemos usar como parâmetros em nossa consulta? Vamos descobrir:
tabela_consulta = database_placa.get_table('CONSULTA')
puts "\n== Listando campos de CONSULTA ==\n\n"
tabela_consulta.get_fields() { |field|
puts "Available Field: %s\n\n" % field.name()
}
Nossa busca retornou o campo placa.
Com esses dados em mãos torna-se simples montar nossa consulta. Basta utilizarmos o método post de WebService
da seguinte forma:
placa = webservice.post("SELECT FROM 'PLACA'.'CONSULTA'", {
"placa" => "XXX9999"
});
Esse método retorna um Nokogiri::XML::Document
// Visualizando as tags do documento retornado
puts placa
// Recuperando a marca do veículo
puts (placa.xpath("string(//BPQL//body//marca/.)"));
#PUSH
Criando um PUSH
push = Bipbop::Client::Push.new(webservice)
response = push.create('suaLabel', 'urlDeCallBack' , "SELECT FROM 'PLACA'.'CONSULTA'", {'placa' => 'XXX0000'})
# pegando o id do push criado
id = response.xpath('//body//id').text
Nesse caso para a sua url de callback, será retornado o documento gerado, e são enviados os seguintes parametros no header do server:
request["HTTP_X_BIPBOP_VERSION"]
request["HTTP_X_BIPBOP_DOCUMENT_ID"] # Organizar os documentos por este ID #
request["HTTP_X_BIPBOP_DOCUMENT_LABEL"]
ABRINDO um PUSH
puts push.open(id)
REMOVENDO um PUSH
push.delete(id)
Para mais informações e aquisição de uma chave de api acesse http://api.bipbop.com.br.