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



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

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

#is_admin?Boolean

Returns:

  • (Boolean)


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

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

#metadatasObject



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

def metadatas
  @metadatas ||= Hash[decoded.split(/;/).map { |part| part.split(/=\d+:/) }].freeze
end

#server_versionObject



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

def server_version
  metadatas['version']
end

#zimbra_idObject



27
28
29
# File 'lib/zm/client/common/token_metadata.rb', line 27

def zimbra_id
  @zimbra_id ||= metadatas['id']
end