Class Her::API
In: lib/her/api.rb
Parent: Object

This class is where all HTTP requests are made. Before using Her, you must configure it so it knows where to make those requests. In Rails, this is usually done in `config/initializers/her.rb`:

Methods

new   request   setup   setup  

Constants

FARADAY_OPTIONS = [:request, :proxy, :ssl, :builder, :url, :parallel_manager, :params, :headers, :builder_class].freeze   Constants

Attributes

connection  [R]  @private
options  [R]  @private

Public Class methods

Create a new API object. This is useful to create multiple APIs and use them with the `uses_api` method. If your application uses only one API, you should use Her::API.setup to configure the default API

@example Setting up a new API

  api = Her::API.new :url => "https://api.example" do |connection|
    connection.use Faraday::Request::UrlEncoded
    connection.use Her::Middleware::DefaultParseJSON
  end

  class User
    uses_api api
  end

Setup a default API connection. Accepted arguments and options are the same as {API#setup}.

Public Instance methods

Define a custom parsing procedure. The procedure is passed the response object and is expected to return a hash with three keys: a main data Hash, an errors Hash and a metadata Hash.

@private

Setup the API connection.

@param [Hash] opts the Faraday options @option opts [String] :url The main HTTP API root (eg. `api.example.com`) @option opts [String] :ssl A hash containing [SSL options](github.com/lostisland/faraday/wiki/Setting-up-SSL-certificates)

@return Faraday::Connection

@example Setting up the default API connection

  Her::API.setup :url => "https://api.example"

@example A custom middleware added to the default list

  class MyAuthentication < Faraday::Middleware
    def call(env)
      env[:request_headers]["X-API-Token"] = "bb2b2dd75413d32c1ac421d39e95b978d1819ff611f68fc2fdd5c8b9c7331192"
      @app.call(env)
    end
  end
  Her::API.setup :url => "https://api.example.com" do |connection|
    connection.use Faraday::Request::UrlEncoded
    connection.use Her::Middleware::DefaultParseJSON
    connection.use MyAuthentication
    connection.use Faraday::Adapter::NetHttp
  end

@example A custom parse middleware

  class MyCustomParser < Faraday::Response::Middleware
    def on_complete(env)
      json = JSON.parse(env[:body], :symbolize_names => true)
      errors = json.delete(:errors) || {}
      metadata = json.delete(:metadata) || []
      env[:body] = { :data => json, :errors => errors, :metadata => metadata }
    end
  end
  Her::API.setup :url => "https://api.example.com" do |connection|
    connection.use Faraday::Request::UrlEncoded
    connection.use MyCustomParser
    connection.use Faraday::Adapter::NetHttp
  end

[Validate]