Class: Her::API
- Inherits:
-
Object
- Object
- Her::API
- Defined in:
- lib/her/api.rb
Overview
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`:
Instance Attribute Summary collapse
- #base_uri ⇒ Object readonly
- #middleware ⇒ Object readonly
Class Method Summary collapse
- .default_api(attrs = {}) ⇒ Object
- .default_middleware ⇒ Object
-
.setup(attrs = {}) ⇒ Object
Setup a default API connection.
Instance Method Summary collapse
-
#request(attrs = {}) ⇒ Object
Make an HTTP request to the API.
-
#setup(attrs = {}) ⇒ Object
Setup the API connection.
Instance Attribute Details
#base_uri ⇒ Object (readonly)
10 11 12 |
# File 'lib/her/api.rb', line 10 def base_uri @base_uri end |
#middleware ⇒ Object (readonly)
10 11 12 |
# File 'lib/her/api.rb', line 10 def middleware @middleware end |
Class Method Details
.default_api(attrs = {}) ⇒ Object
19 20 21 |
# File 'lib/her/api.rb', line 19 def self.default_api(attrs={}) # {{{ defined?(@@default_api) ? @@default_api : nil end |
.default_middleware ⇒ Object
24 25 26 |
# File 'lib/her/api.rb', line 24 def self.default_middleware # {{{ [Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp] end |
.setup(attrs = {}) ⇒ Object
Setup a default API connection
13 14 15 16 |
# File 'lib/her/api.rb', line 13 def self.setup(attrs={}) # {{{ @@default_api = new @@default_api.setup(attrs) end |
Instance Method Details
#request(attrs = {}) ⇒ Object
Make an HTTP request to the API
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/her/api.rb', line 59 def request(attrs={}) # {{{ method = attrs.delete(:_method) path = attrs.delete(:_path) response = @connection.send method do |request| if method == :get # For GET requests, treat additional parameters as querystring data request.url path, attrs else # For POST, PUT and DELETE requests, treat additional parameters as request body request.url path request.body = attrs end end response.env[:body] end |
#setup(attrs = {}) ⇒ Object
Setup the API connection
44 45 46 47 48 49 50 |
# File 'lib/her/api.rb', line 44 def setup(attrs={}) # {{{ @base_uri = attrs[:base_uri] middleware = @middleware = attrs[:middleware] || [Her::Middleware::DefaultParseJSON] + Her::API.default_middleware @connection = Faraday.new(:url => @base_uri) do |builder| middleware.each { |m| builder.use(m) } end end |