Class: Zm::Client::TokenMetaData

Inherits:
Object
  • Object
show all
Defined in:
lib/zm/client/common/token_metadata.rb

Instance Method Summary collapse

Constructor Details

#initialize(token) ⇒ TokenMetaData

Returns a new instance of TokenMetaData.

Raises:



8
9
10
11
12
13
14
15
16
17
# File 'lib/zm/client/common/token_metadata.rb', line 8

def initialize(token)
  raise TokenMetaDataError, 'no such token' unless token.is_a?(String)

  parts = token.split('_')
  raise TokenMetaDataError, 'invalid token' unless parts.length == 3

  @key_id = parts[0]
  @hmac = parts[1]
  @encoded = parts[2]
end

Instance Method Details

#decodedObject



19
20
21
# File 'lib/zm/client/common/token_metadata.rb', line 19

def decoded
  @decoded ||= [@encoded].pack('H*')
end

#expire_atObject



42
43
44
# File 'lib/zm/client/common/token_metadata.rb', line 42

def expire_at
  @expire_at ||= Time.at(metadatas['exp'].to_f / 1000).freeze
end

#is_admin?Boolean



34
35
36
# File 'lib/zm/client/common/token_metadata.rb', line 34

def is_admin?
  @is_admin ||= metadatas['admin'] == '1'
end

#metadatasObject



23
24
25
26
27
28
# File 'lib/zm/client/common/token_metadata.rb', line 23

def metadatas
  @metadatas ||= Hash[decoded.split('').map do |v|
    key, _, str = v.split(/[:=]/)
    [key, str]
  end].freeze
end

#server_versionObject



38
39
40
# File 'lib/zm/client/common/token_metadata.rb', line 38

def server_version
  metadatas['version']
end

#zimbra_idObject



30
31
32
# File 'lib/zm/client/common/token_metadata.rb', line 30

def zimbra_id
  metadatas['id']
end