o
    $[iCE                     @   s  d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlm  mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dlm'Z'm(Z( d d	l)m*Z* ej+r~d d
l,m-Z- ee.e	e/e0e.f f Z1e	ee2e.f Z3ee.e	e2e/e0e.ef f Z4e	ee.e	e/e0e.f f e.f Z5G dd dZ6G dd deZ7dedefddZ8G dd dZ9ddej:de/fddZ;dede/fddZ<dS )    N)Path)AnyDictListOptionalUnioncast)ClientCertificateFilePayload	FormFieldHeadersHttpCredentialsProxySettingsServerFilePayloadStorageState)ChannelOwnerfrom_channel)is_target_closed_error)	Error	NameValueTargetClosedErrorasync_readfileasync_writefileis_file_payloadlocals_to_paramsobject_to_arrayto_impl)serialize_headersto_client_certificates_protocol)Tracing)
Playwrightc                   @   sr   e Zd ZdddZ									ddedeeef d	ed
ededede	de
eeef dee ddfddZdS )
APIRequest
playwrightr    returnNc                 C   s   || _ |j| _|jj| _d S N)r"   _loop_connection_dispatcher_fiber)selfr"    r)   W/var/www/html/flask_server/venv/lib/python3.10/site-packages/playwright/_impl/_fetch.py__init__<   s   zAPIRequest.__init__baseURLextraHTTPHeadershttpCredentialsignoreHTTPSErrorsproxy	userAgenttimeoutstorageStateclientCertificatesAPIRequestContextc
                    s   t t }
d|
v r#|
d }t|ts#|r#tt|I d H  |
d< d|
v r/t|
d |
d< t	|

dI d H |
d< ttt| jjd|
I d H }|S )Nr3   r-   r4   
newRequest)r   locals
isinstancedictjsonloadsr   decoder   r   getr   r5   r   r"   _channelsend)r(   r,   r-   r.   r/   r0   r1   r2   r3   r4   paramsstorage_statecontextr)   r)   r*   new_contextA   s$   
zAPIRequest.new_context)r"   r    r#   N)	NNNNNNNNN)__name__
__module____qualname__r+   strr   r   boolr   floatr   r   r   r   r	   rC   r)   r)   r)   r*   r!   ;   s@    

	
r!   c                       sx  e Zd Zdededededdf
 fddZd.d	eddfd
dZ										d/dedede	de
dedededededededdfddZ										d/dedede	de
dedededededededdfddZ										d/dedede	de
dedededededededdfddZ										d/dedede	de
dedeeeeeeeef f dedededededdfddZ										d/dedede	de
dedeeeeeeeef f dedededededdfd d!Z										d/dedede	de
dedeeeeeeeef f dedededededdfd"d#Z											d0d$eeejf ded%ede	de
dedeeeeeeeef f dedededededdfd&d'Z											d0d(eej dee d%ede	de
dededeeeeeeeef f dedededededdfd)d*Z	d.d+eejef de fd,d-Z!  Z"S )1r5   parenttypeguidinitializerr#   Nc                    s*   t  |||| t|d | _d | _d S )Ntracing)superr+   r   _tracing_close_reason)r(   rJ   rK   rL   rM   	__class__r)   r*   r+   a   s   
zAPIRequestContext.__init__reasonc              
      sf   || _ z| jdd|iI d H  W n ty+ } zt|r%W Y d }~d S |d }~ww | j  d S )NdisposerT   )rQ   r>   r?   r   r   rP   _reset_stack_counter)r(   rT   er)   r)   r*   rU   h   s   zAPIRequestContext.disposeurlr@   headersdataform	multipartr2   failOnStatusCoder/   maxRedirects
maxRetriesAPIResponsec                    *   | j |d||||||||	|
|dI d H S )NDELETEmethodr@   rY   rZ   r[   r\   r2   r]   r/   r^   r_   fetchr(   rX   r@   rY   rZ   r[   r\   r2   r]   r/   r^   r_   r)   r)   r*   deleter      zAPIRequestContext.deletec                    ra   )NHEADrc   re   rg   r)   r)   r*   head   ri   zAPIRequestContext.headc                    ra   )NGETrc   re   rg   r)   r)   r*   r=      ri   zAPIRequestContext.getc                    ra   )NPATCHrc   re   rg   r)   r)   r*   patch   ri   zAPIRequestContext.patchc                    ra   )NPUTrc   re   rg   r)   r)   r*   put   ri   zAPIRequestContext.putc                    ra   )NPOSTrc   re   rg   r)   r)   r*   post  ri   zAPIRequestContext.posturlOrRequestrd   c                    sv   t |tr|nd }t t|tjrttjt|nd }|s't |ts'J d| ||||||||||	|
||I d H S )Nz3First argument must be either URL string or Request)r8   rG   r   networkRequestr   _inner_fetch)r(   rs   r@   rd   rY   rZ   r[   r\   r2   r]   r/   r^   r_   rX   requestr)   r)   r*   rf      s4   
zAPIRequestContext.fetchrw   c                    sv  | j r	t| j |rdnd|rdnd |rdnd dks!J d|d u s-|dks-J d|d u s9|dks9J d|pA|r@|jn|}|pJ|rI|jnd}|pS|rR|jnd }|rZt|nd }d }d }d }d }|d urt|trt|r}t	|rw|nt
|}nk| }nft|tr|}n^t|ttttfrt
|}nOtdt| |rt|}n?|rg }| D ]6\}}t|rtt|}t|d tsJ d	| d
|t|t|d qt|tr|t||d q|d u r|d u r|d u r|d u r|r|jnd }|r	t| nd }| j !d|t|trt|nd t|tr#|nd |||||||	|
|||dI d H }t"| |S )N   r   z:Only one of 'data', 'form' or 'multipart' can be specifiedz4'max_redirects' must be greater than or equal to '0'z2'max_retries' must be greater than or equal to '0'rl   zUnsupported 'data' type: bufferz Unexpected buffer type of 'data.')namefile)r{   valuerf   )rX   r@   encodedParamsrd   rY   postDatajsonDataformDatamultipartDatar2   r]   r/   r^   r_   )#rQ   r   rX   rd   rY   r   r8   rG   is_json_content_typeis_json_parsabler:   dumpsencodebytesr9   listintrH   r   rK   r   itemsr   r   r
   appendr   file_payload_to_jsonpost_data_bufferbase64	b64encoder<   r>   r?   r`   )r(   rw   rX   rd   rY   rZ   r@   r[   r\   r2   r]   r/   r^   r_   headers_objserialized_headers	json_data	form_datamultipart_datar   r{   r}   payload	post_dataresponser)   r)   r*   rv   H  s   
"








zAPIRequestContext._inner_fetchpathc                    s2   | j dI d H }|rt|t|I d H  |S )Nr3   )r>   send_return_as_dictr   r:   r   )r(   r   resultr)   r)   r*   rA     s
   zAPIRequestContext.storage_stater$   )
NNNNNNNNNN)NNNNNNNNNNN)#rD   rE   rF   r   rG   r   r+   rU   
ParamsTyper   DataTypeFormTypeMultipartTyperI   rH   r   rh   rk   r=   r   r   r
   rn   rp   rr   rt   ru   rf   r   rv   pathlibr   r   rA   __classcell__r)   r)   rR   r*   r5   `   sf   	

 	

 	

 	

 	

 	

 	

