class ExpirableToken

Attributes

expire_on[R]
extra[R]
id[R]

Public Class Methods

from_token(token) click to toggle source
# File lib/expirable_token.rb, line 53
def self.from_token(token)
  instance = ExpirableToken.new(nil, nil)
  instance.decode(token)
  return instance
end
new(id, extra, expire_on = nil) click to toggle source
# File lib/expirable_token.rb, line 12
def initialize(id, extra, expire_on = nil)
  @id = id
  @extra = extra
  @created_on = Time.now.to_i
  if expire_on.nil?
    @expire_on = @created_on + 86400
  else
    @expire_on = expire_on
  end
  @diff = @expire_on - @created_on
end

Public Instance Methods

decode(token) click to toggle source
# File lib/expirable_token.rb, line 43
def decode(token)
  a = JSON.parse(Base64.decode64(URI::decode(token)+"==\n"))
  @id = a['0']
  @extra = a['1']
  @diff = a['2']
  @created_on = a['3']
  @expire_on = a['4']
  is_valid
end
encode() click to toggle source
# File lib/expirable_token.rb, line 29
def encode
  URI::encode(Base64.encode64(
    JSON.generate(
      {
        0 => @id,
        1 => @extra,
        2 => @diff,
        3 => @created_on,
        4 => @expire_on
      }
    )
  ).chomp.chomp('=').chomp('='))
end
is_valid() click to toggle source
# File lib/expirable_token.rb, line 24
def is_valid
  today = Time.now.to_i
  !@id.nil? && (@diff = (@expire_on - @created_on)) && (@expire_on > today)
end