SlideShare a Scribd company logo
1 of 57
Download to read offline
Apontador API
(para programadores Python)
chester@apontador.com
@chesterbr
http://www.apontador.com.br
Palestrante
● Bacharel em Matemática Aplicada e
Computacional (IME/USP)
● Desenvolvedor profissional há 2e1 anos
● Python: cruzalinhas
● Arquiteto de Produtos no Apontador
● Twitter: @chesterbr
● Mais informações: http://chester.me
O que vamos ver
● Apontador
(empresa, site, plataforma)
● Apontador API
● Python e a Apontador API
● A vida, o universo e tudo mais
Apontador
“Aquele site de mapas
que virou pago”
“Aquele site de mapas
que virou pago”
Conectar locais, pessoas e
informações ao seu redor
Conectar locais, pessoas e
informações ao seu redor
(tá, e daí?)
daí que...
Plataforma
Nossa Visão
Web Services - Clientes e Parceiros
Plataforma
Presente(i.e., passado recente)
Plataforma
Futuro
(é, você aí mesmo!)
Apontador API
APIs
Application Programming Interface
APIs no Brasil
Fonte:
APIs no Brasil
Fonte:
Possibilidades
● Criar sites/aplicativos novos
usando informações de locais
● Integrar nos já existentes
● Mashups com outros serviços
● Armazenar locais e informações
Regras do Jogo
● Dê linkback/crédito
● Abra a aplicação o ao público
● Mantenha o “fair play”
● Vários aplicativos diferntes é ok
● Uso comercial é ok!
● Uso acadêmico é muito ok!!!!
O que dá pra fazer?
● Busca local
● Informações, fotos, avaliações
● Segmentação (categorias)
● Informações do usuário
● Cadastrar coisas novas
Busca Local
● Busca: o que
● Busca local: o que + onde
Busca Local
● Busca: o que
● Busca local: o que + onde
Busca Local
● Busca: o que
● Busca local: o que + onde
Busca Local na Apontador API
● search/places/byaddress
● search/places/byzipcode
● search/places/bypoint
● search/places/bybox
Tecnologia Agnóstica
● REST (HTTP)
● Respostas JSON, XML e KML
● OAuth para ações em nome de
usuários Apontador
Python
Idéia Original
“Vamos fazer bibliotecas para todas
as linguagens populares, facilitando a
vida do desenvolvedor”
Errr...
● Quais linguagens são “populares”?
● Qual o estilo das bibliotecas?
● Quanto vamos demorar?
● E se os usuários não gostarem?
Solução Adotada
● Começamos com Python e PHP
● Bibliotecas livres (Apache 2.0)
● Erramos? Analise, dê feedback,
mande seus patches!
http://github.com/apontador
/apontador-api-libs
Github
Hello World
1) Cadastre seu usuário no
http://api.apontador.com.br
2) Entre na edição
do perfil, e lá
em aplicativos
Hello World
3) Clique em Criar Aplicativo e
informe os dados solicitados
4) O cadastro vai gerar o Consumer
Key e o Consumer Secret – eles
são o “usuário e senha” do app
5) Agora é só brincar de Python :-)
apontador-api-libs/python
>>> from apontador import ApontadorAPI
>>> api = ApontadorAPI(
consumer_key = "...",
consumer_secret = "...")
>>> api.search_places_by_address(
state="PR",
city="Curitiba",
term="Universidade Federal do Parana",
limit=1)
UFPR?
UFPR!
Universidade Federal
Do Paraná
E veio certo?
<street>Rua XV de Novembro</street>
<number>1299</number>
Mas veio certo mesmo?
<lat>-25.42722</lat>
<lng>-49.26154</lng>
Postos na Região
>>> import json
>>> postos = json.loads(
api.search_places_by_point(
latitude=-25.42722,
longitude=-49.26154,
category_id=65,
type="json"))['search']['places']
>>> postos[0]['place']['name']
u'IRMAOS BERTOLDI LTDA'
>>> postos[1]['place']['name']
u'A. S. J - COMERCIO DE COMBUSTIVEIS LTDA'
>>> postos[2]['place']['name']
u'POSTO MONALISA CHEVRON R MARECHAL HERMES'
E o posto é bom?
>>> posto_id = postos[0]['place']['id']
>>> reviews = json.loads(
api.get_place_reviews(
posto_id,
type="json"))['place']['reviews']
>>> reviews[0]['review']['content']
u'Esse posto xe9 legal por causa da
localizaxe7xe3o...perto da pista de sk8
do gaxfacho...e o prexe7o xe9 bacana
tbm..mas o atendimento xe9 mto zoado...os
frentistas Sao Mt mal educados e sem
atencao...um dia que passei lxe1 tava
rolando ate uma briga entre a atendente do
caixa e os frentistas...Sxf3 recomendo se
vc tiver paciencia!'
Inserindo Informações
Não é obrigatório, mas:
● É mais fácil ter tudo num lugar
● Aumenta o engajamento
● Faz a plataforma crescer
Inserindo Informações
OAuth
● Solicite um token inicial
● Troque ele pela URL de auth
● Redirecione o usuário para a
URL resultante
OAuth
OAuth
● Sua URL de callback é chamada,
recebendo o token e seu secret;
guarde-os com carinho
● Para apps desktop/mobile, use
PIN Code (vide pincode.py)
OAuth
>>> api = ApontadorAPI(
consumer_key = "...",
consumer_secret = "...",
oauth_token = "...",
oauth_token_secret = "...")
>>> api.create_new_review(
place_id=posto_id,
rating=4,
content="Eu gostei...")
>>> api.vote_place_up(place_id=posto_id)
>>> api.add_photo_to_place(
place_id=posto_id,
image_file="/tmp/foto.jpg")
Aprenda Mais
● Veja os exemplos (na biblioteca)
● Documentação:
http://api.apontador.com.br
● Lista de discussão:
http://groups.google.com/group/
apontador-api
● Use o Apontador!
A vida, o universo
e tudo mais
Futuro próximo
● Apontador Mobile (checkins)
● API JavaScript
● Informações setoriais (ex.: preço
da gasolina nos postos)
Meta de Longo Prazo
e missão pessoal
Trazer toda a Plataforma Apontador
para o lado open da força
Meta de Longo Prazo
e missão pessoal
Trazer toda a Plataforma Apontador
para o lado open da força
(ou conquistar 24 territórios
à nossa escolha)
Conclusões
Pensem “open” onde vocês
trabalham: o que a empresa tem
que pode ir pro mundo, com
vantagem para ambos?
A API está no ar, agora é com
vocês escrever os aplicativos!
Dúvidas?
Obrigado!
chester@apontador.com
@chesterbr
http://www.apontador.com.br

