Submit Search
Upload
Mojo as a_client
•
Download as KEY, PDF
•
12 likes
•
1,651 views
Marcus Ramberg
Follow
Showing how to use mojo as the next LWP
Read less
Read more
Technology
Report
Share
Report
Share
1 of 52
Download now
Recommended
Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101
hendrikvb
Perl web frameworks
Perl web frameworks
diego_k
Webrtc mojo
Webrtc mojo
bpmedley
Inside Bokete: Web Application with Mojolicious and others
Inside Bokete: Web Application with Mojolicious and others
Yusuke Wada
Developing apps using Perl
Developing apps using Perl
Anatoly Sharifulin
RESTful web services
RESTful web services
Tudor Constantin
Asynchronous programming patterns in Perl
Asynchronous programming patterns in Perl
deepfountainconsulting
Mojolicious
Mojolicious
Marcos Rebelo
Recommended
Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101
hendrikvb
Perl web frameworks
Perl web frameworks
diego_k
Webrtc mojo
Webrtc mojo
bpmedley
Inside Bokete: Web Application with Mojolicious and others
Inside Bokete: Web Application with Mojolicious and others
Yusuke Wada
Developing apps using Perl
Developing apps using Perl
Anatoly Sharifulin
RESTful web services
RESTful web services
Tudor Constantin
Asynchronous programming patterns in Perl
Asynchronous programming patterns in Perl
deepfountainconsulting
Mojolicious
Mojolicious
Marcos Rebelo
Mojolicious - A new hope
Mojolicious - A new hope
Marcus Ramberg
Perl: Hate it for the Right Reasons
Perl: Hate it for the Right Reasons
Matt Follett
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
Jeremy Kendall
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!
Anatoly Sharifulin
Keeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro framework
Jeremy Kendall
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Dotan Dimet
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
Cosimo Streppone
Slim RedBeanPHP and Knockout
Slim RedBeanPHP and Knockout
Vic Metcalfe
Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7
Masahiro Nagano
YAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービス
Yusuke Wada
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Arc & Codementor
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Steve Rhoades
Mojolicious on Steroids
Mojolicious on Steroids
Tudor Constantin
Any event intro
Any event intro
qiang
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
clkao
A reviravolta do desenvolvimento web
A reviravolta do desenvolvimento web
Wallace Reis
Blog Hacks 2011
Blog Hacks 2011
Yusuke Wada
Mojolicious, real-time web framework
Mojolicious, real-time web framework
taggg
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
Yusuke Wada
PHP5.5 is Here
PHP5.5 is Here
julien pauli
TELEMEDICINE OUR VISION TO FUTURE
TELEMEDICINE OUR VISION TO FUTURE
Society for Microbiology and Infection care
Expresiones Regulares
Expresiones Regulares
Kar Juan
More Related Content
What's hot
Mojolicious - A new hope
Mojolicious - A new hope
Marcus Ramberg
Perl: Hate it for the Right Reasons
Perl: Hate it for the Right Reasons
Matt Follett
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
Jeremy Kendall
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!
Anatoly Sharifulin
Keeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro framework
Jeremy Kendall
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Dotan Dimet
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
Cosimo Streppone
Slim RedBeanPHP and Knockout
Slim RedBeanPHP and Knockout
Vic Metcalfe
Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7
Masahiro Nagano
YAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービス
Yusuke Wada
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Arc & Codementor
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Steve Rhoades
Mojolicious on Steroids
Mojolicious on Steroids
Tudor Constantin
Any event intro
Any event intro
qiang
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
clkao
A reviravolta do desenvolvimento web
A reviravolta do desenvolvimento web
Wallace Reis
Blog Hacks 2011
Blog Hacks 2011
Yusuke Wada
Mojolicious, real-time web framework
Mojolicious, real-time web framework
taggg
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
Yusuke Wada
PHP5.5 is Here
PHP5.5 is Here
julien pauli
What's hot
(20)
Mojolicious - A new hope
Mojolicious - A new hope
Perl: Hate it for the Right Reasons
Perl: Hate it for the Right Reasons
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!
Keeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro framework
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
Slim RedBeanPHP and Knockout
Slim RedBeanPHP and Knockout
Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7
YAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービス
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Mojolicious on Steroids
Mojolicious on Steroids
Any event intro
Any event intro
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
A reviravolta do desenvolvimento web
A reviravolta do desenvolvimento web
Blog Hacks 2011
Blog Hacks 2011
Mojolicious, real-time web framework
Mojolicious, real-time web framework
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
PHP5.5 is Here
PHP5.5 is Here
Viewers also liked
TELEMEDICINE OUR VISION TO FUTURE
TELEMEDICINE OUR VISION TO FUTURE
Society for Microbiology and Infection care
Expresiones Regulares
Expresiones Regulares
Kar Juan
Curscatalyst
Curscatalyst
Kar Juan
andUNITE search groups - how to
andUNITE search groups - how to
andUNITE
A First Class Web Citizen
A First Class Web Citizen
Gareth Rushgrove
Blogging In The Library Revised Oct 16
Blogging In The Library Revised Oct 16
bhodes
Mojolicious
Mojolicious
Marcus Ramberg
Viewers also liked
(7)
TELEMEDICINE OUR VISION TO FUTURE
TELEMEDICINE OUR VISION TO FUTURE
Expresiones Regulares
Expresiones Regulares
Curscatalyst
Curscatalyst
andUNITE search groups - how to
andUNITE search groups - how to
A First Class Web Citizen
A First Class Web Citizen
Blogging In The Library Revised Oct 16
Blogging In The Library Revised Oct 16
Mojolicious
Mojolicious
Similar to Mojo as a_client
The promise of asynchronous php
The promise of asynchronous php
Wim Godden
Tatsumaki
Tatsumaki
Tatsuhiko Miyagawa
The promise of asynchronous php
The promise of asynchronous php
Wim Godden
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Tatsuhiko Miyagawa
Selenium sandwich-3: Being where you aren't.
Selenium sandwich-3: Being where you aren't.
Workhorse Computing
Plack - LPW 2009
Plack - LPW 2009
Tatsuhiko Miyagawa
PSGI and Plack from first principles
PSGI and Plack from first principles
Perl Careers
Psgi Plack Sfpm
Psgi Plack Sfpm
som_nangia
Psgi Plack Sfpm
Psgi Plack Sfpm
wilburlo
React PHP: the NodeJS challenger
React PHP: the NodeJS challenger
vanphp
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges
✅ William Pinaud
The promise of asynchronous PHP
The promise of asynchronous PHP
Wim Godden
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
Masahiro Nagano
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
Kacper Gunia
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
clkao
The promise of asynchronous PHP
The promise of asynchronous PHP
Wim Godden
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
Ian Barber
Web 8 | Introduction to PHP
Web 8 | Introduction to PHP
Mohammad Imam Hossain
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Kacper Gunia
Dirty Secrets of the PHP SOAP Extension
Dirty Secrets of the PHP SOAP Extension
Adam Trachtenberg
Similar to Mojo as a_client
(20)
The promise of asynchronous php
The promise of asynchronous php
Tatsumaki
Tatsumaki
The promise of asynchronous php
The promise of asynchronous php
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Selenium sandwich-3: Being where you aren't.
Selenium sandwich-3: Being where you aren't.
Plack - LPW 2009
Plack - LPW 2009
PSGI and Plack from first principles
PSGI and Plack from first principles
Psgi Plack Sfpm
Psgi Plack Sfpm
Psgi Plack Sfpm
Psgi Plack Sfpm
React PHP: the NodeJS challenger
React PHP: the NodeJS challenger
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges
The promise of asynchronous PHP
The promise of asynchronous PHP
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
The promise of asynchronous PHP
The promise of asynchronous PHP
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
Web 8 | Introduction to PHP
Web 8 | Introduction to PHP
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Dirty Secrets of the PHP SOAP Extension
Dirty Secrets of the PHP SOAP Extension
Recently uploaded
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
MounikaPolabathina
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Inflectra
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Cprime
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
LoriGlavin3
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Lars Bell
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
panagenda
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
Sri Ambati
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Nathaniel Shimoni
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Raghuram Pandurangan
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Farhan Tariq
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
2024 April Patch Tuesday
2024 April Patch Tuesday
Ivanti
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Nicole Novielli
Recently uploaded
(20)
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
How to write a Business Continuity Plan
How to write a Business Continuity Plan
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
2024 April Patch Tuesday
2024 April Patch Tuesday
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Mojo as a_client
1.
Mojo as a
HTTP A new beginning
2.
I am Marcus
I work here
3.
In the beginning
there was LWP
4.
First Changelog Entry: Thu
18 May 1995 Martijn Koster <m.koster@nexor.co.uk> o Mentioned on libwww-perl that I had changed the classes around lots.
5.
Became wildly popular,
default choice for HTTP in Perl.
6.
Starting to show it’s
age
7.
Clunky API
No Async No Web Socket ...
8.
The time is
ripe for a new beginning.
9.
perl -Mojo -e' g("vg.no/") ->dom(".article-content
h3 a") ->each(sub { b(shift->text) ->decode->say })'
10.
Actually, it didn’t happen
just like that.
11.
Sebastian Riedel
@kraih
12.
Took over Maypole.
Wanted to make radical changes
13.
Got Booted
14.
Created Catalyst. Wanted to
make radical changes
15.
Got Booted
16.
Made Mojolicious.
Wanted to target PHP developers & Perl 6
17.
Ease of install/porting
➜ Only Perl5 core dependencies
18.
Bootstrapping: curl -L
cpanmin.us | sudo perl - Mojolicious
19.
Wrote an async
HTTP 1.1 compliant stack
20.
Mojo::Transaction Mojo::Message::Response
Mojo::Cookie Mojo::URL +++
21.
Test Driven Development
22.
RFC Driven Development
23.
PRAGMATIC
24.
Next logical step: Add
a client on top of this stack.
25.
Mojo == Lego Built
from reusable bricks.
26.
Parallel requests
27.
my $callback =
sub { print shift−>res−>body }; $client−>get('http://mojolicious.org' => $callback); $client−>get('http://search.cpan.org' => $callback); $client−>start;
28.
Form Handling
29.
# Form post
with exception handling my $cpan = 'http://search.cpan.org/search'; my $search = {q => 'mojo'}; my $tx = $client−>post_form($cpan => $search); if (my $res = $tx−>success) { print $res−>body } else { my ($message, $code) = $tx−>error; print "Error: $message"; }
30.
Web Sockets
31.
$client−>websocket( 'ws://websockets.org:8787' => sub {
my $client = shift; $client−>on_message( sub { my ($client, $message) = @_; print "$messagen"; $client−>finish; }); $client−>send_message('hiya!'); })−>start;
32.
Oneliners
33.
Collection of single
letter commands.
34.
g ➜ get
d ➜ delete f ➜ form post p ➜ post u ➜ put w ➜ websocket
35.
Special Cases b ➜
byte stream, a ➜ Lite app
36.
#ojo module my $res
= g( 'http://mojolicio.us', {'Content−Type' => 'text/plain'}, 'Hello!' ); perl -Mojo -e 'b(g("mojolicio.us")->dom->at("title")->text)->say' perl -Mojo -E'g("bloomberg.com")->dom("a.story_link")->each(sub { say shift->text; })' perl -Mojo -E'g("digg.com")->dom("a.story-title")->each(sub { say pop, ". ", shift->text })' # Undocumented o(fun) Mojolicious cloud function: perl -Mojo -e 'oO("http://www.reddit.com")->dom->find("a.title")- >each(sub { Oo(pop . ". " . shift->text)->say })'
37.
Mojo::DOM
38.
Liberal XML Parser
39.
Supports all CSS3
selectors that make sense
40.
* E[foo=”bar”]
E:checked E:empty E:nth-child E:first-of-type E:not(s) EF E>F ++++
41.
o(fun) If you need
performance use libXML
42.
SOME RANDOM
BITS
43.
Supports IPV6, TLS,proxies, epoll,
kqueue
44.
DEBUG MODE
ENV VARIABLE MOJO_CLIENT_DEBUG=1 perl -Mojo -E’...’
45.
# Streaming response my
$tx = $client−>build_tx(GET => 'http://mojolicious.org'); $tx−>res−>body(sub { print $_[1] }); $client−>start($tx); # Custom socket my $tx = $client−>build_tx(GET => 'http://mojolicious.org'); $tx−>connection($socket); $client−>start($tx);
46.
Big Body
Just Works (temp storage on filesystem)
47.
$res->json Automatic JSON deserialization
48.
o(fun) Every file in
the distro has a Simpsons or Futurama quote.
49.
Now also handles
disconnected keep-alive gracefully. (this was not the case when we started using it).
50.
Test Driven Development
51.
You provide failing test.
kraih provides fix.
52.
Learn More Mojo
mojolicious.org github.com/kraih/mojo #mojo on irc.perl.org groups.google.com/group/mojolicious
Editor's Notes
Much of this development was driven by Gisle Aas++ (Oslonett)
Hard to update, because so much depend on the current broken behavior
at Twitter
Maypole was originally developed by Simon Cozens, but he fucked off to become a missionary in Japan.
Catalyst had gathered steam. Core team of developers
Runs in 30 seconds (time to download, run test suite and install files).
All
Tell about nginx and status phrases.
Download now