o
    %h`G                     @   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&m'Z' d dlm(Z(m)Z) d d	l*m+Z+ ej,rd d
l-m.Z. ee/e	e0e1e/f f Z2e	ee3e/f Z4ee/e	e3e0e1e/ef f Z5e	ee/e	e0e1e/f f e/f Z6G dd dZ7G dd deZ8dedefddZ9G dd dZ:ddej;de0fddZ<dede0f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TimeoutSettingsasync_readfileasync_writefileis_file_payloadlocals_to_paramsobject_to_arrayto_impl)serialize_headersto_client_certificates_protocol)Tracing)
Playwrightc                   @   s~   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ed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*   K/var/www/html/myenv/lib/python3.10/site-packages/playwright/_impl/_fetch.py__init__=   s   zAPIRequest.__init__baseURLextraHTTPHeadershttpCredentialsignoreHTTPSErrorsproxy	userAgenttimeoutstorageStateclientCertificatesfailOnStatusCodemaxRedirects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d |I d H }|j| |S )Nr4   r.   r5   
newRequest)r   locals
isinstancedictjsonloadsr   decoder   r   getr   r8   r   r#   _channelsend_timeout_settingsset_default_timeout)r)   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   paramsstorage_statecontextr*   r*   r+   new_contextB   s*   
zAPIRequest.new_context)r#   r!   r$   NNNNNNNNNNNN)__name__
__module____qualname__r,   strr   r   boolr   floatr   r   r   r   r	   intrH   r*   r*   r*   r+   r"   <   sL    

	
r"   c                       s~  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										d0d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										d0d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										d0d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										d0d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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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											d1d$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											d1d(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		d2d+eejef d,ede fd-d.Z!  Z"S )3r8   parenttypeguidinitializerr$   Nc                    s4   t  |||| t|d | _d | _td | _d S )Ntracing)superr,   r   _tracing_close_reasonr   rC   )r)   rQ   rR   rS   rT   	__class__r*   r+   r,   g   s   zAPIRequestContext.__init__reasonc              
      sh   || _ z| jd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disposer[   )rX   rA   rB   r   r   rW   _reset_stack_counter)r)   r[   er*   r*   r+   r\   o   s   zAPIRequestContext.disposeurlrE   headersdataform	multipartr3   r6   r0   r7   
maxRetriesAPIResponsec                    *   | j |d||||||||	|
|dI d H S )NDELETEmethodrE   r`   ra   rb   rc   r3   r6   r0   r7   rd   fetchr)   r_   rE   r`   ra   rb   rc   r3   r6   r0   r7   rd   r*   r*   r+   deletey      zAPIRequestContext.deletec                    rf   )NHEADrh   rj   rl   r*   r*   r+   head   rn   zAPIRequestContext.headc                    rf   )NGETrh   rj   rl   r*   r*   r+   r@      rn   zAPIRequestContext.getc                    rf   )NPATCHrh   rj   rl   r*   r*   r+   patch   rn   zAPIRequestContext.patchc                    rf   )NPUTrh   rj   rl   r*   r*   r+   put   rn   zAPIRequestContext.putc                    rf   )NPOSTrh   rj   rl   r*   r*   r+   post
  rn   zAPIRequestContext.posturlOrRequestri   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)r;   rM   r   networkRequestr   _inner_fetch)r)   rx   rE   ri   r`   ra   rb   rc   r3   r6   r0   r7   rd   r_   requestr*   r*   r+   rk   '  s4   
zAPIRequestContext.fetchr|   c                    sz  | 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| j"j#|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'rq   zUnsupported 'data' type: bufferz Unexpected buffer type of 'data.')namefile)r   valuerk   )r_   rE   encodedParamsri   r`   postDatajsonDataformDatamultipartDatar6   r0   r7   rd   )%rX   r   r_   ri   r`   r   r;   rM   is_json_content_typeis_json_parsabler=   dumpsencodebytesr<   listrP   rN   r   rR   r   itemsr   r   r
   appendr   file_payload_to_jsonpost_data_bufferbase64	b64encoder?   rA   rB   rC   r3   re   )r)   r|   r_   ri   r`   ra   rE   rb   rc   r3   r6   r0   r7   rd   headers_objserialized_headers	json_data	form_datamultipart_datar   r   r   payload	post_dataresponser*   r*   r+   r{   O  s   
"








zAPIRequestContext._inner_fetchpath	indexedDBc                    s:   | j dd d|iI d H }|rt|t|I d H  |S )Nr4   r   )rA   send_return_as_dictr   r=   r   )r)   r   r   resultr*   r*   r+   rF     s   

zAPIRequestContext.storage_stater%   )
NNNNNNNNNNrI   )NN)#rJ   rK   rL   r   rM   r   r,   r\   
ParamsTyper   DataTypeFormTypeMultipartTyperO   rN   rP   rm   rp   r@   r   r   r
   rs   ru   rw   ry   rz   rk   r   r{   pathlibr   r   rF   __classcell__r*   r*   rY   r+   r8   f   sl   	

 	

 	

 	

 	

 	

 	

,	

br8   r   r$   c                 C   s$   t | d | d t| d  dS )Nr   mimeTyper~   )r   r   r~   )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 )"re   rG   rT   r$   Nc                 C   s2   |j | _ |jj| _|| _|| _t|d | _d S )Nr`   )r&   r'   r(   _request_initializerry   
RawHeaders_headers)r)   rG   rT   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=>)r_   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 )Nr_   r   r   r*   r*   r+   r_        
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   r`   r   r*   r*   r+   r`     r   zAPIResponse.headersc                 C   r   r%   )r   headers_arrayr   r*   r*   r+   r     r   zAPIResponse.headers_arrayc              
      sn   z j j fdddI d H }|d u rtdt|d W S  ty6 } z
t|r0td|d }~ww )Nc                      s    j jdd d jiS )NfetchResponseBodyfetchUid)r   rA   r   
_fetch_uidr*   r   r*   r+   <lambda>  s    z"APIResponse.body.<locals>.<lambda>TzResponse has been disposedbinary)r   r'   wrap_api_callr   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 d| jiI d H  d S )NdisposeAPIResponser   r   rA   rB   r   r   r*   r*   r+   r\     s   zAPIResponse.disposec                 C   r   )Nr   r   r   r*   r*   r+   r     r   zAPIResponse._fetch_uidc                    s    | j jdd d| jiI d H S )NfetchLogr   r   r   r*   r*   r+   
_fetch_log  s   
zAPIResponse._fetch_log)r$   N)rJ   rK   rL   r8   r   r,   rM   r   propertyrN   r   r_   rP   r   r   r   r`   ry   HeadersArrayr   r   r   r   r   r=   r\   r   r   r   r*   r*   r*   r+   re     s,    
	re   r`   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)r`   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)r;   rM   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_networkry    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   r   playwright._impl._tracingr    TYPE_CHECKINGplaywright._impl._playwrightr!   rM   rN   rO   r   r   r   r   r   r"   r8   r   re   r   r   r   r*   r*   r*   r+   <module>   s6    (
0*  XV	