From: "Lin Jen-Shin (godfat)" Date: 2011-09-27T02:54:09+09:00 Subject: [ANN] rest-core 0.4.0 released # rest-core by Cardinal Blue I was talking about rest-core at * Video: (sorry that I was speaking Mandarin, not English! Slides are in English though) * Slide: ## 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. [rest-core]: http://github.com/cardinalblue/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 to `RestCore::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 is `Rails.cache`, you'll need to pass `false` instead of `nil`. This is because `nil` 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 as `request` but also returns various information from the app, including `RESPONSE_STATUS` and `RESPONSE_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's `RestClient`, 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's `Dry`, 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. [rib]: https://github.com/godfat/rib