Module: SignedUrl

Defined in:
lib/signed_url.rb,
lib/signed_url/version.rb

Defined Under Namespace

Classes: UrlEncoder

Constant Summary collapse

VERSION =
'0.1.3'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.encoderObject

Returns the value of attribute encoder.



8
9
10
# File 'lib/signed_url.rb', line 8

def encoder
  @encoder
end

Class Method Details

.configure {|encoder| ... } ⇒ Object

Yields:



10
11
12
13
# File 'lib/signed_url.rb', line 10

def configure
  self.encoder ||= UrlEncoder.new
  yield(encoder)
end

.generate(path:, expires:) ⇒ Object



15
16
17
# 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:) ⇒ Object



19
20
21
22
23
24
25
26
27
# 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