| 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`:
| FARADAY_OPTIONS | = | [:request, :proxy, :ssl, :builder, :url, :parallel_manager, :params, :headers, :builder_class].freeze | Constants |
| connection | [R] | @private |
| options | [R] | @private |
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
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
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