Class: Fondy::Signature

Inherits:
Object
  • Object
show all
Defined in:
lib/fondy/signature.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params:, password:) ⇒ Signature

Returns a new instance of Signature.



12
13
14
15
# File 'lib/fondy/signature.rb', line 12

def initialize(params:, password:)
  @params = params
  @password = password
end

Class Method Details

.build(*args) ⇒ Object



4
5
6
# File 'lib/fondy/signature.rb', line 4

def self.build(*args)
  new(*args).build
end

.verify(*args) ⇒ Object



8
9
10
# File 'lib/fondy/signature.rb', line 8

def self.verify(*args)
  new(*args).verify
end

Instance Method Details

#buildObject



17
18
19
20
21
22
23
# File 'lib/fondy/signature.rb', line 17

def build
  filtered_params = params.reject do |k, v|
    %w(signature response_signature_string).include?(k.to_s) || v.to_s.empty?
  end
  params_str = filtered_params.sort_by(&:first).map(&:last).join('|')
  Digest::SHA1.hexdigest("#{password}|#{params_str}")
end

#verifyObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fondy/signature.rb', line 25

def verify
  unless params[:signature]
    raise Fondy::InvalidSignatureError, 'Response signature not found'
  end

  signature = build
  unless params[:signature] == signature
    raise Fondy::InvalidSignatureError, 'Invalid response signature'
  end

  true
end