o
    �¨Êh-  ã                   @   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	   úE/var/www/html/env/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   sn   z#t  |j¡}d|v rd ||d ¡}| d|j¡}t|j||||ƒW S  ty6   t|j|||j|ƒ Y S w )zK
        Wraps an exceptional response in a `TwilioRestException`.
        Úmessagez{}: {}Úcode)ÚjsonÚloadsÚtextr   ÚgetÚstatus_coder   Ú	Exception)Úclsr   r   Úresponser   Úerror_payloadr   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   éÈ   é,  zUnable to fetch record©r   r#   r(   r   r    r!   ©
r   r   r   r   r   r   r   r   r   r&   r	   r	   r
   ÚfetchA   ó   øzVersion.fetchc	           
   
   C   r)   )z-
        Update a resource instance.
        r   r*   r+   zUnable to update recordr,   r-   r	   r	   r
   ÚupdateV   r/   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
   Údeletek   s   ø
zVersion.deletec                 C   sF   t j}|dur|du r|}tt|t|ƒ ƒƒ}|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Ú
page_limit)r   ÚunsetÚintr   Úfloat)r   r3   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|r0|t jur0||k r0dS | ¡ }|d7 }|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_imit: The max number of pages to read.
        é   N)r   r6   Ú	next_page)r   r:   r3   r5   Ú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À   r/   zVersion.create)NNNNNF)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Úclassmethodr(   r.   r0   r2   r9   r:   r@   rA   r	   r	   r	   r
   r      s6    
ÿ

ÿ
ÿ
ÿ

ÿ
ÿr   )	r   Úmathr   Útwilio.baser   Útwilio.base.exceptionsr   Úobjectr   r	   r	   r	   r
   Ú<module>   s
    