HTTP Monkey

513 views

Published on

Simple HTTP client with fluent interface, support for multiple adapters and powered by middlewares (like rack).

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
513
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • IntroEstouhá 3 anosna Abril,sendo 2 anostrabalhando com Alexandria.Agenda
  • Porquemais um client http?Da listagigante de clients, somente o faraday suportamiddlewares, queporsinalnãoé Rack “compliance”.Tópicos.
  • Dependências: rack, httpiLess is moreEssencialé o que o HTTP 1.1 descreve, tirando o Cache.Métodos: GET, POST, PUT, DELETE e futuramente CUSTOM (como purge porexemplo)Headers é a base de comunicação dos requests e responses.Auth Basic, Digest, body gzippedtambémsãofuncionalidades do HttpMonkeyOpcional. O objetivoémanter o monkey magro, e desenvolvertudoem middleware.Cache e CookieStoresãoexemplos de middleware.
  • Uso default.Criador de cliente. A gem podeserusadapordiferentesprojetos, cada um com a suaconfiguração.Suportavários adapters.Behaviours. Code, array ou range.Middlewares.
  • Interface fluent – o EntryPointé a classequefaz a interface de “http options”, ouseja, vcinformaos headers, authentication, SSL etc.Configuracoespor request – Todas as opções de cnfiguração, lá do bloco do “build”, vc tem disponivel “por request”.
  • Interface fluent – o EntryPointé a classequefaz a interface de “http options”, ouseja, vcinformaos headers, authentication, SSL etc.Configuracoespor request – Todas as opções de cnfiguração, lá do bloco do “build”, vc tem disponivel “por request”.
  • Porquejáépadrãoestabelecido.Anatomia de um middleware. Começo, meio e fim.Initialize – voumostrarexemplos no proximo slide
  • Middlewares built in. Osnomessão auto explicativos. :DMostrarosexemplos de initialize, options e blockFollow [301, 302, 303, 307] headers.
  • Ciclo de vida do RequestCreate RequestCall Middlewares (with request)Do Request, receive ResponseBack to Middlewares (with request and response)Call Behaviours (client, request, response)Lembrarque a ordem dos middlewareséimportante!
  • Aondequeremoschegar.Limite?Somente a imaginação.Browsah-packMiddlewaresexistentesRack middlewaresexistentes. Exemplo: o “VCR” em middleware.
  • Mostrarcódigos!
  • HTTP Monkey

    1. 1. HttpMonkey Github.com/rogerleite/http_monkey• Motivação• Funcionalidades• Middlewares• Run Forrest, run!Em 30 minutos!
    2. 2. Motivação• Por que mais um http client?• Interface fluente• Aderente ao HTTP 1.1• Ser fácil de usar e adaptável• Rack middlewares• Sempre magro (anoréxico)
    3. 3. FuncionalidadesSuporte ao essencialMinímo de dependências possívelEssencial: • Methods, Headers and Response Codes • SSL, Proxy, Timeout, Authentication … etc. • Respeitar HTTP 1.1 (tirando o cache)Opcional: • Implementar em projetos separados • O cache é um ótimo exemplo de middleware
    4. 4. Funcionalidades Custom Clients N Adapters Callbacks por code, array e range Middlewares a lá Rack Builder Exemplo simples de get
    5. 5. Funcionalidades Interface fluente Representação do Request Mais Internals Configuração por Request A mesma interface do configure
    6. 6. FuncionalidadesResponse roots!Com helpers supimpas!
    7. 7. MiddlewaresPor que middlewares?Anatomia de um middleware Geralmente recebe: options via hash Block pra injetar comportamento Mega simples around filter
    8. 8. MiddlewaresMiddlewares disponíveis no HttpMonkey
    9. 9. Middlewares
    10. 10. MiddlewaresFuturoFazer algo como “http_monkey-browsah” • Cache conforme “Caching in HTTP” do RFC 2616-sec13 • Cookies conforme “State Management Mechanism” do RFC 2109Explorar Middlewares existentes • Rack::CommonLogger, Rack::Etag • Rack-contrib tem middlewares interessantes como Rack::Profiler, Rack::CommonCookies • Rack::Parser – decode/parse data into param hashChamadas Assíncronas e Paralelas
    11. 11. Obrigado! Github.com/rogerleite/http_monkeyCalma que tem código pra rodar :D

    ×