a
    !f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eedddZeedddZeeddd	Zd9eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	ddZd:eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	ddZeeeeeedddZeeeedddZd;eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	ddZd<eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	ddZeeeedddZd=eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	ddZd>eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	dd Zeeeedd!d"Zd?eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	d#d$Zd@eee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	d%d&ZdAe	e e	e e
eef d'd(d)Z dBeee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	d*d+Z!dCeee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	d,d-Z"dDe	e# e	e e	e e$e d.d/d0Z%dEe	e# e	e e	e e&e d.d1d2Z'eeeedd3d4Z(dFeee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	d5d6Z)dGeee	e
eef  e	e
eef  e	e
eef  e	eeef  e	e eed	d7d8Z*d
S )HVersionz$
    Represents an API version.
    domainversionc                 C   s   || _ || _d S )Nr   )selfr   r    r   T/var/www/html/python-backend/venv/lib/python3.9/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)	methodr   paramsdataheadersauthtimeoutallow_redirectsr   c	           
   
   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)r   r   responsemessager   c              	   C   s~   zRt |j}d|v r&d||d }|d}|d|j}t|j|||||W S  tyx   t|j|||j| Y S 0 dS )zK
        Wraps an exceptional response in a `TwilioRestException`.
        r*   z{}: {}detailscodeN)jsonloadstextr   getstatus_coder
   	Exception)clsr   r   r)   r*   Zerror_payloadr+   r,   r   r   r   	exceptionT   s    
zVersion.exception)r   r   r)   r   c                 C   s0   |j dk s|j dkr$| |||dt|jS )z,
        Parses fetch response JSON
           i  zUnable to fetch recordr1   r4   r-   r.   r/   r   r   r   r)   r   r   r   _parse_fetchj   s    zVersion._parse_fetchc	           
   
   C   s(   | j ||||||||d}	| |||	S )z,
        Fetch a resource instance.
        r$   )r%   r8   
r   r   r   r   r   r    r!   r"   r#   r)   r   r   r   fetcht   s    zVersion.fetchc	           
   
      s.   | j ||||||||dI dH }	| |||	S )z;
        Asynchronously fetch a resource instance.
        r$   N)r(   r8   r9   r   r   r   fetch_async   s    zVersion.fetch_asyncc                 C   s0   |j dk s|j dkr$| |||dt|jS )z-
        Parses update response JSON
        r5   ,  zUnable to update recordr6   r7   r   r   r   _parse_update   s    zVersion._parse_updatec	           
   
   C   s(   | j ||||||||d}	| |||	S )z-
        Update a resource instance.
        r$   )r%   r=   r9   r   r   r   update   s    zVersion.updatec	           
   
      s.   | j ||||||||dI dH }	| |||	S )z<
        Asynchronously update a resource instance.
        r$   N)r(   r=   r9   r   r   r   update_async   s    zVersion.update_asyncc                 C   s.   |j dk s|j dkr$| |||d|j dkS )z-
        Parses delete response JSON
        r5   r<   zUnable to delete record   )r1   r4   r7   r   r   r   _parse_delete   s    zVersion._parse_deletec	           
   
   C   s(   | j ||||||||d}	| |||	S )z$
        Delete a resource.
        r$   )r%   rA   r9   r   r   r   delete   s    zVersion.deletec	           
   
      s.   | j ||||||||dI dH }	| |||	S )z3
        Asynchronously delete a resource.
        r$   N)r(   rA   r9   r   r   r   delete_async  s    zVersion.delete_async)limit	page_sizer   c                 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)rD   rE   )r   unset)r   rD   rE   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(   rH   r   r   r   
page_asyncT  s    zVersion.page_async)rI   rD   
page_limitr   c                 c   st   d}d}|durp|D ].}|V  |d7 }|r|t jur||k r dS q|d7 }|rf|t jurf||k rfdS | }q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   rF   Z	next_pager   rI   rD   rK   Zcurrent_recordZcurrent_pagerecordr   r   r   streamm  s"    zVersion.streamc                 C  sz   d}d}|durv|D ].}|V  |d7 }|r|t jur||k r dS q|d7 }|rf|t jurf||k rfdS | I dH }qdS rL   )r   rF   Znext_page_asyncrN   r   r   r   stream_async  s"    zVersion.stream_asyncc                 C   s0   |j dk s|j dkr$| |||dt|jS )z,
        Parse create response JSON
        r5   r<   zUnable to create recordr6   r7   r   r   r   _parse_create  s    zVersion._parse_createc	           
   
   C   s(   | j ||||||||d}	| |||	S )z-
        Create a resource instance.
        r$   )r%   rR   r9   r   r   r   create  s    zVersion.createc	           
   
      s.   | j ||||||||dI dH }	| |||	S )z<
        Asynchronously create a resource instance.
        r$   N)r(   rR   r9   r   r   r   create_async  s    zVersion.create_async)NNNNNF)NNNNNF)NNNNNF)NNNNNF)NNNNNF)NNNNNF)NNNNNF)NNNNNF)NN)NNNNNF)NNNNNF)NN)NN)NNNNNF)NNNNNF)+__name__
__module____qualname____doc__r	   strr   r   r   r   r   objectr   floatboolr   r%   r(   classmethodr
   r4   r   r8   r:   r;   r=   r>   r?   rA   rB   rC   intrG   rI   rJ   r   r   rP   r   rQ   rR   rS   rT   r   r   r   r   r      s  
                                                 
              $  !            r   )r-   typingr   r   r   r   r   r   Ztwilio.baser   Ztwilio.base.domainr	   Ztwilio.base.exceptionsr
   Ztwilio.base.pager   Ztwilio.http.responser   rZ   r   r   r   r   r   <module>   s    