Method: Vonage::Video#generate_client_token

Defined in:
lib/vonage/video.rb

#generate_client_token(session_id:, scope: 'session.connect', role: 'publisher', **params) ⇒ Object

Raises:

  • (ArgumentError)


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/vonage/video.rb', line 56

def generate_client_token(session_id:, scope: 'session.connect', role: 'publisher', **params)
  valid_roles = %w[publisher subscriber moderator publisheronly]
  raise ArgumentError, "Invalid role: #{role}" unless valid_roles.include?(role)

  claims = {
    application_id: @config.application_id,
    scope: scope,
    session_id: session_id,
    role: role,
    initial_layout_class_list: '',
    sub: 'video',
    acl: {
      paths: {'/session/**' => {}}
    }
  }


  claims[:data] = params[:data] if params[:data]
  claims[:initial_layout_class_list] = params[:initial_layout_class_list].join(' ') if params[:initial_layout_class_list]
  claims[:exp] = params[:expire_time].to_i if params[:expire_time]

  JWT.generate(claims, @config.private_key)
end