Postmon - Consumindo uma API com Ruby
Publicado por Daniel Vinciguerra (última atualização em 20/09/2016)
[ Hits: 5.708 ]
Homepage: http://bivee.com.br
Aviso:
- Não utilize esta implementação em produção, ela vem apenas a ser uma implementação didática para mostrar uma das formas de se consumir APIs utilizando o Ruby.
- Caso sinta interesse e precise utilizar o Postmon em seu projeto, veja uma implementação mais madura no link: https://rubygems.org/gems/postmon_ruby
INTRODUÇÃO
Sabe quando você encontra uma API, e gostaria de consumir os dados dela para utilizar em seu projeto?
Aqui eu vou mostrar como você pode criar uma classe e consumir uma API de forma bem simples para utilizar no seu projeto.
Esta será uma implementação muito simples com um foco especial em mostrar como obter a informação, realizar um parse e exibir os dados retornados.
Vamos utilizar para este exemplo o Postmon que é um projeto open-source de uma API para obter dados de localização e endereçamento escrita em Python e MongoDB.
- Site oficial do Postmon: http://postmon.com.br
- Link para o github: https://github.com/PostmonAPI/postmon
*parabéns ao pessoal do projeto a propósito*
PRÉ-REQUISITOS
- ruby +2.2
- Módulo open-uri e nokoguiri instalados
REFERÊNCIAS
http://ruby-doc.org/stdlib-2.2.0/libdoc/open-uri/rdoc/OpenURI.html
https://rubygems.org/gems/nokogiri
EXECUTANDO
$ ruby postmon.rb
#!/usr/bin/env ruby
# 2016 (c) Daniel Vinciguerra
require 'json'
require 'open-uri'
require 'nokogiri'
module Postmon
# endereço base da api
BASE_URI = "http://api.postmon.com.br/v1"
# classe da api
class API
attr_accessor :entity
# obtém e retorna os dados do cep
def by_cep(value)
begin
open(uri_to("/cep/#{value}")) do |res|
entity = Postmon::API::Entity.new;
entity.parse(res.readlines.join)
end
rescue Exception => e
puts "Erro ao retornar os dados do CEP! (#{e.message})"
exit
end
end
private
# constroi a url
def uri_to(uri)
URI(URI::encode("#{BASE_URI}/#{uri}"))
end
end
# classe da entidade (retorno da API)
class API::Entity
attr_reader :bairro, :cidade, :cep, :logradouro, :estado, :estado_info, :cidade_info
# parseia as informações
def parse(json)
o = JSON::parse(json)
@cep = o["cep"]
@bairro = o["bairro"]
@cidade = o["cidade"]
@estado = o["estado"]
@logradouro = o["logradouro"]
@estado_info = o["estado_info"]
@cidade_info = o["cidade_info"]
self
end
end
end
# objeto do nosso client da API
postmon = Postmon::API.new
# obtendo os dados do cep
location = postmon.by_cep('13330000')
# imprimindo as informações do cep
puts "INFORMAÇÕES PARA O CEP #{location.cep}"
puts "=" * 60
puts "Rua : #{location.logradouro}" if location.logradouro
puts "Bairro: #{location.bairro}" if location.bairro
puts "Cidade: #{location.cidade}"
puts "Estado: #{location.estado}"
Crivo de Eratóstenes Simples em Ruby
Exemplos de comentários e operadores de impressão na tela
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (10)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









