o
    ä›e9  ã                   @   s@   d dl 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)Úceil)Úvalues)ÚTwilioRestExceptionc                   @   sœ   e Zd ZdZdd„ Zdd„ Zdd„ Z			dd
d„Zedd„ ƒZ				ddd„Z
			ddd„Z			ddd„Zddd„Z			ddd„Zddd„Z			ddd„ZdS )ÚVersionz$
    Represents an API version.
    c                 C   s   || _ d| _dS )z8
        :param Domain domain:
        :return:
        N)ÚdomainÚversion)Úselfr   © r	   úF/var/www/html/venv/lib/python3.10/site-packages/twilio/base/version.pyÚ__init__   s   
zVersion.__init__c                 C   s   | j  |  |¡¡S )z<
        Turns a relative uri into an absolute url.
        )r   Úabsolute_urlÚrelative_uri©r   Úurir	   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_uriNFc	           
   
   C   s&   |   |¡}	| jj||	||||||dS )z'
        Make an HTTP request.
        ©ÚparamsÚdataÚheadersÚauthÚtimeoutÚallow_redirects)r   r   Úrequest)
r   Úmethodr   r   r   r   r   r   r   Úurlr	   r	   r
   r   !   s   
øzVersion.requestc              	   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`.
        Úmessagez{}: {}ÚdetailsÚcode)ÚjsonÚloadsÚtextr   ÚgetÚstatus_coder   Ú	Exception)Úclsr   r   Úresponser   Úerror_payloadr   r   r	   r	   r
   Ú	exception2   s   
ÿÿzVersion.exceptionc	           
   
   C   óJ   | j ||||||||d}	|	jdk s|	jdkr|  |||	d¡‚t |	j¡S )z,
        Fetch a resource instance.
        r   éÈ   i  zUnable to fetch record©r   r$   r)   r    r!   r"   ©
r   r   r   r   r   r   r   r   r   r'   r	   r	   r
   ÚfetchC   s   øzVersion.fetchc	           
   
   C   r*   )z-
        Update a resource instance.
        r   r+   é,  zUnable to update recordr,   r-   r	   r	   r
   ÚupdateY   ó   øzVersion.updatec	           
   
   C   sH   | j ||||||||d}	|	jdk s|	jdkr|  |||	d¡‚|	jdkS )z$
        Delete a resource.
        r   r+   r/   zUnable to delete recordéÌ   )r   r$   r)   r-   r	   r	   r
   Údeleten   s   ø
zVersion.deletec                 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 int limit: Max number of records to read.
        :param int page_size: Max page size.
        :return dict: A dictionary of paging limits.
        N)ÚlimitÚ	page_size)r   Úunset)r   r4   r5   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                 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 )a  
        Generates records one a time from a page, stopping at prescribed limits.

        :param Page page: The page to stream.
        :param int limit: The max number of records to read.
        :param int page_limit: The max number of pages to read.
        é   N)r   r6   Ú	next_page)r   r8   r4   Ú
page_limitÚcurrent_recordÚcurrent_pageÚrecordr	   r	   r
   Ústream¤   s   €€õzVersion.streamc	           
   
   C   r*   )z-
        Create a resource instance.
        r   r+   r/   zUnable to create recordr,   r-   r	   r	   r
   Úcreate¼   r1   zVersion.create)NNNNNF)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Úclassmethodr)   r.   r0   r3   r7   r8   r?   r@   r	   r	   r	   r
   r      s6    
ÿ

ÿ
ÿ
ÿ

ÿ
ÿr   )	r    Úmathr   Útwilio.baser   Útwilio.base.exceptionsr   Úobjectr   r	   r	   r	   r
   Ú<module>   s
    