class Sensit::HttpClient::HttpClient
Main HttpClient
which is used by Api
classes
Attributes
headers[RW]
options[RW]
Public Class Methods
new(auth = {}, options = {})
click to toggle source
# File lib/sensit/http_client.rb, line 16 def initialize(auth = {}, options = {}) if auth.is_a? String auth = { :http_header => auth } end @options = { :base => "http://sensit.herokuapp.com/api", :user_agent => "alpaca/0.2.0 (https://github.com/pksunkara/alpaca)" } @options.update options @headers = { "user-agent" => @options[:user_agent] } if @options.has_key? :headers @headers.update Hash[@options[:headers].map { |k, v| [k.downcase, v] }] @options.delete :headers end @client = Faraday.new @options[:base] do |conn| conn.use Sensit::HttpClient::AuthHandler, auth conn.use Sensit::HttpClient::ErrorHandler conn.adapter Faraday.default_adapter end end
Public Instance Methods
create_request(method, path, options)
click to toggle source
Creating a request with the given arguments
If api_version is set, appends it immediately after host
# File lib/sensit/http_client.rb, line 94 def create_request(method, path, options) version = options.has_key?(:api_version) ? "/#{options[:api_version]}" : "" path = "#{version}#{path}" instance_eval <<-RUBY, __FILE__, __LINE__ + 1 @client.#{method} path do |req| req.body = options[:body] req.headers.update(options[:headers]) req.params.update(options[:query]) if options[:query] end RUBY end
delete(path, body = {}, options = {})
click to toggle source
# File lib/sensit/http_client.rb, line 58 def delete(path, body = {}, options = {}) request path, body, "delete", options end
get(path, params = {}, options = {})
click to toggle source
# File lib/sensit/http_client.rb, line 46 def get(path, params = {}, options = {}) request path, nil, "get", options.merge({ :query => params }) end
get_body(response)
click to toggle source
Get response body in correct format
# File lib/sensit/http_client.rb, line 109 def get_body(response) Sensit::HttpClient::ResponseHandler.get_body response end
patch(path, body = {}, options = {})
click to toggle source
# File lib/sensit/http_client.rb, line 54 def patch(path, body = {}, options = {}) request path, body, "patch", options end
post(path, body = {}, options = {})
click to toggle source
# File lib/sensit/http_client.rb, line 50 def post(path, body = {}, options = {}) request path, body, "post", options end
put(path, body = {}, options = {})
click to toggle source
# File lib/sensit/http_client.rb, line 62 def put(path, body = {}, options = {}) request path, body, "put", options end
request(path, body, method, options)
click to toggle source
Intermediate function which does three main things
-
Transforms the body of request into correct format
-
Creates the requests with give parameters
-
Returns response body after parsing it into correct format
# File lib/sensit/http_client.rb, line 71 def request(path, body, method, options) options = @options.merge options options[:headers] = options[:headers] || {} options[:headers] = @headers.merge Hash[options[:headers].map { |k, v| [k.downcase, v] }] options[:body] = body if method != "get" options[:body] = options[:body] || {} options = set_body options end response = create_request method, path, options body = get_body response Sensit::HttpClient::Response.new body, response.status, response.headers end
set_body(options)
click to toggle source
Set request body in correct format
# File lib/sensit/http_client.rb, line 114 def set_body(options) Sensit::HttpClient::RequestHandler.set_body options end