Skip to content

OTATA/bipbop-ruby

Repository files navigation

Bipbop Ruby

Instalação

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.

Buscando o nome através do CPF/CNPJ

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)

Como utilizar

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)

Mais informações

Para mais informações e aquisição de uma chave de api acesse http://api.bipbop.com.br.

About

Library for communicating with BIPBOP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages