01 facebook = RestGraph.new # Facebook Graph API
02 ♨
03 ♨
04 ♨
01 facebook = RestGraph.new # Facebook Graph API
02 facebook.get('4')
03 ♨
04 ♨
01 facebook = RestGraph.new # Facebook Graph API
02 facebook.get('4')
03 facebook.post('4/photos',
04 :source => File.open('...'))
01 Github = RestCore::Builder.client do
02 end
01 Github = RestCore::Builder.client do
02 ♨
03 ♨
04 ♨
05 end
06 ♨
07 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 ♨
04 ♨
05 end
06 ♨
07 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 ♨
05 end
06 ♨
07 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 Github.new.get('godfat')
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 Github.new.get('godfat')
08 ♨
09 {"type"=>"User","company"=>"cardinalblue",
10 "blog"=>"http://godfat.org","hireable"=>false,
11 "url"=>"https://api.github.com/users/godfat",
12 "followers"=>40,"html_url"=>"https://github.com/godfat",
13 "bio"=>nil,"created_at"=>"2008-05-15T18:33:24Z",
14 "avatar_url"=>"https://...","following"=>33,
15 "name"=>"Lin Jen-Shin (godfat)","location"=>"Taiwan",
16 "email"=>"godfat (XD) godfat.org","public_repos"=>62,
17 "id"=>10416,"login"=>"godfat","public_gists"=>59}
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 ♨
05 run RestClient
06 end
07 ♨
08 ♨
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use Cache , {}, 3600
05 run RestClient
06 end
07 ♨
08 ♨
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use Cache , {}, 3600
05 run RestClient
06 end
07 ♨
08 client = Github.new
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use Cache , {}, 3600
05 run RestClient
06 end
07 ♨
08 client = Github.new
09 client.get('godfat') # slow
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use Cache , {}, 3600
05 run RestClient
06 end
07 ♨
08 client = Github.new
09 client.get('godfat') # slow
10 client.get('godfat') # cache hit
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use Cache , {}, 3600
05 run RestClient
06 end
07 ♨
08 client = Github.new
09 client.get('godfat') # slow
10 client.get('godfat') # cache hit
11 client.get('godfat') # cache hit
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use Cache , {}, 3600
05 run RestClient
06 end
07 ♨
08 client = Github.new
09 client.get('godfat') # slow
10 client.get('godfat') # cache hit
11 client.get('godfat') # cache hit
12 client.get('godfat') # cache hit
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 ♨
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use CommonLogger, method(:puts)
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use CommonLogger, method(:puts)
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 client = Github.new
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use CommonLogger, method(:puts)
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 client = Github.new
10 client.get('godfat') # slow
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use CommonLogger, method(:puts)
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 client = Github.new
10 client.get('godfat') # slow
11 # RestCore: spent 1.498819 Requested https://api.github.com/users/godfat
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use CommonLogger, method(:puts)
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 client = Github.new
10 client.get('godfat') # slow
11 # RestCore: spent 1.498819 Requested https://api.github.com/users/godfat
12 client.get('godfat') # cache hit
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 use CommonLogger, method(:puts)
05 use Cache , {}, 3600
06 run RestClient
07 end
08 ♨
09 client = Github.new
10 client.get('godfat') # slow
11 # RestCore: spent 1.498819 Requested https://api.github.com/users/godfat
12 client.get('godfat') # cache hit
13 # RestCore: spent 2.0e-05 CacheHit https://api.github.com/users/godfat
14 # RestCore: spent 6.9e-05 Requested https://api.github.com/users/godfat
15 ♨
16 ♨
17 ♨
01 ♨
02 use Doo
03 ♨
04 ♨
05 ♨
06 ♨
01 ♨
02 use Doo
03 use Coo
04 ♨
05 ♨
06 ♨
01 ♨
02 use Doo
03 use Coo
04 use Boo
05 ♨
06 ♨
01 ♨
02 use Doo
03 use Coo
04 use Boo
05 run App
06 ♨
01 app = Rack::Builder.app do
02 use Doo
03 use Coo
04 use Boo
05 run App
06 end
01 App
01 Boo.new(App)
01 Coo.new(Boo.new(App))
01 Doo.new(Coo.new(Boo.new(App)))
01 Doo.new(Coo.new(Boo.new(App)))
(Web Application)
(Firefox) (Chrome) (Opera)
(Web Application)
(Twitter) (Github) (Facebook)
RestClient
DefaultSite RestClient
DefaultSite JsonDecode RestClient
DefaultSite JsonDecode CommonLogger RestClient
DefaultSite JsonDecode CommonLogger Cache RestClient
01 app = Rack::Builder.app do
02 use Doo
03 use Coo
04 use Boo
05 run App
06 end
07 ♨
08 ♨
09 ♨
10 ♨
01 app = Rack::Builder.app do
02 use Doo
03 use Coo
04 use Boo
05 run App
06 end
07 ♨
08 app.class # Doo
09 ♨
10 ♨
01 app = Rack::Builder.app do
02 use Doo
03 use Coo
04 use Boo
05 run App
06 end
07 ♨
08 app.class # Doo
09 app.kind_of?(Class) # false
10 ♨
01 app = Rack::Builder.app do
02 use Doo
03 use Coo
04 use Boo
05 run App
06 end
07 ♨
08 app.class # Doo
09 app.kind_of?(Class) # false
10 app.call(env) # app is an instance
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 ♨
08 ♨
09 ♨
10 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 Github.class # Class
08 ♨
09 ♨
10 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 Github.class # Class
08 Github.kind_of?(Class) # true
09 ♨
10 ♨
01 Github = RestCore::Builder.client do
02 use DefaultSite , 'https://api.github.com/users/'
03 use JsonDecode , true
04 run RestClient
05 end
06 ♨
07 Github.class # Class
08 Github.kind_of?(Class) # true
09 Github.new.get('godfat') # Github is a class which
10 # would produce instances
01 t = Twitter.new(key_and_secret)
02 ♨
03 ♨
04 ♨
05 ♨
06 ♨
07 ♨
08 ♨
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
18 ♨
01 t = Twitter.new(key_and_secret)
02 ♨
03 t.authorize_url! # which is calling
04 t.post('oauth/request_token', {}, {},
05 {:json_decode => false})
06 # underneath
07 ♨
08 ♨
09 ♨
10 ♨
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
18 ♨
01 t = Twitter.new(key_and_secret)
02 ♨
03 t.authorize_url! # which is calling
04 t.post('oauth/request_token', {}, {},
05 {:json_decode => false})
06 # underneath
07 ♨
08 # which is also equivalent to...
09 t.json_decode = false # state
10 t.post('oauth/request_token')
11 ♨
12 ♨
13 ♨
14 ♨
15 ♨
16 ♨
17 ♨
18 ♨
01 t = Twitter.new(key_and_secret)
02 ♨
03 t.authorize_url! # which is calling
04 t.post('oauth/request_token', {}, {},
05 {:json_decode => false})
06 # underneath
07 ♨
08 # which is also equivalent to...
09 t.json_decode = false # state
10 t.post('oauth/request_token')
11 ♨
12 t.authorize!(verifier) # calling
13 t.post('oauth/access_token', {}, {},
14 {:verifier => verifier,
15 :json_decode => false})
16 # underneath
17 ♨
18 ♨
01 t = Twitter.new(key_and_secret)
02 ♨
03 t.authorize_url! # which is calling
04 t.post('oauth/request_token', {}, {},
05 {:json_decode => false})
06 # underneath
07 ♨
08 # which is also equivalent to...
09 t.json_decode = false # state
10 t.post('oauth/request_token')
11 ♨
12 t.authorize!(verifier) # calling
13 t.post('oauth/access_token', {}, {},
14 {:verifier => verifier,
15 :json_decode => false})
16 # underneath
17 ♨
18 t.tweet('but we want json_decode here')
01 github = Github.new
02 ♨
03 ♨
04 ♨
05 ♨
06 ♨
07 ♨
08 ♨
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 ♨
04 ♨
05 ♨
06 ♨
07 ♨
08 ♨
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 linkedin = Linkedin.new
04 ♨
05 ♨
06 ♨
07 ♨
08 ♨
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 linkedin = Linkedin.new
04 facebook = Facebook.new
05 ♨
06 ♨
07 ♨
08 ♨
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 linkedin = Linkedin.new
04 facebook = Facebook.new
05 ♨
06 github.get('godfat')
07 ♨
08 ♨
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 linkedin = Linkedin.new
04 facebook = Facebook.new
05 ♨
06 github.get('godfat')
07 twitter.get('user_timeline.json', :id => 'godfat')
08 ♨
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 linkedin = Linkedin.new
04 facebook = Facebook.new
05 ♨
06 github.get('godfat')
07 twitter.get('user_timeline.json', :id => 'godfat')
08 linkedin.get('v1/people/~') # need authorize first
09 ♨
01 github = Github.new
02 twitter = Twitter.new
03 linkedin = Linkedin.new
04 facebook = Facebook.new
05 ♨
06 github.get('godfat')
07 twitter.get('user_timeline.json', :id => 'godfat')
08 linkedin.get('v1/people/~') # need authorize first
09 facebook.get('spellbook')
Q?
Table of Contents | t |
---|---|
Source Files | s |
Slide Numbers | n |
Notes | 2 |
Help | h |