lib/razorpay/request.rb in razorpay-2.1.0.pre vs lib/razorpay/request.rb in razorpay-2.1.0

- old
+ new

@@ -8,11 +8,11 @@ class Request include HTTParty ssl_ca_file File.dirname(__FILE__) + '/../ca-bundle.crt' - def initialize(entity_name) + def initialize(entity_name = nil) self.class.base_uri(Razorpay::BASE_URI) @entity_name = entity_name custom_headers = Razorpay.custom_headers || {} predefined_headers = { 'User-Agent' => "Razorpay-Ruby/#{Razorpay::VERSION}" @@ -53,17 +53,22 @@ def create(data) request :post, "/#{@entity_name}", data end def request(method, url, data = {}) + create_instance raw_request(method, url, data) + end + + def raw_request(method, url, data = {}) case method when :get @options[:query] = data when :post, :put, :patch @options[:body] = data end - create_instance self.class.send(method, url, @options) + + self.class.send(method, url, @options) end # Since we need to change the base route def make_test_request self.class.get Razorpay::TEST_URL, @options @@ -73,11 +78,13 @@ # out of all hashes in the response object def create_instance(res) response = res.parsed_response # if there was an error, throw it - raise_error(response['error'], res.code) if response.key?('error') + if response.nil? || response.key?('error') + raise_error(response['error'], res.code) + end # There must be a top level entity # This is either one of payment, refund, or collection at present begin class_name = response['entity'].split('_').collect(&:capitalize).join @@ -93,17 +100,14 @@ def raise_error(error, status) # Get the error class name, require it and instantiate an error class_name = error['code'].split('_').map(&:capitalize).join('') args = [error['code'], status] args.push error['field'] if error.key?('field') - klass = - begin - require "razorpay/errors/#{error['code'].downcase}" - Razorpay.const_get(class_name) - # We got an unknown error, cast it to Error for now - rescue NameError, LoadError - Razorpay::Error - end + require "razorpay/errors/#{error['code'].downcase}" + klass = Razorpay.const_get(class_name) raise klass.new(*args), error['description'] + rescue NameError, LoadError + # We got an unknown error, cast it to Error for now + raise Razorpay::Error.new, 'Unknown Error' end end end