Class: Paymaster::BaseRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/paymaster/base_request.rb

Direct Known Subclasses

GetTransaction, Refund, UrlGenerator

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ BaseRequest

Returns a new instance of BaseRequest.



5
6
7
8
9
# File 'lib/paymaster/base_request.rb', line 5

def initialize(args={})
  args.each do |k, v|
    public_send "#{k}=", v
  end
end

Instance Attribute Details

#clientObject

Returns the value of attribute client.



3
4
5
# File 'lib/paymaster/base_request.rb', line 3

def client
  @client
end

Instance Method Details

#endpointObject

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/paymaster/base_request.rb', line 11

def endpoint
  raise NotImplementedError, 'You should implement #endpoint'
end

#paramsObject



15
16
17
# File 'lib/paymaster/base_request.rb', line 15

def params
  {}
end

#performObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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) ⇒ Object



19
20
21
22
# File 'lib/paymaster/base_request.rb', line 19

def sign(string)
  return unless client.secret_key
  Digest::SHA256.hexdigest(string + client.secret_key)
end