a
    ҏi?                     @   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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)rd d
l*m+Z+ ee,e	e-e.e,f f Z/e	ee0e,f Z1ee,e	e0e-e.e,ef f Z2ee,e	e-e.e,f f Z3G dd dZ4G dd deZ5eedddZ6G dd dZ7dej8e-dddZ9ee-dddZ:dS )    N)Path)AnyDictListOptionalUnioncast)FilePayload	FormFieldHeadersHttpCredentialsProxySettingsServerFilePayloadStorageState)ChannelOwnerfilter_none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                   @   sN   e Zd ZdddddZd
eeeef eeeee	e
eeef dd	dd	ZdS )
APIRequestr   N)
playwrightreturnc                 C   s   || _ |j| _|jj| _d S N)r    _loop_connection_dispatcher_fiber)selfr     r'   G/home/Claro/venv/lib/python3.9/site-packages/playwright/_impl/_fetch.py__init__:   s    zAPIRequest.__init__APIRequestContext)	baseURLextraHTTPHeadershttpCredentialsignoreHTTPSErrorsproxy	userAgenttimeoutstorageStater!   c	                    s   t t }	d|	v rD|	d }
t|
tsD|
rDtt|
I d H  |	d< d|	v r\t|	d |	d< t	t
t| jjd|	I d H }|S )Nr2   r,   Z
newRequest)r   locals
isinstancedictjsonloadsr   decoder   r   r*   r   r    _channelsend)r&   r+   r,   r-   r.   r/   r0   r1   r2   paramsstorage_statecontextr'   r'   r(   new_context?   s    
zAPIRequest.new_context)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eeeedd fddZddddZdeee	e
eeeeeedd	d
dZd eee	e
eeeeeedd	ddZd!eee	e
eeeeeedd	ddZd"eee	e
eeeeeeeeef f eeeedd	ddZd#eee	e
eeeeeeeeef f eeeedd	ddZd$eee	e
eeeeeeeeef f eeeedd	ddZd%eeejf eee	e
eeeeeeeeef f eeeeddddZd&eej ee ee	e
eeeeeeeeeef f eeeeddddZd'eejef e dddZ!  Z"S )(r*   N)parenttypeguidinitializerr!   c                    s$   t  |||| t|d | _d S )Ntracing)superr)   r   Z_tracing)r&   rE   rF   rG   rH   	__class__r'   r(   r)   [   s    zAPIRequestContext.__init__r!   c                    s   | j dI d H  d S )Ndispose)r9   r:   r&   r'   r'   r(   rN   a   s    zAPIRequestContext.disposeAPIResponse)urlr;   headersdataform	multipartr1   failOnStatusCoder.   maxRedirectsr!   c                    s&   | j |d||||||||	|
dI d H S )NDELETE
methodr;   rR   rS   rT   rU   r1   rV   r.   rW   fetchr&   rQ   r;   rR   rS   rT   rU   r1   rV   r.   rW   r'   r'   r(   deleted   s    zAPIRequestContext.deletec                    s&   | j |d||||||||	|
dI d H S )NHEADrY   r[   r]   r'   r'   r(   head   s    zAPIRequestContext.headc                    s&   | j |d||||||||	|
dI d H S )NGETrY   r[   r]   r'   r'   r(   get   s    zAPIRequestContext.getc                    s&   | j |d||||||||	|
dI d H S )NPATCHrY   r[   r]   r'   r'   r(   patch   s    zAPIRequestContext.patchc                    s&   | j |d||||||||	|
dI d H S )NPUTrY   r[   r]   r'   r'   r(   put   s    zAPIRequestContext.putc                    s&   | j |d||||||||	|
dI d H S )NPOSTrY   r[   r]   r'   r'   r(   post   s    zAPIRequestContext.post)urlOrRequestr;   rZ   rR   rS   rT   rU   r1   rV   r.   rW   r!   c                    sr   t |tr|nd }t t|tjr2ttjt|nd }|sLt |tsLJ d| ||||||||||	|
|I d H S )Nz3First argument must be either URL string or Request)r4   rB   r   networkRequestr   _inner_fetch)r&   ri   r;   rZ   rR   rS   rT   rU   r1   rV   r.   rW   rQ   requestr'   r'   r(   r\     s0    zAPIRequestContext.fetch)rm   rQ   rZ   rR   rS   r;   rT   rU   r1   rV   r.   rW   r!   c                    sD  |rdnd|rdnd |rdnd dks0J d|d u sH|dksHJ d|pX|rV|j n|}|pj|rh|jnd}|p||rz|jnd }|rt|nd }d }d }d }d }|rt|trt|rt|r|nt	|}n|
 }nBt|tr|}n2t|ttttfrt	|}ntdt| n|r,t|}n|rg }| D ]t\}}t|rtt|}t|d tszJ d| d	|t|t|d
 nt|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||||||||	|
