2023-08-17 12:48:13 -07:00
from typing import Any , Dict , List , Type , TypeVar , Union , cast
import attr
from . . types import UNSET , Unset
2023-09-29 15:51:03 -07:00
TP = TypeVar ( " TP " , bound = " IceServer " )
2023-08-17 12:48:13 -07:00
@attr.s ( auto_attribs = True )
class IceServer :
2023-09-29 16:05:40 -07:00
""" Representation of an ICE server used for STUN/TURN Used to initiate WebRTC connections based on <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer> """ # noqa: E501
credential : Union [ Unset , str ] = UNSET
urls : Union [ Unset , List [ str ] ] = UNSET
username : Union [ Unset , str ] = UNSET
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
additional_properties : Dict [ str , Any ] = attr . ib ( init = False , factory = dict )
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
def to_dict ( self ) - > Dict [ str , Any ] :
credential = self . credential
urls : Union [ Unset , List [ str ] ] = UNSET
if not isinstance ( self . urls , Unset ) :
urls = self . urls
username = self . username
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
field_dict : Dict [ str , Any ] = { }
field_dict . update ( self . additional_properties )
field_dict . update ( { } )
if credential is not UNSET :
field_dict [ ' credential ' ] = credential
if urls is not UNSET :
field_dict [ ' urls ' ] = urls
if username is not UNSET :
field_dict [ ' username ' ] = username
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
return field_dict
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
@classmethod
def from_dict ( cls : Type [ TP ] , src_dict : Dict [ str , Any ] ) - > TP :
d = src_dict . copy ( )
credential = d . pop ( " credential " , UNSET )
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
urls = cast ( List [ str ] , d . pop ( " urls " , UNSET ) )
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
username = d . pop ( " username " , UNSET )
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
ice_server = cls (
credential = credential ,
urls = urls ,
username = username ,
)
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
ice_server . additional_properties = d
return ice_server
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
@property
def additional_keys ( self ) - > List [ str ] :
return list ( self . additional_properties . keys ( ) )
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
def __getitem__ ( self , key : str ) - > Any :
return self . additional_properties [ key ]
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
def __setitem__ ( self , key : str , value : Any ) - > None :
self . additional_properties [ key ] = value
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
def __delitem__ ( self , key : str ) - > None :
del self . additional_properties [ key ]
2023-08-17 12:48:13 -07:00
2023-09-29 16:05:40 -07:00
def __contains__ ( self , key : str ) - > bool :
return key in self . additional_properties