Class: OpenTok::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/opentok/session.rb

Overview

Represents an OpenTok session.

Use the OpenTok.createSession() method to create an OpenTok session. Use the session_id property of the Session object to get the session ID.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#:archive_resolutionString (readonly)

The resolution of archives in an auto-archived session.

Returns:

  • (String)

    the current value of :archive_resolution



55
56
57
# File 'lib/opentok/session.rb', line 55

def :archive_resolution
  @:archive_resolution
end

#archive_modeString (readonly)

Whether the session will be archived automatically (:always) or not (:manual).

Returns:

  • (String)

    the current value of archive_mode



55
56
57
# File 'lib/opentok/session.rb', line 55

def archive_mode
  @archive_mode
end

#archive_nameString (readonly)

The name to use for archives in auto-archived sessions.

Returns:

  • (String)

    the current value of archive_name



55
56
57
# File 'lib/opentok/session.rb', line 55

def archive_name
  @archive_name
end

#archive_resolutionObject (readonly)

Returns the value of attribute archive_resolution.



64
65
66
# File 'lib/opentok/session.rb', line 64

def archive_resolution
  @archive_resolution
end

#e2eeObject (readonly)

Returns the value of attribute e2ee.



64
65
66
# File 'lib/opentok/session.rb', line 64

def e2ee
  @e2ee
end

#locationString (readonly)

The location hint IP address. See the OpenTok.createSession() method.

Returns:

  • (String)

    the current value of location



55
56
57
# File 'lib/opentok/session.rb', line 55

def location
  @location
end

#media_modeString (readonly)

Set to :routed if the session uses the OpenTok Media Router or to :relayed if the session attempts to transmit streams directly between clients.

Returns:

  • (String)

    the current value of media_mode



55
56
57
# File 'lib/opentok/session.rb', line 55

def media_mode
  @media_mode
end

#session_idString (readonly)

The session ID.

Returns:

  • (String)

    the current value of session_id



55
56
57
# File 'lib/opentok/session.rb', line 55

def session_id
  @session_id
end

Instance Method Details

#generate_token(options) ⇒ String

Generates a token.

Parameters:

  • options (Hash)

Options Hash (options):

  • :role (Symbol)

    The role for the token. Set this to one of the following values:

    • :subscriber – A subscriber can only subscribe to streams.

    • :publisher – A publisher can publish streams, subscribe to streams, and signal. (This is the default value if you do not specify a role.)

    • :moderator – n addition to the privileges granted to a publisher, a moderator can perform moderation functions, such as forcing clients to disconnect, to stop publishing streams, or to mute audio in published streams. See the / Moderation developer guide.

  • :expire_time (integer)

    The expiration time, in seconds since the UNIX epoch. Pass in 0 to use the default expiration time of 24 hours after the token creation time. The maximum expiration time is 30 days after the creation time.

  • :data (String)

    A string containing connection metadata describing the end-user. For example, you can pass the user ID, name, or other data describing the end-user. The length of the string is limited to 1000 characters. This data cannot be updated once it is set.

  • :initial_layout_class_list (Array)

    An array of class names (strings) to be used as the initial layout classes for streams published by the client. Layout classes are used in customizing the layout of videos in / live streaming broadcasts and composed archives.

Returns:

  • (String)

    The token string.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/opentok/session.rb', line 55

class Session

  include TokenGenerator
  generates_tokens({
    :api_key => ->(instance) { instance.api_key },
    :api_secret => ->(instance) { instance.api_secret },
    :session_id => ->(instance) { instance.session_id }
  })

  attr_reader :session_id, :media_mode, :location, :archive_mode, :archive_name, :archive_resolution, :e2ee, :api_key, :api_secret

  # @private
  # this implementation doesn't completely understand the format of a Session ID
  # that is intentional, that is too much responsibility.
  def self.belongs_to_api_key?(session_id, api_key)
    encoded = session_id[2..session_id.length]
                        .gsub('-', '+')
                        .gsub('_', '/')
    decoded = Base64.decode64(encoded)
    decoded.include? api_key
  end

  # @private
  def initialize(api_key, api_secret, session_id, opts={})
    @api_key, @api_secret, @session_id = api_key, api_secret, session_id
    @media_mode = opts.fetch(:media_mode, :relayed)
    @location = opts[:location]
    @archive_mode = opts.fetch(:archive_mode, :manual)
    @archive_name = opts.fetch(:archive_name, '') if archive_mode == :always
    @archive_resolution = opts.fetch(:archive_resolution, "640x480") if archive_mode == :always
    @e2ee = opts.fetch(:e2ee, :false)
  end

  # @private
  def to_s
    @session_id
  end
end