lib/rapidash/http_client.rb in rapidash-0.2.2 vs lib/rapidash/http_client.rb in rapidash-0.3.0.beta

- old
+ new

@@ -1,6 +1,8 @@ require 'faraday' +require 'faraday_middleware' +require 'faraday_middleware/multi_json' module Rapidash module HTTPClient attr_accessor :login, :password attr_writer :connection @@ -11,33 +13,23 @@ end end def connection raise ConfigurationError.new "Site is required" unless site - @connection ||= Faraday.new(site) + + @connection ||= Faraday.new(site) do |builder| + if login || password + builder.use Faraday::Request::BasicAuthentication, login, password + end + + connection_builder.call(builder) + end end def request(verb, url, options = {}) url = connection.build_url(normalize_url(url), options[:params]).to_s - response = connection.run_request verb, url, options[:body], options[:header] do |request| - request.headers.update(:Authorization => connection.basic_auth(login, password)) if login && password - end + response = connection.run_request(verb, url, options[:body], options[:header]) - process_response(response, verb, options) - end - - def process_response(response, verb, options) - # "foo"[0] does not work in 1.8.7, "foo"[0,1] is required - case response.status.to_s[0, 1] - when "5", "4" - error = ResponseError.new(response) - raise error if self.class.respond_to?(:raise_error) && self.class.raise_error - return nil - #Handle redirects - when "3" - request(verb, response.headers["location"], options) - when "2" - return Response.new(response) - end + response.body end end end