Contenu connexe Plus de Guilherme Silveira (6) Rest @ Qcon 20108. Guilherme Silveira
guilherme.silveira@caelum.com.br
2002 guj.com.br
2003 vraptor
2004 caelum.com.br
xp, xstream
2006 scrum
2009 restfulie, lean
2010 tectura.com.br
12. bank.com kayak.com
caelum.com.br
calendar.com
13. bank.com kayak.com
calendar.com caelum.com.br
14. bank.com kayak.com
calendar.com caelum.com.br
21. kayak.com: pagamento de um vôo
<?xml version="1.0" encoding="UTF-8" standalum="yes"?>
<voo>
<informacoes>
<de>GRU</de>
<ate>JFK</ate>
</informacoes>
<valor>900.00</valor>
<link rel="payment"
href="http://kayak.com/payment/custom"/>
</voo>
22. kayak.com: pagamento de um vôo
<?xml version="1.0" encoding="UTF-8" standalum="yes"?>
<voo>
<informacoes>
<de>GRU</de>
<ate>JFK</ate>
</informacoes>
<valor>900.00</valor>
<link rel="payment"
href="http://kayak.com/payment/custom"/>
</voo>
23. kayak.com: pagamento de um vôo
voo = Restfulie.at('http://kayak.com/f/574XR4').get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor)
envia_email(confirmacao)
24. kayak.com: pagamento de um vôo
voo = Restfulie.at('http://kayak.com/f/574XR4').get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor)
envia_email(confirmacao)
25. kayak.com: pagamento de um vôo
<?xml version="1.0" encoding="UTF-8" standalum="yes"?>
<voo>
<informacoes>
<de>GRU</de>
<ate>JFK</ate>
</informacoes>
<valor>900.00</valor>
<link rel="payment"
href="http://paypal.com/55788"/>
</voo>
26. kayak.com: pagamento de um vôo
<?xml version="1.0" encoding="UTF-8" standalum="yes"?>
<voo>
<informacoes>
<de>GRU</de>
<ate>JFK</ate>
</informacoes>
<valor>900.00</valor>
<link rel="payment"
href="http://paypal.com/55788"/>
</voo>
27. viagem = recurso
http://kayak.com/f/574XR4
pagamento = recurso
uma_uri_qualquer
33. kayak.com: pagamento de um vôo
voo = Restfulie.at('http://kayak.com/f/574XR4').get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
envia_email(confirmacao)
voo = Restfulie.at(uri_recebida).get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
34. kayak.com: pagamento de um vôo
voo = Restfulie.at('http://kayak.com/f/574XR4').get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
envia_email(confirmacao)
voo = Restfulie.at(uri_recebida).get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
35. kayak.com: pagamento de um vôo
voo = Restfulie.at('http://kayak.com/f/574XR4').get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
envia_email(confirmacao)
voo = Restfulie.at(uri_recebida).get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
36. kayak.com: pagamento de um vôo
voo = Restfulie.at('http://kayak.com/f/574XR4').get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
envia_email(confirmacao)
voo = Restfulie.at(uri_recebida).get
confirmacao = voo.link("payment").
patch(todo_o_inferno_do_seu_cartao, valor/2)
42. calendar: minha agenda pessoal
eu = Restfulie.at('http://users.google.com')
.with(auth).get
eu.link("calendar").patch(voo.link("self"))
43. calendar: minha agenda pessoal
eu = Restfulie.at('http://users.google.com')
.with(auth).get
eu.link("calendar").patch(voo.link("self"))
44. calendar: minha agenda pessoal
eu.link("calendar").patch(link_para_aniversarios)
eu.link("calendar").patch(link_para_reserva_do_hotel)
eu.link("calendar").patch(link_para_passeios)
45. mas qual o formato do
pagamento ou calendário?
62. top down? Big Design Up Front
O monstro do lago SOAP, longa de 2001
65. e o calendário com isso?
Cancelar ==> Cancela o vôo
Cancelar ==> Envia email para um hotel
Cancelar ==> Recusa uma reunião via email
66. e o calendário com isso?
í di a!
pe rm
s: hy
li nk
co m
to s
a
fo rm
ic ro
m Cancelar ==> Cancela o vôo
Cancelar ==> Envia email para um hotel
Cancelar ==> Recusa uma reunião via email
67. caelum: no trabalho
caelum = Restfulie.at("http://caelum.com.br").get
caelum.link("reembolsos").patch(confirmacao)
caelum.link("calendar").patch(confirmacao)
68. caelum: o chefe
caelum = Restfulie.at("http://caelum.com.br")
.with(auth).get
caelum.link("reembolsos").get[0]
.link("confirmation").post :accept => true
79. em casa: minha esposa
esposa = Restfulie.at("http://users.google.com")
.with(esposa).get
esposa.link("friends")
.get["Guilherme Silveira"].link("calendar")
80. economizando
# busca um voo
def voos_de(site)
base = Restfulie.at(site).get
voos = base.link("opensearch").get.fill("flight").with(:from =>
"GRU", :to => "JFK").get
end
voos = voos_de("kayak")
voos << voos_de("tam")
voos << voos_de("gol")
voos << voos_de("cvc")
voo_mais_barato(voos).link("payment").post(inferno_do_cartao)
81. banco
voo = voo_mais_barato(voos)
banco = Restfulie.at("meubanco").auth(eu).get
auth = banco.cartoes["lisa"]
.authorization(1.min, voo.preco)
voo.link("payment").post(auth)
mais_barato(voos).link("payment")...
97. mudou algo?
tm l
dh
fla sh
ke ts
so c p pt
web c om
im o
pé ss
so u
113. bottom up
design by committe
mime type?
microformato
controlled vocabulary
115. sites
www.caelum.com.br
www.agilenomundoreal.com.br
blog.caelumobjects.com (english)
frameworks onde estou?
restfulie.caelum.com.br
@guilhermecaelum
vraptor.caelum.com.br
www.tectura.com.br
restfulie: ruby, java, .net, JS, python etc
mais palestras no evento