Class: Razorpay::Request
- Inherits:
-
Object
- Object
- Razorpay::Request
- Includes:
- HTTParty
- Defined in:
- lib/razorpay/request.rb
Overview
Request objects are used to create fetch objects, which make requests to the server using HTTParty
Instance Method Summary collapse
- #all(options, version = "v1") ⇒ Object
- #create(data, version = "v1") ⇒ Object
-
#create_instance(res) ⇒ Object
Recursively builds entity instances out of all hashes in the response object.
- #delete(url, version = "v1") ⇒ Object
- #fetch(id, version = "v1") ⇒ Object
- #get(url, data = {}, version = "v1") ⇒ Object
- #get_base_url(host) ⇒ Object
-
#initialize(entity_name = nil, host = Razorpay::API_HOST) ⇒ Request
constructor
A new instance of Request.
-
#make_test_request ⇒ Object
Since we need to change the base route.
- #patch(id, data = {}, version = "v1") ⇒ Object
- #post(url, data = {}, version = "v1") ⇒ Object
- #put(id, data = {}, version = "v1") ⇒ Object
- #raise_error(error, status) ⇒ Object
- #raw_request(method, url, data = {}) ⇒ Object
- #request(method, url, data = {}) ⇒ Object
Constructor Details
#initialize(entity_name = nil, host = Razorpay::API_HOST) ⇒ Request
Returns a new instance of Request.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/razorpay/request.rb', line 14 def initialize(entity_name = nil, host = Razorpay::API_HOST) self.class.base_uri(get_base_url(host)) @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) if Razorpay.auth_type == Razorpay::OAUTH @options = { timeout: 30, headers: headers } headers['Authorization'] = 'Bearer ' + Razorpay.access_token else @options = { basic_auth: Razorpay.auth, timeout: 30, headers: headers } end end |
Instance Method Details
#all(options, version = "v1") ⇒ Object
44 45 46 |
# File 'lib/razorpay/request.rb', line 44 def all(, version="v1") request :get, "/#{version}/#{@entity_name}", end |
#create(data, version = "v1") ⇒ Object
68 69 70 |
# File 'lib/razorpay/request.rb', line 68 def create(data, version="v1") request :post, "/#{version}/#{@entity_name}", data end |
#create_instance(res) ⇒ Object
Recursively builds entity instances out of all hashes in the response object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/razorpay/request.rb', line 101 def create_instance(res) response = res.parsed_response if response.is_a?(Array)==true || response.to_s.length == 0 return response end # if there was an error, throw it raise_error(response['error'], res.code) if response.nil? || response.key?('error') && res.code !=200 # 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 |
#delete(url, version = "v1") ⇒ Object
56 57 58 |
# File 'lib/razorpay/request.rb', line 56 def delete(url, version="v1") request :delete, "/#{version}/#{@entity_name}/#{url}" end |
#fetch(id, version = "v1") ⇒ Object
40 41 42 |
# File 'lib/razorpay/request.rb', line 40 def fetch(id, version="v1") request :get, "/#{version}/#{@entity_name}/#{id}" end |
#get(url, data = {}, version = "v1") ⇒ Object
52 53 54 |
# File 'lib/razorpay/request.rb', line 52 def get(url, data = {}, version="v1") request :get, "/#{version}/#{@entity_name}/#{url}", data end |
#get_base_url(host) ⇒ Object
87 88 89 90 91 92 |
# File 'lib/razorpay/request.rb', line 87 def get_base_url(host) if host == Razorpay::AUTH_HOST return Razorpay::AUTH_URL end Razorpay::BASE_URI end |
#make_test_request ⇒ Object
Since we need to change the base route
95 96 97 |
# File 'lib/razorpay/request.rb', line 95 def make_test_request self.class.get Razorpay::TEST_URL, @options end |
#patch(id, data = {}, version = "v1") ⇒ Object
64 65 66 |
# File 'lib/razorpay/request.rb', line 64 def patch(id, data = {}, version="v1") request :patch, "/#{version}/#{@entity_name}/#{id}", data end |
#post(url, data = {}, version = "v1") ⇒ Object
48 49 50 |
# File 'lib/razorpay/request.rb', line 48 def post(url, data = {}, version="v1") request :post, "/#{version}/#{@entity_name}/#{url}", data end |
#put(id, data = {}, version = "v1") ⇒ Object
60 61 62 |
# File 'lib/razorpay/request.rb', line 60 def put(id, data = {}, version="v1") request :put, "/#{version}/#{@entity_name}/#{id}", data end |
#raise_error(error, status) ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/razorpay/request.rb', line 123 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 = {}) ⇒ Object
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/razorpay/request.rb', line 76 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 = {}) ⇒ Object
72 73 74 |
# File 'lib/razorpay/request.rb', line 72 def request(method, url, data = {}) create_instance raw_request(method, url, data) end |