1# coding=utf-8 2r""" 3This code was generated by 4\ / _ _ _| _ _ 5 | (_)\/(_)(_|\/| |(/_ v1.0.0 6 / / 7""" 8 9from twilio.base import deserialize 10from twilio.base import serialize 11from twilio.base import values 12from twilio.base.instance_context import InstanceContext 13from twilio.base.instance_resource import InstanceResource 14from twilio.base.list_resource import ListResource 15from twilio.base.page import Page 16 17 18class RoleList(ListResource): 19 20 def __init__(self, version, chat_service_sid): 21 """ 22 Initialize the RoleList 23 24 :param Version version: Version that contains the resource 25 :param chat_service_sid: The SID of the Conversation Service that the resource is associated with 26 27 :returns: twilio.rest.conversations.v1.service.role.RoleList 28 :rtype: twilio.rest.conversations.v1.service.role.RoleList 29 """ 30 super(RoleList, self).__init__(version) 31 32 # Path Solution 33 self._solution = {'chat_service_sid': chat_service_sid, } 34 self._uri = '/Services/{chat_service_sid}/Roles'.format(**self._solution) 35 36 def create(self, friendly_name, type, permission): 37 """ 38 Create the RoleInstance 39 40 :param unicode friendly_name: A string to describe the new resource 41 :param RoleInstance.RoleType type: The type of role 42 :param list[unicode] permission: A permission the role should have 43 44 :returns: The created RoleInstance 45 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 46 """ 47 data = values.of({ 48 'FriendlyName': friendly_name, 49 'Type': type, 50 'Permission': serialize.map(permission, lambda e: e), 51 }) 52 53 payload = self._version.create(method='POST', uri=self._uri, data=data, ) 54 55 return RoleInstance(self._version, payload, chat_service_sid=self._solution['chat_service_sid'], ) 56 57 def stream(self, limit=None, page_size=None): 58 """ 59 Streams RoleInstance records from the API as a generator stream. 60 This operation lazily loads records as efficiently as possible until the limit 61 is reached. 62 The results are returned as a generator, so this operation is memory efficient. 63 64 :param int limit: Upper limit for the number of records to return. stream() 65 guarantees to never return more than limit. Default is no limit 66 :param int page_size: Number of records to fetch per request, when not set will use 67 the default value of 50 records. If no page_size is defined 68 but a limit is defined, stream() will attempt to read the 69 limit with the most efficient page size, i.e. min(limit, 1000) 70 71 :returns: Generator that will yield up to limit results 72 :rtype: list[twilio.rest.conversations.v1.service.role.RoleInstance] 73 """ 74 limits = self._version.read_limits(limit, page_size) 75 76 page = self.page(page_size=limits['page_size'], ) 77 78 return self._version.stream(page, limits['limit']) 79 80 def list(self, limit=None, page_size=None): 81 """ 82 Lists RoleInstance records from the API as a list. 83 Unlike stream(), this operation is eager and will load `limit` records into 84 memory before returning. 85 86 :param int limit: Upper limit for the number of records to return. list() guarantees 87 never to return more than limit. Default is no limit 88 :param int page_size: Number of records to fetch per request, when not set will use 89 the default value of 50 records. If no page_size is defined 90 but a limit is defined, list() will attempt to read the limit 91 with the most efficient page size, i.e. min(limit, 1000) 92 93 :returns: Generator that will yield up to limit results 94 :rtype: list[twilio.rest.conversations.v1.service.role.RoleInstance] 95 """ 96 return list(self.stream(limit=limit, page_size=page_size, )) 97 98 def page(self, page_token=values.unset, page_number=values.unset, 99 page_size=values.unset): 100 """ 101 Retrieve a single page of RoleInstance records from the API. 102 Request is executed immediately 103 104 :param str page_token: PageToken provided by the API 105 :param int page_number: Page Number, this value is simply for client state 106 :param int page_size: Number of records to return, defaults to 50 107 108 :returns: Page of RoleInstance 109 :rtype: twilio.rest.conversations.v1.service.role.RolePage 110 """ 111 data = values.of({'PageToken': page_token, 'Page': page_number, 'PageSize': page_size, }) 112 113 response = self._version.page(method='GET', uri=self._uri, params=data, ) 114 115 return RolePage(self._version, response, self._solution) 116 117 def get_page(self, target_url): 118 """ 119 Retrieve a specific page of RoleInstance records from the API. 120 Request is executed immediately 121 122 :param str target_url: API-generated URL for the requested results page 123 124 :returns: Page of RoleInstance 125 :rtype: twilio.rest.conversations.v1.service.role.RolePage 126 """ 127 response = self._version.domain.twilio.request( 128 'GET', 129 target_url, 130 ) 131 132 return RolePage(self._version, response, self._solution) 133 134 def get(self, sid): 135 """ 136 Constructs a RoleContext 137 138 :param sid: The SID of the Role resource to fetch 139 140 :returns: twilio.rest.conversations.v1.service.role.RoleContext 141 :rtype: twilio.rest.conversations.v1.service.role.RoleContext 142 """ 143 return RoleContext(self._version, chat_service_sid=self._solution['chat_service_sid'], sid=sid, ) 144 145 def __call__(self, sid): 146 """ 147 Constructs a RoleContext 148 149 :param sid: The SID of the Role resource to fetch 150 151 :returns: twilio.rest.conversations.v1.service.role.RoleContext 152 :rtype: twilio.rest.conversations.v1.service.role.RoleContext 153 """ 154 return RoleContext(self._version, chat_service_sid=self._solution['chat_service_sid'], sid=sid, ) 155 156 def __repr__(self): 157 """ 158 Provide a friendly representation 159 160 :returns: Machine friendly representation 161 :rtype: str 162 """ 163 return '<Twilio.Conversations.V1.RoleList>' 164 165 166class RolePage(Page): 167 168 def __init__(self, version, response, solution): 169 """ 170 Initialize the RolePage 171 172 :param Version version: Version that contains the resource 173 :param Response response: Response from the API 174 :param chat_service_sid: The SID of the Conversation Service that the resource is associated with 175 176 :returns: twilio.rest.conversations.v1.service.role.RolePage 177 :rtype: twilio.rest.conversations.v1.service.role.RolePage 178 """ 179 super(RolePage, self).__init__(version, response) 180 181 # Path Solution 182 self._solution = solution 183 184 def get_instance(self, payload): 185 """ 186 Build an instance of RoleInstance 187 188 :param dict payload: Payload response from the API 189 190 :returns: twilio.rest.conversations.v1.service.role.RoleInstance 191 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 192 """ 193 return RoleInstance(self._version, payload, chat_service_sid=self._solution['chat_service_sid'], ) 194 195 def __repr__(self): 196 """ 197 Provide a friendly representation 198 199 :returns: Machine friendly representation 200 :rtype: str 201 """ 202 return '<Twilio.Conversations.V1.RolePage>' 203 204 205class RoleContext(InstanceContext): 206 207 def __init__(self, version, chat_service_sid, sid): 208 """ 209 Initialize the RoleContext 210 211 :param Version version: Version that contains the resource 212 :param chat_service_sid: The SID of the Conversation Service to fetch the resource from 213 :param sid: The SID of the Role resource to fetch 214 215 :returns: twilio.rest.conversations.v1.service.role.RoleContext 216 :rtype: twilio.rest.conversations.v1.service.role.RoleContext 217 """ 218 super(RoleContext, self).__init__(version) 219 220 # Path Solution 221 self._solution = {'chat_service_sid': chat_service_sid, 'sid': sid, } 222 self._uri = '/Services/{chat_service_sid}/Roles/{sid}'.format(**self._solution) 223 224 def update(self, permission): 225 """ 226 Update the RoleInstance 227 228 :param list[unicode] permission: A permission the role should have 229 230 :returns: The updated RoleInstance 231 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 232 """ 233 data = values.of({'Permission': serialize.map(permission, lambda e: e), }) 234 235 payload = self._version.update(method='POST', uri=self._uri, data=data, ) 236 237 return RoleInstance( 238 self._version, 239 payload, 240 chat_service_sid=self._solution['chat_service_sid'], 241 sid=self._solution['sid'], 242 ) 243 244 def delete(self): 245 """ 246 Deletes the RoleInstance 247 248 :returns: True if delete succeeds, False otherwise 249 :rtype: bool 250 """ 251 return self._version.delete(method='DELETE', uri=self._uri, ) 252 253 def fetch(self): 254 """ 255 Fetch the RoleInstance 256 257 :returns: The fetched RoleInstance 258 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 259 """ 260 payload = self._version.fetch(method='GET', uri=self._uri, ) 261 262 return RoleInstance( 263 self._version, 264 payload, 265 chat_service_sid=self._solution['chat_service_sid'], 266 sid=self._solution['sid'], 267 ) 268 269 def __repr__(self): 270 """ 271 Provide a friendly representation 272 273 :returns: Machine friendly representation 274 :rtype: str 275 """ 276 context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items()) 277 return '<Twilio.Conversations.V1.RoleContext {}>'.format(context) 278 279 280class RoleInstance(InstanceResource): 281 282 class RoleType(object): 283 CONVERSATION = "conversation" 284 SERVICE = "service" 285 286 def __init__(self, version, payload, chat_service_sid, sid=None): 287 """ 288 Initialize the RoleInstance 289 290 :returns: twilio.rest.conversations.v1.service.role.RoleInstance 291 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 292 """ 293 super(RoleInstance, self).__init__(version) 294 295 # Marshaled Properties 296 self._properties = { 297 'sid': payload.get('sid'), 298 'account_sid': payload.get('account_sid'), 299 'chat_service_sid': payload.get('chat_service_sid'), 300 'friendly_name': payload.get('friendly_name'), 301 'type': payload.get('type'), 302 'permissions': payload.get('permissions'), 303 'date_created': deserialize.iso8601_datetime(payload.get('date_created')), 304 'date_updated': deserialize.iso8601_datetime(payload.get('date_updated')), 305 'url': payload.get('url'), 306 } 307 308 # Context 309 self._context = None 310 self._solution = {'chat_service_sid': chat_service_sid, 'sid': sid or self._properties['sid'], } 311 312 @property 313 def _proxy(self): 314 """ 315 Generate an instance context for the instance, the context is capable of 316 performing various actions. All instance actions are proxied to the context 317 318 :returns: RoleContext for this RoleInstance 319 :rtype: twilio.rest.conversations.v1.service.role.RoleContext 320 """ 321 if self._context is None: 322 self._context = RoleContext( 323 self._version, 324 chat_service_sid=self._solution['chat_service_sid'], 325 sid=self._solution['sid'], 326 ) 327 return self._context 328 329 @property 330 def sid(self): 331 """ 332 :returns: The unique string that identifies the resource 333 :rtype: unicode 334 """ 335 return self._properties['sid'] 336 337 @property 338 def account_sid(self): 339 """ 340 :returns: The SID of the Account that created the resource 341 :rtype: unicode 342 """ 343 return self._properties['account_sid'] 344 345 @property 346 def chat_service_sid(self): 347 """ 348 :returns: The SID of the Conversation Service that the resource is associated with 349 :rtype: unicode 350 """ 351 return self._properties['chat_service_sid'] 352 353 @property 354 def friendly_name(self): 355 """ 356 :returns: The string that you assigned to describe the resource 357 :rtype: unicode 358 """ 359 return self._properties['friendly_name'] 360 361 @property 362 def type(self): 363 """ 364 :returns: The type of role 365 :rtype: RoleInstance.RoleType 366 """ 367 return self._properties['type'] 368 369 @property 370 def permissions(self): 371 """ 372 :returns: An array of the permissions the role has been granted 373 :rtype: list[unicode] 374 """ 375 return self._properties['permissions'] 376 377 @property 378 def date_created(self): 379 """ 380 :returns: The ISO 8601 date and time in GMT when the resource was created 381 :rtype: datetime 382 """ 383 return self._properties['date_created'] 384 385 @property 386 def date_updated(self): 387 """ 388 :returns: The ISO 8601 date and time in GMT when the resource was last updated 389 :rtype: datetime 390 """ 391 return self._properties['date_updated'] 392 393 @property 394 def url(self): 395 """ 396 :returns: An absolute URL for this user role. 397 :rtype: unicode 398 """ 399 return self._properties['url'] 400 401 def update(self, permission): 402 """ 403 Update the RoleInstance 404 405 :param list[unicode] permission: A permission the role should have 406 407 :returns: The updated RoleInstance 408 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 409 """ 410 return self._proxy.update(permission, ) 411 412 def delete(self): 413 """ 414 Deletes the RoleInstance 415 416 :returns: True if delete succeeds, False otherwise 417 :rtype: bool 418 """ 419 return self._proxy.delete() 420 421 def fetch(self): 422 """ 423 Fetch the RoleInstance 424 425 :returns: The fetched RoleInstance 426 :rtype: twilio.rest.conversations.v1.service.role.RoleInstance 427 """ 428 return self._proxy.fetch() 429 430 def __repr__(self): 431 """ 432 Provide a friendly representation 433 434 :returns: Machine friendly representation 435 :rtype: str 436 """ 437 context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items()) 438 return '<Twilio.Conversations.V1.RoleInstance {}>'.format(context) 439