module SignedUrl

Constants

VERSION

Attributes

encoder[RW]

Public Class Methods

configure() { |encoder| ... } click to toggle source
# File lib/signed_url.rb, line 10
def configure
  self.encoder ||= UrlEncoder.new
  yield(encoder)
end
generate(path:, expires:) click to toggle source
# File lib/signed_url.rb, line 15
def generate(path:, expires:)
  encoder.encode(path: path, expires: expires)
end
validate(key_id:, secret:, path:, host:, expires:, request_url:) click to toggle source
# File lib/signed_url.rb, line 19
def validate(key_id:, secret:, path:, host:, expires:, request_url:)
  validating_encoder = UrlEncoder.new
  validating_encoder.host = host
  validating_encoder.key_id = key_id
  validating_encoder.secret = secret
  url_matched = (request_url == validating_encoder.encode(path: path, expires: expires))
  time_in_the_future = Time.at(expires.to_i).utc > Time.now.utc
  url_matched && time_in_the_future
end