Class: UberLogin::TokenEncoder

Inherits:
Object
  • Object
show all
Defined in:
lib/uber_login/token_encoder.rb

Class Method Summary collapse

Class Method Details

.decode(composite) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/uber_login/token_encoder.rb', line 19

def decode(composite)
  if composite
    composite.split(':')
  else
    [ nil, nil ]
  end
end

.encode(sequence, token) ⇒ Object



11
12
13
# File 'lib/uber_login/token_encoder.rb', line 11

def encode(sequence, token)
  encode_array [ sequence, token ]
end

.encode_array(composite_array) ⇒ Object



15
16
17
# File 'lib/uber_login/token_encoder.rb', line 15

def encode_array(composite_array)
  composite_array.join(':')
end

.generateObject



6
7
8
9
# File 'lib/uber_login/token_encoder.rb', line 6

def generate
  # 9 and 21 are both multiple of 3, so we do not get base64 padding (==)
  [ SecureRandom.urlsafe_base64(9), SecureRandom.base64(21) ]
end

.sequence(composite) ⇒ Object



27
28
29
30
31
# File 'lib/uber_login/token_encoder.rb', line 27

def sequence(composite)
  if composite
    decode(composite)[0]
  end
end

.token(composite) ⇒ Object



33
34
35
36
37
# File 'lib/uber_login/token_encoder.rb', line 33

def token(composite)
  if composite
    decode(composite)[1]
  end
end

.token_hash(composite) ⇒ Object



39
40
41
# File 'lib/uber_login/token_encoder.rb', line 39

def token_hash(composite)
  BCrypt::Password.create(token(composite)).to_s
end