||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'ra   zUnsupported 'data' type: bufferz Unexpected buffer type of 'data.')namefile)rq   valuer\   )rQ   r;   rZ   rR   ZpostDataZjsonDataZformDataZmultipartDatar1   rV   r.   rW   )"rQ   rZ   rR   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:   r   rP   )r&   rm   rQ   rZ   rR   rS   r;   rT   rU   r1   rV   r.   rW   Zheaders_objZserialized_headersZ	json_dataZ	form_dataZmultipart_datar~   rq   rs   payloadZ	post_dataresponser'   r'   r(   rl   ,  s    "







zAPIRequestContext._inner_fetch)pathr!   c                    s0   | j dI d H }|r,t|t|I d H  |S )Nr2   )r9   send_return_as_dictr   r6   rv   )r&   r   resultr'   r'   r(   r<     s    zAPIRequestContext.storage_state)	NNNNNNNNN)	NNNNNNNNN)	NNNNNNNNN)	NNNNNNNNN)	NNNNNNNNN)	NNNNNNNNN)
NNNNNNNNNN)
NNNNNNNNNN)N)#r?   r@   rA   r   rB   r   r)   rN   
ParamsTyper   DataTypeFormTypeMultipartTyperD   rC   rz   r^   r`   rb   r   rx   r	   rd   rf   rh   rj   rk   r\   r   rl   pathlibr   r   r<   __classcell__r'   r'   rK   r(   r*   Z   s|                                                                  *          [ r*   )r   r!   c                 C   s$   t | d | d t| d  dS )Nrq   mimeTypero   )rq   r   ro   )r   r   r   r8   )r   r'   r'   r(   r}     s
    r}   c                   @   s   e Zd ZeeddddZedddZee	ddd	Z
eedd
dZeedddZeedddZeedddZeejdddZedddZedddZedddZddddZeedddZee dddZdS ) rP   N)r=   rH   r!   c                 C   s2   |j | _ |jj| _|| _|| _t|d | _d S )NrR   )r#   r$   r%   _request_initializerrj   Z
RawHeaders_headers)r&   r=   rH   r'   r'   r(   r)     s
    
zAPIResponse.__init__rM   c                 C   s   d| j d| jd| jdS )Nz<APIResponse url=z status=z status_text=>)rQ   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   s
   | j d S )NrQ   r   rO   r'   r'   r(   rQ     s    zAPIResponse.urlc                 C   s
   | j d S )Nr   r   rO   r'   r'   r(   r     s    zAPIResponse.statusc                 C   s
   | j d S )NZ
statusTextr   rO   r'   r'   r(   r     s    zAPIResponse.status_textc                 C   s
   | j  S r"   )r   rR   rO   r'   r'   r(   rR     s    zAPIResponse.headersc                 C   s
   | j  S r"   )r   headers_arrayrO   r'   r'   r(   r     s    zAPIResponse.headers_arrayc              
      sz   z<| j jdd| jiI d H }|d u r.tdt|d W S  tyt } z t|r\td|W Y d }~n
d }~0 0 d S )NZ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 )NZdisposeAPIResponser   r   r9   r:   r   rO   r'   r'   r(   rN     s
    zAPIResponse.disposec                 C   s
   | j d S )Nr   r   rO   r'   r'   r(   r     s    zAPIResponse._fetch_uidc                    s   | j jdd| jiI d H S )NZfetchLogr   r   rO   r'   r'   r(   
_fetch_log  s
    zAPIResponse._fetch_log)r?   r@   rA   r*   r   r)   rB   r   propertyrC   r   rQ   rz   r   r   r   rR   rj   HeadersArrayr   rx   r   r   r   r6   rN   r   r   r   r'   r'   r'   r(   rP     s*   rP   )rR   r!   c                 C   s4   | sdS | D ]"}|d dkr|d  d  S qdS )NFrq   zContent-Typers   zapplication/json)
startswith)rR   headerr'   r'   r(   rt     s    rt   )rs   r!   c                 C   s:   t | tsdS zt|  W dS  tjy4   Y dS 0 d S )NFT)r4   rB   r6   r7   JSONDecodeError)rs   r'   r'   r(   ru     s    

ru   )N);r   r6   r   typingr   r   r   r   r   r   r   Zplaywright._impl._network_implZ_networkrj   Z playwright._impl._api_structuresr	   r
   r   r   r   r   r   Zplaywright._impl._connectionr   r   r   Zplaywright._impl._errorsr   Zplaywright._impl._helperr   r   r   r   r   r   r   r   r   Zplaywright._impl._tracingr   TYPE_CHECKINGZplaywright._impl._playwrightr   rB   rC   rD   r   rx   r   r   r   r   r*   r}   rP   r   rt   ru   r'   r'   r'   r(   <module>   s4    $	(
!  7P	