o
    Qh?                     @   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 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$ d dlm%Z% d d	l&m'Z' ej(rxd d
l)m*Z* ee+e	e,e-e+f f Z.e	ee/e+f Z0ee+e	e/e,e-e+ef f Z1ee+e	e,e-e+f f Z2G dd dZ3G dd deZ4dedefddZ5G dd dZ6ddej7de,fddZ8dede,fddZ9dS )    N)Path)AnyDictListOptionalUnioncast)FilePayload	FormFieldHeadersHttpCredentialsProxySettingsServerFilePayloadStorageState)ChannelOwnerfrom_channel)is_target_closed_error)Error	NameValueasync_readfileasync_writefileis_file_payloadlocals_to_paramsobject_to_arrayto_impl)serialize_headers)Tracing)
Playwrightc                   @   sh   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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&   T/home/air/yokohama/back/venv/lib/python3.10/site-packages/playwright/_impl/_fetch.py__init__:   s   zAPIRequest.__init__baseURLextraHTTPHeadershttpCredentialsignoreHTTPSErrorsproxy	userAgenttimeoutstorageState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	t
t| jjd|	I d H }|S )Nr0   r*   
newRequest)r   locals
isinstancedictjsonloadsr   decoder   r   r1   r   r   _channelsend)r%   r)   r*   r+   r,   r-   r.   r/   r0   paramsstorage_statecontextr&   r&   r'   new_context?   s   
zAPIRequest.new_context)r   r   r    N)NNNNNNNN)__name__
__module____qualname__r(   strr   r   boolr   floatr   r   r   r>   r&   r&   r&   r'   r   9   s:    

	
r   c                       s>  e Zd Zdededededdf
 fddZd,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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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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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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dfd d!Z										d.d"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dfd$d%Z										d.d&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dfd'd(Z	d/d)eejef de fd*d+Z!  Z"S )0r1   parenttypeguidinitializerr    Nc                    s$   t  |||| t|d | _d S )Ntracing)superr(   r   _tracing)r%   rE   rF   rG   rH   	__class__r&   r'   r(   [   s   zAPIRequestContext.__init__c                    s   | j dI d H  d S )Ndispose)r9   r:   r%   r&   r&   r'   rN   a   s   zAPIRequestContext.disposeurlr;   headersdataform	multipartr/   failOnStatusCoder,   maxRedirectsAPIResponsec                    (   | j |d||||||||	|
dI d H S )NDELETE
methodr;   rQ   rR   rS   rT   r/   rU   r,   rV   fetchr%   rP   r;   rQ   rR   rS   rT   r/   rU   r,   rV   r&   r&   r'   deleted      zAPIRequestContext.deletec                    rX   )NHEADrZ   r\   r^   r&   r&   r'   head   r`   zAPIRequestContext.headc                    rX   )NGETrZ   r\   r^   r&   r&   r'   get   r`   zAPIRequestContext.getc                    rX   )NPATCHrZ   r\   r^   r&   r&   r'   patch   r`   zAPIRequestContext.patchc                    rX   )NPUTrZ   r\   r^   r&   r&   r'   put   r`   zAPIRequestContext.putc                    rX   )NPOSTrZ   r\   r^   r&   r&   r'   post   r`   zAPIRequestContext.posturlOrRequestr[   c                    st   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)r4   rB   r   networkRequestr   _inner_fetch)r%   rk   r;   r[   rQ   rR   rS   rT   r/   rU   r,   rV   rP   requestr&   r&   r'   r]     s2   
zAPIRequestContext.fetchro   c                    s$  |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|p-|r,|j n|}|p6|r5|jnd}|p?|r>|jnd }|rFt|nd }d }d }d }d }|rt|trlt|rgt|ra|nt	|}nk|
 }nft|trt|}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 }|rt| nd }| jd|t||||||||	|
||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'rc   zUnsupported 'data' type: bufferz Unexpected buffer type of 'data.')namefile)rs   valuer]   )rP   r;   r[   rQ   postDatajsonDataformDatamultipartDatar/   rU   r,   rV   )!rP   r[   rQ   r   r4   rB   is_json_content_typeis_json_parsabler6   dumpsencodebytesr5   listintrC   r   rF   r   itemsr   r   r	   appendr
   file_payload_to_jsonpost_data_bufferbase64	b64encoder8   r9   r:   rW   )r%   ro   rP   r[   rQ   rR   r;   rS   rT   r/   rU   r,   rV   headers_objserialized_headers	json_data	form_datamultipart_datar   rs   ru   payload	post_dataresponser&   r&   r'   rn   ,  s   "








zAPIRequestContext._inner_fetchpathc                    s2   | j dI d H }|rt|t|I d H  |S )Nr0   )r9   send_return_as_dictr   r6   r|   )r%   r   resultr&   r&   r'   r<     s
   zAPIRequestContext.storage_stater    N)	NNNNNNNNN)
NNNNNNNNNNr!   )#r?   r@   rA   r   rB   r   r(   rN   
ParamsTyper   DataTypeFormTypeMultipartTyperD   rC   r   r_   rb   rd   r   r~   r	   rf   rh   rj   rl   rm   r]   r   rn   pathlibr   r   r<   __classcell__r&   r&   rL   r'   r1   Z   s6   
	

	

	

	

	

	

	

*	

Yr1   r   r    c                 C   s$   t | d | d t| d  dS )Nrs   mimeTyperq   )rs   r   rq   )r   r   r   r8   )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 )"rW   r=   rH   r    Nc                 C   s2   |j | _ |jj| _|| _|| _t|d | _d S )NrQ   )r"   r#   r$   _request_initializerrl   
RawHeaders_headers)r%   r=   rH   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=>)rP   statusstatus_textrO   r&   r&   r'   __repr__  s   zAPIResponse.__repr__c                 C   s   | j dko	| j dkS )N   i+  )r   rO   r&   r&   r'   ok  s   zAPIResponse.okc                 C   
   | j d S )NrP   r   rO   r&   r&   r'   rP        
zAPIResponse.urlc                 C   r   )Nr   r   rO   r&   r&   r'   r     r   zAPIResponse.statusc                 C   r   )N
statusTextr   rO   r&   r&   r'   r     r   zAPIResponse.status_textc                 C   
   | j  S r!   )r   rQ   rO   r&   r&   r'   rQ     r   zAPIResponse.headersc                 C   r   r!   )r   headers_arrayrO   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   r9   r   
_fetch_uidr   r   	b64decoder   )r%   r   excr&   r&   r'   body  s    
zAPIResponse.bodyc                    s   |   I d H }| S r!   )r   r8   r%   contentr&   r&   r'   text  s   zAPIResponse.textc                    s   |   I d H }t|S r!   )r   r6   r7   r   r&   r&   r'   r6     s   
zAPIResponse.jsonc                    s"   | j jdd| jiI d H  d S )NdisposeAPIResponser   r   r9   r:   r   rO   r&   r&   r'   rN     s   zAPIResponse.disposec                 C   r   )Nr   r   rO   r&   r&   r'   r     r   zAPIResponse._fetch_uidc                    s   | j jdd| jiI d H S )NfetchLogr   r   rO   r&   r&   r'   
_fetch_log  s   
zAPIResponse._fetch_logr   )r?   r@   rA   r1   r   r(   rB   r   propertyrC   r   rP   r   r   r   r   rQ   rl   HeadersArrayr   r~   r   r   r   r6   rN   r   r   r   r&   r&   r&   r'   rW     s,    
rW   rQ   c                 C   s4   | sdS | D ]}|d dkr|d  d  S qdS )NFrs   zContent-Typeru   zapplication/json)
startswith)rQ   headerr&   r&   r'   rz     s   rz   ru   c                 C   s6   t | tsdS zt|  W dS  tjy   Y dS w )NFT)r4   rB   r6   r7   JSONDecodeError)ru   r&   r&   r'   r{     s   

r{   r!   ):r   r6   r   typingr   r   r   r   r   r   r   playwright._impl._network_impl_networkrl    playwright._impl._api_structuresr	   r
   r   r   r   r   r   playwright._impl._connectionr   r   playwright._impl._errorsr   playwright._impl._helperr   r   r   r   r   r   r   r   r   playwright._impl._tracingr   TYPE_CHECKINGplaywright._impl._playwrightr   rB   rC   rD   r   r~   r   r   r   r   r1   r   rW   r   rz   r{   r&   r&   r&   r'   <module>   s6    $	(
!  5P	