Relax
A library of simple modules for building web service wrappers.
Usage
Relax a toolkit of sorts, which makes it easier to write Faraday-based API Gems while still leaning heavily on the strengths of the Ruby language.
Overview
Relax is made up of three primary modules:
-
Relax::Client
— forms the basis of a web service wrapper by storing the configuration and serving as a factory for resources -
Relax::Resource
— used to handle the actual web service connections and help organize related endpoints -
Relax::Delegator
— delegates class methods to an instance of the client allowing for simple client usage
It also includes a basic configuration class, Relax::Config
, which defines
some of client defaults and can used as the basis for your own custom
configuration classes.
Example
require 'relax'
require 'faraday_middleware' # for JSON response parsing
module Vimeo
extend Relax::Delegator[:client]
class Client
include Relax::Client
def initialize
config.base_uri = 'http://vimeo.com/api/v2'
end
def user(username)
Resources::User.new(self, username: username)
end
end
module Resource
include Relax::Resource
def connection
super { |builder| builder.response(:json) }
end
end
module Resources
class User
include Resource
def videos
get("#{@options[:username]}/videos.json").body
end
end
end
def self.client
@client ||= Client.new
end
end
Vimeo.user(ENV['VIMEO_USERNAME']).videos
See the examples
directory for more.
Contributing
- Fork it.
- Create your feature branch (
git checkout -b my-new-feature
). - Commit your changes (
git commit -am 'Add some feature.'
). - Push to the branch (
git push origin my-new-feature
). - Create a new Pull Request.