Sha256: dcc4321b68b6b77d2c8f2dc1e3aad9e5b7e96a1269c7a17ad98fa57dc989e54c

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

require 'url_store/compact_encoder'

class UrlStore
  VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
  SECRET = 'asdkasjlwqjdqaccxnjkasdfh2313'
  HASHER = 'SHA1'
  SERIALIZER = :marshal

  # (convert to base64url <-> RFC4648) and '|'
  # which is not url-safe if you ask ERB/CGI, but browsers accept it
  IN = '+/='
  OUT = '-_|'

  @@secret = SECRET
  def self.secret=(x); @@secret=x; end
  def self.secret; @@secret; end

  @@hasher = HASHER
  def self.hasher=(x); @@hasher=x; end
  def self.hasher; @@hasher; end

  @@serializer = SERIALIZER
  def self.serializer=(x); @@serializer=x; end
  def self.serializer; @@serializer; end

  def self.encode(data)
    string = encoder.encode(data)
    string.to_s.tr(IN,OUT)
  end

  def self.decode(string)
    string = string.to_s.tr(OUT,IN) # convert to base64url <-> RFC4648
    encoder.decode(string)
  end

  private

  def self.encoder
    if secret == SECRET
      warn "WARNING: you should not use the default secret! use UrlStore.secret='something'"
    end
    UrlStore::CompactEncoder.new(secret, :hasher => hasher, :serializer => serializer)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
url_store-0.2.0 lib/url_store.rb