EZApi

EZApi makes interfacing with third party APIs easy! EZApi handles network requests, responses, and serializes the object into an easy to use ruby object. Standard RESTful actions are included out of the box and you can easily add custom actions.

Usage

Install the gem ruby gem 'ezapi'

Define your API client & models ```ruby module ThirdPartyApp extend EZApi::Client

api_url ‘http://www.example.com/api/’ # => / at the end is required api_key ‘XXXXXX’ # => required

class User < EZApi::ObjectBase path ‘foo’ # => to create custom path. Defaults to ‘users’ in this case actions [:show, :create, :delete, :update, :index] # => Included RESTful actions end end ```

Now we can call http://www.example.com/api/users endpoints ```ruby begin user = ThirdPartyApp::User.show(‘123’) user.first_name # => returns first_name json field user.first_name = ‘new name’ user.save

ThirdPartyApp::User.delete(‘123’) ThirdPartyApp::User.update(‘Name’) ThirdPartyApp::User.index(1) rescue EZApiError => e print(e.message) end ```

Custom actions

There are two ways of adding custom actions that are not in the included rest ```ruby module ThirdPartyApp class User < EZApi::ObjectBase # For class methods def self.custom_action response = client.get(“#api_path/custom_action”) # Do whatever you want with the response end

# for instance methods
def custom_instance_action
  response = self.class.client.get("#{self.class.api_path}/custom_action")
  # Do whatever you want with the response
end   end end

ThirdPartyApp::User.custom_action ThirdPartyApp::User.new.custom_instance_action ```

Add custom actions to actions array

```ruby module ThirdPartyApp module Actions module MyCustomAction # For instance methods def my_custom_action # Do Something end

  # For class methods
  module ClassMethods
    def my_custom_class_action
      # do something
    end
  end

  def self.included(base)
    base.extend(ClassMethods)
  end
end   end end

module ThirdPartyApp class User < EZApi::ObjectBase actions [:my_custom_action] end end

``` You can even override the include REST actions using this method