class Payture::Cheques::Methods::Base
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 8 def initialize(config) @config = config end
Public Instance Methods
call(**args)
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 12 def call(**args) http_response = make_request(url, params(**args)) build_response(http_response) end
Private Instance Methods
build_response(http_response)
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 48 def build_response(http_response) unless http_response.success? raise Error, "Invalid http status: #{http_response.status}" end body = begin JSON.parse(http_response.body) rescue JSON::ParserError => e raise Error, "#{e.class}: #{e.message}" end config.logger.debug(body) if config.logger response_class.new(body) end
compact_hash(hash)
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 69 def compact_hash(hash) hash.select { |k, v| k && v } end
encoded_data(**params)
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 64 def encoded_data(**params) params_str = compact_hash(params).map { |k, v| "#{k}=#{v}" }.join(';') CGI.escape(params_str) end
make_request(url, params)
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 31 def make_request(url, params) conn = Faraday.new do |builder| builder.request :url_encoded builder.response(:logger, config.logger) if config.logger builder.adapter Faraday.default_adapter end conn.post(url) do |req| req.headers['Content-Type'] = 'application/json' req.body = compact_hash(params).to_json config.logger.debug(req.body) if config.logger req.options.timeout = config.timeout if config.timeout req.options.open_timeout = config.open_timeout if config.open_timeout end rescue Faraday::Error => e raise Error, "#{e.class}: #{e.message}" end
params()
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 23 def params raise NotImplementedError end
response_class()
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 27 def response_class raise NotImplementedError end
url()
click to toggle source
# File lib/payture/cheques/methods/base.rb, line 19 def url raise NotImplementedError end