class Vault8

Constants

VERSION

Attributes

public_key[R]
secret_key[R]
service_url[R]

Public Class Methods

create!(public_key: , secret_key: , service_url:) click to toggle source
# File lib/vault8.rb, line 7
def self.create!(public_key: , secret_key: , service_url:)
  self.new(public_key, secret_key, service_url)
end
new(public_key, secret_key, service_url) click to toggle source
# File lib/vault8.rb, line 11
def initialize(public_key, secret_key, service_url)
  @public_key = public_key
  @secret_key = secret_key
  @service_url = service_url
end

Public Instance Methods

encode_token(path:, current_time: nil, until_time: nil) click to toggle source
# File lib/vault8.rb, line 27
def encode_token(path:, current_time: nil, until_time: nil)
  Digest::SHA1.hexdigest([public_key, secret_key, path, current_time, until_time].compact.join('|')).reverse
end
generate_url_for(path:, current_time: nil, until_time: nil) click to toggle source
# File lib/vault8.rb, line 44
def generate_url_for(path:, current_time: nil, until_time: nil)
  uri = URI.join(service_url, path)
  uri.query = { p: public_key,
                s: encode_token(path: path, current_time: current_time, until_time: until_time),
                time: current_time,
                until: until_time
              }.reduce([]) {|acc, x| acc << "#{x.first}=#{x.last}" unless x.last.nil?; acc}.join('&')
  uri.to_s
end
image_path(uid, filters=[], image_name='image.jpg') click to toggle source
# File lib/vault8.rb, line 31
def image_path(uid, filters=[], image_name='image.jpg')
  '/' + [uid, merged_filters(filters), image_name].compact.join('/')
end
image_url(uid:, filters: [], image_name: 'image.jpg', current_time: nil, until_time: nil) click to toggle source
# File lib/vault8.rb, line 17
def image_url(uid:, filters: [], image_name: 'image.jpg', current_time: nil, until_time: nil)
  generate_url_for( path: image_path(uid, filters, image_name),
                    current_time: (current_time && current_time.to_i),
                    until_time: (until_time && until_time.to_i) )
end
merged_filters(filters=[]) click to toggle source
# File lib/vault8.rb, line 35
def merged_filters(filters=[])
  return nil if filters.empty?
  filters.flat_map do |filter|
    filter.map do |k, v|
      [k, v.to_s.empty? ? nil : v].compact.join('-')
    end
  end.join(',')
end
upload_url(path: '/upload', current_time: Time.current, until_time: Time.current + 86400) click to toggle source
# File lib/vault8.rb, line 23
def upload_url(path: '/upload', current_time: Time.current, until_time: Time.current + 86400)
  generate_url_for(path: path, current_time: current_time, until_time: until_time)
end