@@ -73,7 +73,8 @@ def proxies(self):
7373 def proxies (self , proxies ):
7474 self ._proxies = proxies
7575
76- def generate_token (self , session_id , role = Roles .publisher , expire_time = None , data = None ):
76+ def generate_token (self , session_id , role = Roles .publisher , expire_time = None , data = None ,
77+ initial_layout_class_list = []):
7778 """
7879 Generates a token for a given session.
7980
@@ -102,6 +103,8 @@ def generate_token(self, session_id, role=Roles.publisher, expire_time=None, dat
102103 end-user. The length of the string is limited to 1000 characters. This data cannot be
103104 updated once it is set.
104105
106+ :param list initial_layout_class_list:
107+
105108 :rtype:
106109 The token string.
107110 """
@@ -131,7 +134,12 @@ def generate_token(self, session_id, role=Roles.publisher, expire_time=None, dat
131134 if expire_time > now + (60 * 60 * 24 * 30 ): # 30 days
132135 raise OpenTokException (u ('Cannot generate token, expire_time is not in the next 30 days {0}' ).format (expire_time ))
133136 if data and len (data ) > 1000 :
134- raise OpenTokException (u ('Cannot generate token, data must be less than 1000 characters' ).format (data ))
137+ raise OpenTokException (u ('Cannot generate token, data must be less than 1000 characters' ))
138+ if initial_layout_class_list and not all (text_type (c ) for c in initial_layout_class_list ):
139+ raise OpenTokException (u ('Cannot generate token, all items in initial_layout_class_list must be strings' ))
140+ initial_layout_class_list_serialized = u (' ' ).join (initial_layout_class_list )
141+ if len (initial_layout_class_list_serialized ) > 1000 :
142+ raise OpenTokException (u ('Cannot generate token, initial_layout_class_list must be less than 1000 characters' ))
135143
136144 # decode session id to verify api_key
137145 sub_session_id = session_id [2 :]
@@ -146,11 +154,12 @@ def generate_token(self, session_id, role=Roles.publisher, expire_time=None, dat
146154 raise OpenTokException (u ('Cannot generate token, the session_id {0} does not belong to the api_key {1}' ).format (session_id , self .api_key ))
147155
148156 data_params = dict (
149- session_id = session_id ,
150- create_time = now ,
151- expire_time = expire_time ,
152- role = role .value ,
153- nonce = random .randint (0 ,999999 )
157+ session_id = session_id ,
158+ create_time = now ,
159+ expire_time = expire_time ,
160+ role = role .value ,
161+ nonce = random .randint (0 ,999999 ),
162+ initial_layout_class_list = initial_layout_class_list_serialized
154163 )
155164 if data :
156165 data_params ['connection_data' ] = data
0 commit comments