Postmon - Consumindo uma API com Ruby
Publicado por Daniel Vinciguerra (última atualização em 20/09/2016)
[ Hits: 5.460 ]
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}"
Exemplos de comentários e operadores de impressão na tela
Faça uma lista com o nome de pessoas
Sistema de simulação de fabricantes de carros
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
PC não liga no filtro de linha (3)
Desde que seja DDR3, posso colocar qualquer memória? (3)
Instalar sem formatar, pergunta meio boba. [RESOLVIDO] (7)
Curso gratuito Defesa de redes 10ª Maratona CiberEducação Cisco Brasil... (0)