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)rôd 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 }|rŠt|ƒnd }d }d }d }d }|�rt|tƒrØt|ƒrÎt|ƒrÂ|nt 	|¡}n| 
¡ }nBt|tƒrè|}n2t|ttttfƒ�rt 	|¡}ntdt|ƒ› �ƒ‚n˜|�r,t|ƒ}nˆ|�r´g }| ¡ D ]t\}}t|ƒ�r’t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	