class BarkingIguana::Verify::SignableAction

Attributes

params[RW]
path[RW]
verb[RW]

Public Class Methods

new(verb, path, params = {}) click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 15
def initialize verb, path, params = {}
  self.verb = verb
  self.path = path
  self.params = params
end

Public Instance Methods

add(key, value) click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 21
def add key, value
  params[key] = value
end
inspect() click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 62
def inspect
  "#<BarkingIguana::Verify::SignableAction #{to_s.inspect}>"
end
query_string() click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 33
def query_string
  return '' unless params.any?
  '?' + URI.encode_www_form(ordered_params)
end
sign(public_key, secret, expires_at) click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 46
def sign public_key, secret, expires_at
  signature = Signature.new public_key, self, secret, expires_at
  SignedAction.new self, signature
end
to_s() click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 42
def to_s
  "#{verb} #{unsigned_path}"
end
unsigned_path() click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 38
def unsigned_path
  Addressable::URI.parse "#{path}#{query_string}"
end
verify!(signature, secret) click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 51
def verify! signature, secret
  Signature.verify signature, self, secret
end
verify?(signature, secret) click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 55
def verify? signature, secret
  verify! signature, secret
  true
rescue SignatureException
  false
end

Private Instance Methods

ordered_params() click to toggle source
# File lib/barking_iguana/verify/signable_action.rb, line 25
def ordered_params
  # Ruby has ordered hashes, but I want alphabetical order
  params.keys.sort_by(&:to_s).inject({}) { |a, e|
    a.merge! e => params[e]
  }
end