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