API Cake - Build Dynamic API Wrappers
This gem allows you to easily build rich API wrappers with minimal code.
It is HTTParty with a Cake.
Install
$ gem install apicake
Or with bundler:
gem 'apicake'
TL;DR
Turn this hypothetical API URL:
http://api.recipes.com/cakes?layers=3
To this:
recipes = Recipes.new
recipes.cakes layers:3
Using this code only:
class Recipes < APICake::Base
base_uri 'api.recipes.com'
end
Features
- Uses HTTParty
- Built in caching
- Built in save to file
- Built in response parsing (part of HTTParty)
- Built in convert and save to CSV
- Designed for GET-only APIs (e.g., data services)
Usage
Create a class and inherit from APICake::Base
.
This class automatically includes HTTParty, so you can do whatever you do in
HTTParty. In addition, the APICake::Base
class defines a method_missing
method, so any call to an undefined method, will simply be converted to a
URL.
For example:
class Recipes << APICake::Base
base_uri 'api.recipes.com/v1'
end
recipes = Recipes.new
# This will access http://api.recipes.com/v1/cakes
recipes.cakes
# This will access http://api.recipes.com/v1/cakes/chocolate
recipes.cakes 'chocolate'
# This will access http://api.recipes.com/v1/cakes/chocolate?layers=3
recipes.cakes 'chocolate', layers: 3
See the Examples folder for more examples.
Caching
APICake uses Lightly for caching. By default, cached objects are stored
in the ./cache
directory for 3600 seconds.
See the caching example.
Method Reference
For a detailed explanation of the services and methods you get when inheriting
from APICake::Base
, see the class documentation.
Real World Examples
These gems use APICake:
- Fredric - API wrapper for the FRED database (go straight to API class)
- Intrinio - API wrapper for the Intrinio data service (go straight to API class)
- Quata - API wrapper for the Quandl data service (go straight to API class)
- EOD Historical Data - API wrapper for the EOD Historical Data service (go straight to API class)
- Nasdaq - API wrapper for the Nasdaq Data Link API (go straight to API class)