Apitizer Gem Version Dependency Status Build Status

The main ingredient of a RESTful API client.

Installation

Add the following line to your Gemfile:

ruby gem 'apitizer'

Then execute:

bash $ bundle

Alternatively, you can install the gem manually:

bash $ gem install apitizer

Usage

Create an apitizer describing the API of the Web service you would like to interact with:

```ruby apitizer = Apitizer::Base.new do address ‘https://service.com/api’

resources :posts do resources :comments end end ```

The apitizer can now be used to manipulate the resources provided by the Web service. To this end, there are five methods: index, show, create, update, and delete, which can be used as shown below.

To list the members of a collection:

ruby apitizer.index(:posts) apitizer.index(:posts, post_id, :comments)

To read a member of a collection:

ruby apitizer.show(:posts, post_id) apitizer.show(:posts, post_id, :comments, comment_id)

To create a new member in a collection:

ruby apitizer.create(:posts, title: 'To be or not to be') apitizer.create(:posts, post_id, :comments, content: 'That is the question.')

To update a member of a collection:

ruby apitizer.update(:posts, post_id, title: 'What is the meaning of life?') apitizer.update(:posts, post_id, :comments, comment_id, content: '42.')

To delete a member of a collection:

ruby apitizer.delete(:posts, post_id) apitizer.delete(:posts, post_id, :comments, comment_id)

Example

Here is an example for the Typekit API. Check out Typekit Client as well.

Code:

```ruby require ‘apitizer’

options = { # Format format: :json, # Authorization headers: { ‘X-Typekit-Token’ => ENV[‘tk_token’] }, # Non-standard REST-HTTP mapping dictionary: { update: :post } }

apitizer = Apitizer::Base.new(options) do address ‘https://typekit.com/api/v1/json’

resources :families, only: :show do show ‘:variation’, on: :member end

resources :kits do resources :families, only: [ :show, :update, :delete ] show :published, on: :member update :publish, on: :member end

resources :libraries, only: [ :index, :show ] end

puts JSON.pretty_generate(apitizer.index(:kits)) ```

Output:

json { "kits": [ { "id": "bas4cfe", "link": "/api/v1/json/kits/bas4cfe" }, { "id": "sfh6bkj", "link": "/api/v1/json/kits/sfh6bkj" }, { "id": "kof8zcn", "link": "/api/v1/json/kits/kof8zcn" }, { "id": "zyx4wop", "link": "/api/v1/json/kits/zyx4wop" } ] }

History

Apitizer was a part of Typekit Client.

Contributing

  1. Fork the project.
  2. Create a branch for your feature (git checkout -b awesome-feature).
  3. Implement your feature (vim).
  4. Commit your changes (git commit -am 'Implemented an awesome feature').
  5. Push to the branch (git push origin awesome-feature).
  6. Create a new Pull Request.