class Pickme::Policy

Attributes

call[RW]
expiry[RW]
handle[RW]
maxsize[RW]
minsize[RW]
path[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/pickme/policy.rb, line 8
def initialize(options = {})
  [:expiry, :call, :handle, :maxsize, :minsize, :path].each do |input|
    send("#{input}=", options[input]) unless options[input].nil?
  end
end

Public Instance Methods

apply(call = [:read, :convert], keys = ['policy', 'signature']) click to toggle source
# File lib/pickme/policy.rb, line 22
def apply(call = [:read, :convert], keys = ['policy', 'signature'])
  raise SecretKeyMissing if Pickme.config.secret_key.nil?
  self.call = call
  {
    keys[0] => policy,
    keys[1] => signature
  }
end
policy() click to toggle source
# File lib/pickme/policy.rb, line 14
def policy
  Base64.urlsafe_encode64(json_policy)
end
signature() click to toggle source
# File lib/pickme/policy.rb, line 18
def signature
  OpenSSL::HMAC.hexdigest('sha256', Pickme.config.secret_key, policy)
end

Private Instance Methods

json_policy() click to toggle source
# File lib/pickme/policy.rb, line 33
def json_policy
  hash = Hash.new

  @expiry ||= Pickme.config.expiry.call

  [:expiry, :call, :handle, :maxsize, :minsize, :path].each do |input|
    hash[input] = send(input) unless send(input).nil?
  end

  MultiJson.dump(hash)
end