class Paymaster::BaseRequest

Attributes

client[RW]

Public Class Methods

new(args={}) click to toggle source
# File lib/paymaster/base_request.rb, line 5
def initialize(args={})
  args.each do |k, v|
    public_send "#{k}=", v
  end
end

Public Instance Methods

endpoint() click to toggle source
# File lib/paymaster/base_request.rb, line 11
def endpoint
  raise NotImplementedError, 'You should implement #endpoint'
end
params() click to toggle source
# File lib/paymaster/base_request.rb, line 15
def params
  {}
end
perform() click to toggle source
# File lib/paymaster/base_request.rb, line 24
def perform
  xml_body = params.to_xml(
    root: "Command",
    skip_types: true,
    skip_instruct: true,
    indent: 0,
    dasherize: false,
  )
  signature = sign(xml_body)
  xml_body.gsub! "<LMI_HASH></LMI_HASH>", "<LMI_HASH>#{signature}</LMI_HASH>"
  response = Faraday.post endpoint, xml_body

  self.class::Response.parse(response.body)
end
sign(string) click to toggle source
# File lib/paymaster/base_request.rb, line 19
def sign(string)
  return unless client.secret_key
  Digest::SHA256.hexdigest(string + client.secret_key)
end