rest-core https://github.com/cardinalblue/rest-core
by Cardinal Blue http://cardinalblue.com
I was talking about rest-core at http://rubyconf.tw/2011
- Video: http://vimeo.com/groups/rubytw/videos/29590001
(sorry that I was speaking Mandarin, not English! Slides are in
English though) - Slide: http://www.godfat.org/slide/2011-08-27-rest-core.html
DESCRIPTION:
Modular Ruby clients for REST APIs
There has been an explosion in the number of REST APIs available
today.
To address the need for a way to access these APIs easily and
elegantly,
we have developed rest-core, which consists of composable
middleware
that allows you to build a REST client for any REST API. Or in the
case of
common APIs such as Facebook, Github, and Twitter, you can simply use
the
built-in dedicated clients provided by rest-core.
INSTALLATION:
gem install rest-core
Or if you want development version, put this in Gemfile:
gem 'rest-core', :git => 'git://github.com/cardinalblue/rest-
core.git’,
:submodules => true
CHANGES:
rest-core 0.4.0 – 2011-09-26
Incompatible changes:
-
[dry] Now
RestCore::Ask
is renamed toRestCore::Dry
for better
understanding. Thanks miaout17 -
[client] Now
request
method takes an env and an app to make
requests,
instead of a weird requests array. -
[client] Now if you really want to disable something, for example,
disabling cache when the default cache isRails.cache
, you’ll need
to
passfalse
instead ofnil
. This is becausenil
stands for
using
defaults in rest-core. -
[client] Defaults priorities are changed to:
per-request > instance variable > class defaults > middleware
defaults
See test_client.rb for more detailed definition. If you don’t
understand
this, don’t worry, since then this won’t affect you.
Compatible changes:
-
[client] Introduced a new method
request_full
which is exactly the
same
asrequest
but also returns various information from the app,
including
RESPONSE_STATUS
andRESPONSE_HEADERS
-
[client] Removed various unused, untested, undocumented legacy from
rest-graph. -
[error] Introduced
RestCore::Error
which is the base class for all
exceptions raised by rest-core -
[builder] Now
RestCore::Builder.default_app
is the default app
which
would be used for building clients without setting an app. By
default,
it’sRestClient
, but you can change it if you like. -
[builder] It no longer builds a @wrapped app. If you don’t
understand this,
then this does nothing for you. It’s an internal change. (or bug
fix) -
[wrapper] Now
RestCore::Wrapper.default_app
is the default app
which
would be used for wrapping middlewares without setting an app. By
default,
it’sDry
, but you can change it if you like. -
[wrapped] Fixed a bug that force middlewares to implement
members
method,
which should be optional. Thanks miaout17 -
[facebook][rails_util] Now default cache is
Rails.cache
instead of
nil -
[simple] Added a Simple client, which only wraps RestClient
-
[univeral] Added an Universal client, which could be used for
anything -
[flurry] Added a Flurry client, along with its
Flurry::RailsUtil
-
[mixi] Added a Mixi client
-
[bypass] Added a Bypass middleware which does nothing but passing
env -
[oauth2_header] OAuth2Header is a middleware which would pass
access_token
in header instead of in query string. -
[common_logger] nil object would no longer be logged
-
[json_decode] Do nothing if we are being asked for env (dry mode)
-
[cache] Now default
:expires_in
is 600 down from 3600 -
[middleware] Now not only query values would be escaped, but also
keys. -
[rib-rest-core] Introduced an interactive shell. You’ll need rib
to
run this:rib rest-core
. It is using an universal client to access
arbitrary websites.