Module: SecureURI

Defined in:
lib/secure_uri/hasher.rb,
lib/secure_uri/secure_uri.rb,
lib/secure_uri/sha256_hasher.rb

Defined Under Namespace

Classes: Hasher, SHA256Hasher

Constant Summary collapse

HASH_REGEX =
/(?:&hash=([^&]+)$|hash=([^&]+)&?)/

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.hasherObject



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/secure_uri/secure_uri.rb', line 6

def hasher
  if @hasher[/::/]
    arr = @hasher.split("::")
    klass = Kernel
    arr.each do |c|
      klass = klass.const_get(c)
    end
    klass
  else
    Kernel.const_get(@hasher)
  end
end

.hasher=(class_name) ⇒ Object



19
20
21
# File 'lib/secure_uri/secure_uri.rb', line 19

def hasher= class_name
  @hasher = class_name.to_s
end

Instance Method Details

#secure!Object



36
37
38
39
40
# File 'lib/secure_uri/secure_uri.rb', line 36

def secure!
  hash = URI.escape(url_hash, Regexp.new("([^#{URI::PATTERN::UNRESERVED}]|\\.)"))
  self.query = (self.query_minus_hash + "&hash=#{hash}")
  to_s
end

#secure?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/secure_uri/secure_uri.rb', line 27

def secure?
  !hash_string.empty?
end

#valid?Boolean

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/secure_uri/secure_uri.rb', line 31

def valid?
  return false unless secure?
  SecureURI.hasher.compare hash_string, url_minus_hash
end