
    =h=                     N    d dl Z d dlmZmZmZ d dlmZ d dlmZ  G d de	      Z
y)    N)AnyDictOptionalTwilioException)Responsec                      e Zd ZdZh dZi fdefdZd Zd Zd Z	e
dedefd	       Zd
eeef   fdZedee   fd       Zedee   fd       Zd
eeef   defdZded    fdZded    fdZded    fdZded    fdZdefdZy)Pagez
    Represents a page of records in a collection.

    A `Page` lets you iterate over its records and fetch the next and previous
    pages in the collection.
    >   enduripagestarttotal	num_pages	page_sizelast_page_urinext_page_urifirst_page_uriprevious_page_uriresponsec                     | j                  |      }|| _        || _        || _        t	        | j                  |            | _        y N)process_response_version_payload	_solutioniter	load_page_records)selfversionr   solutionpayloads        `/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/twilio/base/page.py__init__zPage.__init__   s<    ''1!T^^G45    c                     | S )z/
        A `Page` is a valid iterator.
         r    s    r$   __iter__zPage.__iter__&   s	     r&   c                 "    | j                         S r   )nextr)   s    r$   __next__zPage.__next__,   s    yy{r&   c                 J    | j                  t        | j                              S )z8
        Returns the next record in the `Page`.
        )get_instancer,   r   r)   s    r$   r,   z	Page.next/   s       dmm!455r&   returnc                 v    |j                   dk7  rt        d|      t        j                  |j                        S )z}
        Load a JSON response.

        :param response: The HTTP response.
        :return The JSON-loaded content.
           zUnable to fetch page)status_coder   jsonloadstext)clsr   s     r$   r   zPage.process_response5   s3     3&!"8(CCzz(--((r&   r#   c                     d|v rd|d   v r||d   d      S t        |j                               }|| j                  z
  }t        |      dk(  r||j	                            S t        d      )z
        Parses the collection of records out of a list payload.

        :param payload: The JSON-loaded content.
        :return list: The list of records.
        metakey   z$Page Records can not be deserialized)setkeys	META_KEYSlenpopr   )r    r#   r=   r:   s       r$   r   zPage.load_pageB   sq     W'&/!976?5122w||~&D'C3x1}swwy))DEEr&   c                    d| j                   v r#d| j                   d   v r| j                   d   d   S d| j                   v rA| j                   d   r2| j                  j                  j                  | j                   d         S y)z`
        :return str: Returns a link to the previous_page_url or None if doesn't exist.
        r9   previous_page_urlr   Nr   r   domainabsolute_urlr)   s    r$   rB   zPage.previous_page_urlS   sv    
 T]]"':dmmF>S'S==()<==4==0T]]CV5W==''44T]]CV5WXXr&   c                    d| j                   v r#d| j                   d   v r| j                   d   d   S d| j                   v rA| j                   d   r2| j                  j                  j                  | j                   d         S y)z\
        :return str: Returns a link to the next_page_url or None if doesn't exist.
        r9   next_page_urlr   NrC   r)   s    r$   rG   zPage.next_page_urla   sr    
 T]]"$--:O'O==(99-$--2P==''44T]]?5STTr&   c                     t        d      )z
        :param dict payload: A JSON-loaded representation of an instance record.
        :return: A rich, resource-dependent object.
        z<Page.get_instance() must be implemented in the derived classr   )r    r#   s     r$   r/   zPage.get_instancem   s    
 J
 	
r&   c                     | j                   sy| j                  j                  j                  j	                  d| j                         }t        |       } || j                  || j                        S )zR
        Return the `Page` after this one.
        :return The next page.
        NGET)rG   r   rD   twiliorequesttyper   r    r   r7   s      r$   	next_pagezPage.next_pagev   sX    
 !!==''..66ud>P>PQ4j4==(DNN;;r&   c                    K   | j                   sy| j                  j                  j                  j	                  d| j                          d{   }t        |       } || j                  || j                        S 7 -w)za
        Asynchronously return the `Page` after this one.
        :return The next page.
        NrJ   )rG   r   rD   rK   request_asyncrM   r   rN   s      r$   next_page_asynczPage.next_page_async   sk     
 !!--44BB4%%
 
 4j4==(DNN;;	
   AA=A;.A=c                     | j                   sy| j                  j                  j                  j	                  d| j                         }t        |       } || j                  || j                        S )zW
        Return the `Page` before this one.
        :return The previous page.
        NrJ   )rB   r   rD   rK   rL   rM   r   rN   s      r$   previous_pagezPage.previous_page   sX    
 %%==''..66ud>T>TU4j4==(DNN;;r&   c                    K   | j                   sy| j                  j                  j                  j	                  d| j                          d{   }t        |       } || j                  || j                        S 7 -w)zf
        Asynchronously return the `Page` before this one.
        :return The previous page.
        NrJ   )rB   r   rD   rK   rQ   rM   r   rN   s      r$   previous_page_asynczPage.previous_page_async   sk     
 %%--44BB4))
 
 4j4==(DNN;;	
rS   c                      y)Nz<Page>r(   r)   s    r$   __repr__zPage.__repr__   s    r&   N)__name__
__module____qualname____doc__r>   r   r%   r*   r-   r,   classmethodr   r   r   strr   propertyr   rB   rG   r/   rO   rR   rU   rW   rY   r(   r&   r$   r
   r
      s   I >@ 6( 66 
) 
)S 
) 
)Fc3h F" 8C=   	x} 	 	
DcN 
s 

<8F+ 
<<x'7 <
<x/ 
<<8F+; <# r&   r
   )r4   typingr   r   r   twilio.base.exceptionsr   twilio.http.responser   objectr
   r(   r&   r$   <module>re      s"     & & 2 )c6 cr&   