class Ipay::Request
Attributes
path[RW]
session[RW]
Public Class Methods
new(host, path)
click to toggle source
# File lib/ipay/request.rb, line 6 def initialize(host, path) @path = path @session = Faraday.new url: host end
Public Instance Methods
delete(url, params={}, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 40 def delete(url, params={}, options = { format: :formated }) params = JSON.generate(params) response = @session.delete do |req| req.url "#{ @path }#{ url }" req.body = params end response_of_request(response, options) end
get(url, params = {}, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 11 def get(url, params = {}, options = { format: :formated }) params = URI.encode_www_form(params) response = @session.get do |req| req.url "#{@path}#{url}?#{params}" end response_of_request(response, options) end
post(url, params = {}, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 20 def post(url, params = {}, options = { format: :formated }) params = JSON.generate(params) response = @session.post do |req| req.url "#{ @path }#{ url }" req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' req.body = params end response_of_request(response, options) end
post_register_order(url, params = {}, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 49 def post_register_order(url, params = {}, options = { format: :formated }) iva_amount = params[:iva_amount] params.delete(:iva_amount) response = @session.post do |req| req.url "#{ @path }#{ url }" req.headers['Content-Type'] = 'application/x-www-form-urlencoded' req.headers['Accept'] = 'application/json' req.body = URI.encode_www_form(params) + "&jsonParams={ \"installments\": 1, \"IVA.amount\": #{iva_amount} }" end response_of_request(response, options) end
put(url, params={}, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 31 def put(url, params={}, options = { format: :formated }) params = JSON.generate(params) response = @session.put do |req| req.url "#{ @path }#{ url }" req.body = params end response_of_request(response, options) end
Private Instance Methods
cast_error(response, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 73 def cast_error(response, options = { format: :formated }) raise_invalid_format options[:format] return response if options[:format] == :raw message = response.body.empty? ? response.body : Ipay::Response.new(response.body).call['message'] error_map = { 500 => 'Sever error! Something were wrong in the server.', 400 => "Bad request!, #{ message }", 401 => 'Authentication error!', 402 => 'Required payment!', 403 => 'Restricted access!', 404 => 'Not found!', 405 => 'Operation does not allowed!', } raise StandardError, "Status: #{ response.status }. Error: #{ error_map[response.status] }" end
raise_invalid_format(format)
click to toggle source
# File lib/ipay/request.rb, line 92 def raise_invalid_format(format) return if %i[formated raw].include?(format) return if format.nil? raise StandardError, "#{format} is not a valid format, valid_formats[:formated, :raw]" end
response_of_request(response, options = { format: :formated })
click to toggle source
# File lib/ipay/request.rb, line 63 def response_of_request(response, options = { format: :formated }) cast_error(response, options) unless response.status == 200 || response.status == 201 raise_invalid_format options[:format] return response if options[:format] == :raw Ipay::Response.new(response.body).call end