class FilepickerRails::Policy

Attributes

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

Public Class Methods

apply(call = [:read, :convert], keys = ['policy', 'signature']) click to toggle source
# File lib/filepicker_rails/policy.rb, line 22
def self.apply(call = [:read, :convert], keys = ['policy', 'signature'])
  return {} unless ::Rails.application.config.filepicker_rails.secret_key.present?
  grant = Policy.new
  grant.call = call
  {
    keys[0] => grant.policy,
    keys[1] => grant.signature
  }
end
new(options = {}) click to toggle source
# File lib/filepicker_rails/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

policy() click to toggle source
# File lib/filepicker_rails/policy.rb, line 14
def policy
  Base64.urlsafe_encode64(json_policy)
end
signature() click to toggle source
# File lib/filepicker_rails/policy.rb, line 18
def signature
  OpenSSL::HMAC.hexdigest('sha256', ::Rails.application.config.filepicker_rails.secret_key, policy)
end

Private Instance Methods

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

  @expiry ||= ::Rails.application.config.filepicker_rails.expiry.call

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

  hash.to_json
end