o
    f>h9                     @   sx   d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ G dd	 d	eZdS )
    N)AnyAsyncIteratorDictIteratorOptionalTuple)values)Domain)TwilioRestException)Page)Responsec                   @   s  e Zd ZdZdedefddZdedefdd	Zdedefd
dZ						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefddZ						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefddZedededededef
ddZdedededefddZ						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefdd Z						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd!d"Zdedededefd#d$Z						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd%d&Z						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd'd(Zdedededefd)d*Z						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd+d,Z						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd-d.Z	dDd/e	e d0e	e de
eef fd1d2Z 						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd3d4Z!						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd5d6Z"		dDd7e	e# d/e	e d8e	e de$e fd9d:Z%		dDd7e	e# d/e	e d8e	e de&e fd;d<Z'dedededefd=d>Z(						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefd?d@Z)						dCdedede	e
eef  de	e
eef  de	e
eef  de	eeef  de	e dedefdAdBZ*dS )EVersionz$
    Represents an API version.
    domainversionc                 C   s   || _ || _d S )N)r   r   )selfr   r    r   F/var/www/html/venv/lib/python3.10/site-packages/twilio/base/version.py__init__   s   
zVersion.__init__urireturnc                 C   s   | j | |S )z<
        Turns a relative uri into an absolute url.
        )r   absolute_urlrelative_urir   r   r   r   r   r      s   zVersion.absolute_urlc                 C   s   d | jd|dS )zE
        Turns a relative uri into a versioned relative uri.
        z{}/{}/)formatr   stripr   r   r   r   r      s   zVersion.relative_uriNFmethodparamsdataheadersauthtimeoutallow_redirectsc	           
   
   C   s&   |  |}	| jj||	||||||dS )z'
        Make an HTTP request.
        r   r   r   r    r!   r"   )r   r   request
r   r   r   r   r   r   r    r!   r"   urlr   r   r   r$       s   
zVersion.requestc	           
   
      s.   |  |}	| jj||	||||||dI dH S )z3
        Make an asynchronous HTTP request
        r#   N)r   r   request_asyncr%   r   r   r   r'   :   s   
zVersion.request_asyncresponsemessagec              	   C   sz   z)t |j}d|v rd||d }|d}|d|j}t|j|||||W S  ty<   t|j|||j| Y S w )zK
        Wraps an exceptional response in a `TwilioRestException`.
        r)   z{}: {}detailscode)jsonloadstextr   getstatus_coder
   	Exception)clsr   r   r(   r)   error_payloadr*   r+   r   r   r   	exceptionT   s   
zVersion.exceptionc                 C   0   |j dk s
|j dkr| |||dt|jS )z,
        Parses fetch response JSON
           i  zUnable to fetch recordr0   r4   r,   r-   r.   r   r   r   r(   r   r   r   _parse_fetchj   s   zVersion._parse_fetchc	           
   
   C   (   | j ||||||||d}	| |||	S )z,
        Fetch a resource instance.
        r#   )r$   r9   
r   r   r   r   r   r   r    r!   r"   r(   r   r   r   fetcht      zVersion.fetchc	           
   
      0   | j ||||||||dI dH }	| |||	S )z;
        Asynchronously fetch a resource instance.
        r#   N)r'   r9   r;   r   r   r   fetch_async      
zVersion.fetch_asyncc                 C   r5   )z-
        Parses update response JSON
        r6   ,  zUnable to update recordr7   r8   r   r   r   _parse_update      zVersion._parse_updatec	           
   
   C   r:   )z-
        Update a resource instance.
        r#   )r$   rB   r;   r   r   r   update   r=   zVersion.updatec	           
   
      r>   )z<
        Asynchronously update a resource instance.
        r#   N)r'   rB   r;   r   r   r   update_async      zVersion.update_asyncc                 C   s.   |j dk s
|j dkr| |||d|j dkS )z-
        Parses delete response JSON
        r6   rA   zUnable to delete record   )r0   r4   r8   r   r   r   _parse_delete   s   
zVersion._parse_deletec	           
   
   C   r:   )z$
        Delete a resource.
        r#   )r$   rH   r;   r   r   r   delete   r=   zVersion.deletec	           
   
      r>   )z3
        Asynchronously delete a resource.
        r#   N)r'   rH   r;   r   r   r   delete_async  rF   zVersion.delete_asynclimit	page_sizec                 C   s*   |dur
|du r
|}|pt j|pt jdS )a  
        Takes a limit on the max number of records to read and a max page_size
        and calculates the max number of pages to read.

        :param limit: Max number of records to read.
        :param page_size: Max page size.
        :return A dictionary of paging limits.
        N)rK   rL   )r   unset)r   rK   rL   r   r   r   read_limits'  s
   zVersion.read_limitsc	           	   
   C   s   | j ||||||||dS )z(
        Makes an HTTP request.
        r#   )r$   	r   r   r   r   r   r   r    r!   r"   r   r   r   page:  s   zVersion.pagec	           	   
      s"   | j ||||||||dI dH S )z5
        Makes an asynchronous HTTP request.
        r#   N)r'   rO   r   r   r   
page_asyncS  s   zVersion.page_asyncrP   
page_limitc                 c   s    d}d}|dur>|D ]}|V  |d7 }|r"|t jur"||k r" dS q|d7 }|r4|t jur4||k r4dS | }|dus	dS dS z
        Generates records one a time from a page, stopping at prescribed limits.

        :param page: The page to stream.
        :param limit: The max number of records to read.
        :param page_limit: The max number of pages to read.
           N)r   rM   	next_pager   rP   rK   rR   current_recordcurrent_pagerecordr   r   r   streaml  s$   
zVersion.streamc                 C  s   d}d}|durA|D ]}|V  |d7 }|r"|t jur"||k r" dS q|d7 }|r4|t jur4||k r4dS | I dH }|dus	dS dS rS   )r   rM   next_page_asyncrV   r   r   r   stream_async  s$   
zVersion.stream_asyncc                 C   r5   )z,
        Parse create response JSON
        r6   rA   zUnable to create recordr7   r8   r   r   r   _parse_create  rC   zVersion._parse_createc	           
   
   C   r:   )z-
        Create a resource instance.
        r#   )r$   r]   r;   r   r   r   create  s   
zVersion.createc	           
   
      r>   )z<
        Asynchronously create a resource instance.
        r#   N)r'   r]   r;   r   r   r   create_async  r@   zVersion.create_async)NNNNNF)NN)+__name__
__module____qualname____doc__r	   strr   r   r   r   r   objectr   floatboolr   r$   r'   classmethodr
   r4   r   r9   r<   r?   rB   rD   rE   rH   rI   rJ   intrN   rP   rQ   r   r   rZ   r   r\   r]   r^   r_   r   r   r   r   r      s   
	

	

	

	

	

	

	

	



	

	


$
!	

	
r   )r,   typingr   r   r   r   r   r   twilio.baser   twilio.base.domainr	   twilio.base.exceptionsr
   twilio.base.pager   twilio.http.responser   re   r   r   r   r   r   <module>   s     