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