More Related Content

Similar to Apontador API (para programadores Python)

Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoDavid Robert Camargo de Campos
 
Desenvolvimento de Bots com Inteligência Artificial
Desenvolvimento de Bots com Inteligência ArtificialDesenvolvimento de Bots com Inteligência Artificial
Desenvolvimento de Bots com Inteligência ArtificialGustavo Castro
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.jsFelipe Pedroso
 
Codelab - Actions on Google
Codelab - Actions on GoogleCodelab - Actions on Google
Codelab - Actions on GoogleAlvaro Viebrantz
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web HackingConviso Application Security
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesiMasters
 
Introdução ao Projeto de Plataformas de Software: o quê, por que, como
Introdução ao Projeto de Plataformas de Software: o quê, por que, comoIntrodução ao Projeto de Plataformas de Software: o quê, por que, como
Introdução ao Projeto de Plataformas de Software: o quê, por que, comoRodrigo Reis
 
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...Magno Logan
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Marco Antonio Maciel
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete
1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete
1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto ProieteComunidade NetPonto
 
Apresentação - MaisCopa
Apresentação - MaisCopaApresentação - MaisCopa
Apresentação - MaisCopaLeonardo Couy
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCETiago Freire
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPaulino Michelazzo
 
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]Filipe Ximenes
 

Similar to Apontador API (para programadores Python) (20)

Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
Desenvolvimento de Bots com Inteligência Artificial
Desenvolvimento de Bots com Inteligência ArtificialDesenvolvimento de Bots com Inteligência Artificial
Desenvolvimento de Bots com Inteligência Artificial
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.js
 
Codelab - Actions on Google
Codelab - Actions on GoogleCodelab - Actions on Google
Codelab - Actions on Google
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
 
Introdução ao Projeto de Plataformas de Software: o quê, por que, como
Introdução ao Projeto de Plataformas de Software: o quê, por que, comoIntrodução ao Projeto de Plataformas de Software: o quê, por que, como
Introdução ao Projeto de Plataformas de Software: o quê, por que, como
 
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete
1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete
1ª Reunião - Apresentação da Comunidade NetPonto - C. Augusto Proiete
 
Apresentação - MaisCopa
Apresentação - MaisCopaApresentação - MaisCopa
Apresentação - MaisCopa
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCE
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Programando para web com php my sql - fed cox junior
Programando para web com php my sql - fed cox juniorProgramando para web com php my sql - fed cox junior
Programando para web com php my sql - fed cox junior
 
Phpmanual
PhpmanualPhpmanual
Phpmanual
 
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
 
Programação Python na Iot
Programação Python na IotProgramação Python na Iot
Programação Python na Iot
 
Python b1tch
Python b1tchPython b1tch
Python b1tch
 
Canivete python
Canivete pythonCanivete python
Canivete python
 

More from Carlos Duarte do Nascimento

More from Carlos Duarte do Nascimento (11)

git fail --force (make it up with your pull requests)
git fail --force (make it up with your pull requests)git fail --force (make it up with your pull requests)
git fail --force (make it up with your pull requests)
 
git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)
 
ruby2600 - an Atari 2600 emulator written in Ruby
ruby2600 - an Atari 2600 emulator written in Rubyruby2600 - an Atari 2600 emulator written in Ruby
ruby2600 - an Atari 2600 emulator written in Ruby
 
Atari 2600 VCS Programming
Atari 2600 VCS ProgrammingAtari 2600 VCS Programming
Atari 2600 VCS Programming
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)
 
Aplicativos Mobile: Da Idéia ao Produto (ou não)
Aplicativos Mobile: Da Idéia ao Produto (ou não)Aplicativos Mobile: Da Idéia ao Produto (ou não)
Aplicativos Mobile: Da Idéia ao Produto (ou não)
 
Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0
 
Cruzalinhas - Palestra Relâmpago no Fisl 11
Cruzalinhas - Palestra Relâmpago no Fisl 11Cruzalinhas - Palestra Relâmpago no Fisl 11
Cruzalinhas - Palestra Relâmpago no Fisl 11
 
SlideMeme - Habilitando o SlideShare dentro do Yahoo! Meme - Yahoo! Open Hack...
SlideMeme - Habilitando o SlideShare dentro do Yahoo! Meme - Yahoo! Open Hack...SlideMeme - Habilitando o SlideShare dentro do Yahoo! Meme - Yahoo! Open Hack...
SlideMeme - Habilitando o SlideShare dentro do Yahoo! Meme - Yahoo! Open Hack...
 

Apontador API (para programadores Python)