@@ -70,7 +70,8 @@ def proxies(self):
7070 def proxies (self , proxies ):
7171 self ._proxies = proxies
7272
73- def generate_token (self , session_id , role = Roles .publisher , expire_time = None , data = None ):
73+ def generate_token (self , session_id , role = Roles .publisher , expire_time = None , data = None ,
74+ initial_layout_class_list = []):
7475 """
7576 Generates a token for a given session.
7677
@@ -99,6 +100,8 @@ def generate_token(self, session_id, role=Roles.publisher, expire_time=None, dat
99100 end-user. The length of the string is limited to 1000 characters. This data cannot be
100101 updated once it is set.
101102
103+ :param list initial_layout_class_list:
104+
102105 :rtype:
103106 The token string.
104107 """
@@ -128,7 +131,12 @@ def generate_token(self, session_id, role=Roles.publisher, expire_time=None, dat
128131 if expire_time > now + (60 * 60 * 24 * 30 ): # 30 days
129132 raise OpenTokException (u ('Cannot generate token, expire_time is not in the next 30 days {0}' ).format (expire_time ))
130133 if (data is not None ) and len (data ) > 1000 :
131- raise OpenTokException (u ('Cannot generate token, data must be less than 1000 characters' ).format (data ))
134+ raise OpenTokException (u ('Cannot generate token, data must be less than 1000 characters' ))
135+ if initial_layout_class_list and not all (text_type (c ) for c in initial_layout_class_list ):
136+ raise OpenTokException (u ('Cannot generate token, all items in initial_layout_class_list must be strings' ))
137+ initial_layout_class_list_serialized = u (' ' ).join (initial_layout_class_list )
138+ if len (initial_layout_class_list_serialized ) > 1000 :
139+ raise OpenTokException (u ('Cannot generate token, initial_layout_class_list must be less than 1000 characters' ))
132140
133141 # decode session id to verify api_key
134142 sub_session_id = session_id [2 :]
@@ -143,12 +151,13 @@ def generate_token(self, session_id, role=Roles.publisher, expire_time=None, dat
143151 raise OpenTokException (u ('Cannot generate token, the session_id {0} does not belong to the api_key {1}' ).format (session_id , self .api_key ))
144152
145153 data_params = dict (
146- session_id = session_id ,
147- create_time = now ,
148- expire_time = expire_time ,
149- role = role .value ,
150- connection_data = (data or None ),
151- nonce = random .randint (0 ,999999 )
154+ session_id = session_id ,
155+ create_time = now ,
156+ expire_time = expire_time ,
157+ role = role .value ,
158+ connection_data = (data or None ),
159+ nonce = random .randint (0 ,999999 ),
160+ initial_layout_class_list = initial_layout_class_list_serialized
152161 )
153162 data_string = urlencode (data_params , True )
154163
0 commit comments