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
+