lib/pagarme/request.rb in pagarme-1.10.0 vs lib/pagarme/request.rb in pagarme-2.0.0

- old
+ new

@@ -3,77 +3,50 @@ require 'multi_json' require File.join(File.dirname(__FILE__), '.', 'util') require File.join(File.dirname(__FILE__), '.', 'errors') module PagarMe - class Request - attr_accessor :path, :method, :parameters, :headers + class Request + attr_accessor :path, :method, :parameters, :headers, :query - def initialize(path, method) - self.path = path - self.method = method - self.parameters = {} - self.headers = {} - end + def initialize(path, method) + self.path = path + self.method = method + self.parameters = {} + self.query = {} + self.headers = {} + end - def self.encode(params) - Util.normalize_params(params).to_params - end + def run + raise PagarMeError, "You need to configure a API key before performing requests." unless PagarMe.api_key - def run - unless PagarMe.api_key - raise PagarMeError.new("You need to configure a API key before performing requests.") - end + begin + response = RestClient::Request.execute({ + :method => self.method, + :user => PagarMe.api_key, + :password => 'x', + :url => PagarMe.full_api_url(self.path) + '?' + URI.encode_www_form(query), + :payload => MultiJson.encode(parameters), + :open_timeout => 30, + :timeout => 90, + :ssl_ca_file => File.join(File.dirname(__FILE__), '..', '..', 'certs', 'cabundle.pem'), + :headers => { + 'Content-Type' => 'application/json; charset=utf8', + 'Accept' => 'application/json', + 'User-Agent' => 'pagarme-ruby/1.0' + } + }) + rescue RestClient::ExceptionWithResponse => e + parsed_error = MultiJson.decode(e.http_body) - self.headers = {} + if parsed_error['errors'] + raise PagarMeError.fromServerResponse(parsed_error) + else + raise PagarMeError.new(e.http_body) + end + end - parameters = self.parameters.merge({ - :api_key => PagarMe.api_key - }) - error = nil - # puts parameters.inspect - - begin - response = RestClient::Request.execute({ - :method => self.method, - :url => PagarMe.full_api_url(self.path), - :headers => self.headers, - :open_timeout => 30, - :payload => self.class.encode(parameters), - :timeout => 90 - }) - rescue SocketError => e - error = "Error connecting to server (#{e.message})." - rescue NoMethodError => e - if e.message =~ /\WRequestFailed\W/ - raise ResponseError.new("Unexpected response code (#{e.inspect}).") - else - raise - end - rescue RestClient::ExceptionWithResponse => e - parsed_error = parse_json_response(e.http_body) - if parsed_error['errors'] - error = parsed_error - raise PagarMeError.initFromServerResponse(error) - else - raise PagarMeError.new(e.http_body) - end - rescue RestClient::Exception, Errno::ECONNREFUSED => e - error = "Error connecting to server: connection refused" - end - - raise ConnectionError.new(error) if error - - parse_json_response(response.body) - end - - private - - def parse_json_response(response) - begin - MultiJson.load(response) - rescue MultiJson::LoadError => e - raise PagarMeError.new("Server response is not a valid JSON.") - end - end - end + MultiJson.decode response.body + end + end end +