class Ably::Models::TokenDetails

Contains an Ably Token and its associated metadata.

Constants

TOKEN_EXPIRY_BUFFER

Buffer in seconds before a token is considered unusable For example, if buffer is 10s, the token can no longer be used for new requests 9s before it expires

Public Class Methods

new(attributes = {}) click to toggle source

@param attributes @option attributes [String] :token token used to authenticate requests @option attributes [String] :key_name API key name used to create this token @option attributes [Time,Integer] :issued Time the token was issued as Time or Integer in milliseconds @option attributes [Time,Integer] :expires Time the token expires as Time or Integer in milliseconds @option attributes [String] :capability JSON stringified capabilities assigned to this token @option attributes [String] :client_id client ID assigned to this token

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 34
def initialize(attributes = {})
  @hash_object = IdiomaticRubyWrapper(attributes.clone)

  %w(issued expires).map(&:to_sym).each do |time_attribute|
    if self.attributes[time_attribute].kind_of?(Time)
      self.attributes[time_attribute] = (self.attributes[time_attribute].to_f * 1000).round
    end
  end

  self.attributes.freeze
end

Public Instance Methods

attributes() click to toggle source

@return [Hash] Access the token details Hash object ruby’fied to use symbolized keys

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 126
def attributes
  @hash_object
end
capability() click to toggle source

The capabilities associated with this Ably Token. The capabilities value is a JSON-encoded representation of the resource paths and associated operations. Read more about capabilities in the capabilities docs. @spec TD5 @return [Hash] Capabilities assigned to this token

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 80
def capability
  if attributes.has_key?(:capability)
    capability_val = attributes.fetch(:capability)
    case capability_val
    when Hash
      capability_val
    when Ably::Models::IdiomaticRubyWrapper
      capability_val.as_json
    else
      JSON.parse(attributes.fetch(:capability))
    end
  end
end
client_id() click to toggle source

The client ID, if any, bound to this Ably Token. If a client ID is included, then the Ably Token authenticates its bearer as that client ID, and the Ably Token may only be used to perform operations on behalf of that client ID. The client is then considered to be an identified client. @spec TD6 @return [String] Optional client ID assigned to this token

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 99
def client_id
  attributes[:client_id]
end
expired?(attributes = {}) click to toggle source

Returns true if token is expired or about to expire For tokens that have not got an explicit expires attribute expired? will always return true

@param attributes [Hash] @option attributes [Time] :from Sets a current time from which token expires

@return [Boolean]

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 110
def expired?(attributes = {})
  return false if !expires

  from = attributes[:from] || Time.now
  expires < from + TOKEN_EXPIRY_BUFFER
end
expires() click to toggle source

The timestamp at which this token expires as milliseconds since the Unix epoch. @spec TD3 @return [Time] Time the token expires

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 72
def expires
  as_time_from_epoch(attributes[:expires], granularity: :ms, allow_nil: :true)
end
from_token_string?() click to toggle source

True if the TokenDetails was created from an opaque string i.e. no metadata exists for this token @return [Boolean] @api private

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 120
def from_token_string?
  attributes.keys == [:token]
end
issued() click to toggle source

The timestamp at which this token was issued as milliseconds since the Unix epoch. @spec TD4 @return [Time] Time the token was issued

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 65
def issued
  as_time_from_epoch(attributes[:issued], granularity: :ms, allow_nil: :true)
end
key_name() click to toggle source

@return [String] API key name used to create this token. An API key is made up of an API key name and secret delimited by a :

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 58
def key_name
  attributes[:key_name]
end
to_s() click to toggle source
# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 130
def to_s
  "<TokenDetails token=#{token} client_id=#{client_id} key_name=#{key_name} issued=#{issued} expires=#{expires} capability=#{capability} expired?=#{expired?}>"
end
token() click to toggle source

The Ably Token itself. A typical Ably Token string appears with the form xVLyHw.A-pwh7wicf3afTfgiw4k2Ku33kcnSA7z6y8FjuYpe3QaNRTEo4.

@spec TD2

@return [String] Token used to authenticate requests

# File lib/submodules/ably-ruby/lib/ably/models/token_details.rb, line 52
def token
  attributes[:token]
end