class Razorpay::Request
Request
objects are used to create fetch objects, which make requests to the server using HTTParty
Public Class Methods
new(entity_name = nil)
click to toggle source
# File lib/razorpay/request.rb, line 14 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}; Ruby/#{RUBY_VERSION}" } # Order is important to give precedence to predefined headers headers = custom_headers.merge(predefined_headers) @options = { basic_auth: Razorpay.auth, timeout: 30, headers: headers } end
Public Instance Methods
all(options)
click to toggle source
# File lib/razorpay/request.rb, line 34 def all(options) request :get, "/#{@entity_name}", options end
create(data)
click to toggle source
# File lib/razorpay/request.rb, line 54 def create(data) request :post, "/#{@entity_name}", data end
create_instance(res)
click to toggle source
Recursively builds entity instances out of all hashes in the response object
# File lib/razorpay/request.rb, line 80 def create_instance(res) response = res.parsed_response # if there was an error, throw it raise_error(response['error'], res.code) if response.nil? || response.key?('error') # 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 klass = Razorpay.const_get class_name rescue NameError # Use Entity class if we don't find any klass = Razorpay::Entity end klass.new(response) end
fetch(id)
click to toggle source
# File lib/razorpay/request.rb, line 30 def fetch(id) request :get, "/#{@entity_name}/#{id}" end
get(url)
click to toggle source
# File lib/razorpay/request.rb, line 42 def get(url) request :get, "/#{@entity_name}/#{url}" end
make_test_request()
click to toggle source
Since we need to change the base route
# File lib/razorpay/request.rb, line 74 def make_test_request self.class.get Razorpay::TEST_URL, @options end
patch(id, data = {})
click to toggle source
# File lib/razorpay/request.rb, line 50 def patch(id, data = {}) request :patch, "/#{@entity_name}/#{id}", data end
post(url, data = {})
click to toggle source
# File lib/razorpay/request.rb, line 38 def post(url, data = {}) request :post, "/#{@entity_name}/#{url}", data end
put(id, data = {})
click to toggle source
# File lib/razorpay/request.rb, line 46 def put(id, data = {}) request :put, "/#{@entity_name}/#{id}", data end
raise_error(error, status)
click to toggle source
# File lib/razorpay/request.rb, line 99 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') 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
raw_request(method, url, data = {})
click to toggle source
# File lib/razorpay/request.rb, line 62 def raw_request(method, url, data = {}) case method when :get @options[:query] = data when :post, :put, :patch @options[:body] = data end self.class.send(method, url, @options) end
request(method, url, data = {})
click to toggle source
# File lib/razorpay/request.rb, line 58 def request(method, url, data = {}) create_instance raw_request(method, url, data) end