,	

ar5   r   r#   c                 C   s$   t | d | d t| d  dS )Nr{   mimeTypery   )r{   r   ry   )r   r   r   r<   )r   r)   r)   r*   r     s
   r   c                   @   s   e Zd ZdededdfddZdefddZede	fd	d
Z
edefddZedefddZedefddZedefddZedejfddZdefddZdefddZdefddZd!ddZedefddZdee fdd ZdS )"r`   rB   rM   r#   Nc                 C   s2   |j | _ |jj| _|| _|| _t|d | _d S )NrY   )r%   r&   r'   _request_initializerrt   
RawHeaders_headers)r(   rB   rM   r)   r)   r*   r+     s
   
zAPIResponse.__init__c                 C   s   d| j d| jd| jdS )Nz<APIResponse url=z status=z status_text=>)rX   statusstatus_textr(   r)   r)   r*   __repr__  s   zAPIResponse.__repr__c                 C   s   | j dko	| j dkS )N   i+  )r   r   r)   r)   r*   ok  s   zAPIResponse.okc                 C   
   | j d S )NrX   r   r   r)   r)   r*   rX        
zAPIResponse.urlc                 C   r   )Nr   r   r   r)   r)   r*   r     r   zAPIResponse.statusc                 C   r   )N
statusTextr   r   r)   r)   r*   r     r   zAPIResponse.status_textc                 C   
   | j  S r$   )r   rY   r   r)   r)   r*   rY     r   zAPIResponse.headersc                 C   r   r$   )r   headers_arrayr   r)   r)   r*   r     r   zAPIResponse.headers_arrayc              
      sl   z| j jdd| jiI d H }|d u rtdt|d W S  ty5 } z
t|r/td|d }~ww )NfetchResponseBodyfetchUidzResponse has been disposedbinary)r   r>   r   
_fetch_uidr   r   	b64decoder   )r(   r   excr)   r)   r*   body  s    
zAPIResponse.bodyc                    s   |   I d H }| S r$   )r   r<   r(   contentr)   r)   r*   text  s   zAPIResponse.textc                    s   |   I d H }t|S r$   )r   r:   r;   r   r)   r)   r*   r:     s   
zAPIResponse.jsonc                    s"   | j jdd| jiI d H  d S )NdisposeAPIResponser   r   r>   r?   r   r   r)   r)   r*   rU     s   zAPIResponse.disposec                 C   r   )Nr   r   r   r)   r)   r*   r     r   zAPIResponse._fetch_uidc                    s   | j jdd| jiI d H S )NfetchLogr   r   r   r)   r)   r*   
_fetch_log   s   
zAPIResponse._fetch_log)r#   N)rD   rE   rF   r5   r   r+   rG   r   propertyrH   r   rX   r   r   r   r   rY   rt   HeadersArrayr   r   r   r   r   r:   rU   r   r   r   r)   r)   r)   r*   r`     s,    
r`   rY   c                 C   s4   | sdS | D ]}|d dkr|d  d  S qdS )NFr{   zContent-Typer}   zapplication/json)
startswith)rY   headerr)   r)   r*   r   	  s   r   r}   c                 C   s6   t | tsdS zt|  W dS  tjy   Y dS w )NFT)r8   rG   r:   r;   JSONDecodeError)r}   r)   r)   r*   r     s   

r   r$   )=r   r:   r   typingr   r   r   r   r   r   r   playwright._impl._network_impl_networkrt    playwright._impl._api_structuresr	   r
   r   r   r   r   r   r   playwright._impl._connectionr   r   playwright._impl._errorsr   playwright._impl._helperr   r   r   r   r   r   r   r   r   r   r   playwright._impl._tracingr   TYPE_CHECKINGplaywright._impl._playwrightr    rG   rH   rI   r   r   r   r   r   r!   r5   r   r`   r   r   r   r)   r)   r)   r*   <module>   s6    (
,%  SP	