Class: Zm::Client::Token

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

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ Token

Returns a new instance of Token.



6
7
8
9
# File 'lib/zm/client/token.rb', line 6

def initialize(str)
  @str = str
  @key_id, @hmac, @encoded = @str.split('_')
end

Instance Method Details

#admin? ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
35
# File 'lib/zm/client/token.rb', line 31

def admin?
  return @admin if defined? @admin

  @admin = metadatas['admin'] == '1'
end

#decoded ⇒ Object



15
16
17
18
19
# File 'lib/zm/client/token.rb', line 15

def decoded
  return @decoded if defined? @decoded

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

#expire_at ⇒ Object



41
42
43
44
45
# File 'lib/zm/client/token.rb', line 41

def expire_at
  return @expire_at if defined? @expire_at

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

#expired? ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/zm/client/token.rb', line 47

def expired?
  expire_at < Time.now
end

#metadatas ⇒ Object



21
22
23
24
25
# File 'lib/zm/client/token.rb', line 21

def metadatas
  return @metadatas if defined? @metadatas

  @metadatas = decoded.split(';').to_h { |part| part.split(/=\d+:/) }.freeze
end

#server_version ⇒ Object



37
38
39
# File 'lib/zm/client/token.rb', line 37

def server_version
  metadatas['version']
end

#to_s ⇒ Object



11
12
13
# File 'lib/zm/client/token.rb', line 11

def to_s
  @str
end

#zimbra_id ⇒ Object



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

def zimbra_id
  metadatas['id']
end