o
    LDiƉ                     @   sP  d dl Z d dlZd dlZ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
 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 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) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 erd dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< G dd deddZ=G dd dZ>dee?e?f defddZ@deee  deeee?e?f   fddZAG dd  d e#ZBG d!d" d"e#ZCd#e jDd$eddfd%d&ZEG d'd( d(ZFG d)d* d*e#ZGG d+d, d,ZHG d-d. d.e#ZIG d/d0 d0e#ZJG d1d2 d2ZKdS )3    N)defaultdict)Path)SimpleNamespace)
TYPE_CHECKINGAnyCallable	CoroutineDictListOptional	TypedDictUnioncast)parse)ClientCertificateHeadersHeadersArray
RemoteAddrRequestSizesResourceTimingSecurityDetails)ChannelOwnerfrom_channelfrom_nullable_channel)Error)EventContextManagerImpl)URLMatchWebSocketRouteHandlerCallbackasync_readfilelocals_to_paramsurl_matches)escape_regex_flags)Waiter)BrowserContextAPIResponse)Frame)PageWorkerc                   @   sN   e Zd ZU ee ed< ee ed< eeeef  ed< eeeef  ed< dS )FallbackOverrideParametersurlmethodheaderspostDataN)	__name__
__module____qualname__r   str__annotations__r	   r   bytes r4   r4   e/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/playwright/_impl/_network.pyr)   H   s
   
 r)   F)totalc                   @   s   e Zd ZdddZdS )SerializedFallbackOverridesreturnNc                 C   s   d | _ d | _d | _d | _d S N)r*   r+   r,   post_data_bufferselfr4   r4   r5   __init__P   s   
z$SerializedFallbackOverrides.__init__r8   N)r.   r/   r0   r=   r4   r4   r4   r5   r7   O   s    r7   r,   r8   c                 C   s   dd |   D S )Nc                 S   s"   g | ]\}}|d ur||dqS )N)namevaluer4   ).0r?   r@   r4   r4   r5   
<listcomp>X   s
    z%serialize_headers.<locals>.<listcomp>)itemsr,   r4   r4   r5   serialize_headersW   s   rE   clientCertificatesc                    s&  | sd S g }| D ]}d|d i}| d }r||d< | d }r,t| |d< | d }rAtt|I d H  |d< | d }rQt| |d< | d }rftt|I d H  |d< | d }	rvt|	 |d< | d }
rtt|
I d H  |d< || q	|S )	Norigin
passphrasepfxpfxPathcertcertPathkeykeyPath)getbase64	b64encodedecoder   append)rF   outclientCertificate
out_recordrH   rI   pfx_pathrK   	cert_pathrM   key_pathr4   r4   r5   to_client_certificates_protocol_   sF   rZ   c                
       s  e Zd Zdededededdf
 fddZdefd	d
ZdeddfddZ	e
defddZe
defddZe
ded fddZe
defddZdefddZe
dee fddZe
dee fddZe
dee fddZded fd d!Ze
dCd#d$Zdefd%d&Ze
ded  fd'd(Ze
ded  fd)d*Ze
dee fd+d,Ze
defd-d.Zd/e ddfd0d1Z!e
de"fd2d3Z#de"fd4d5Z$de%fd6d7Z&d8edee fd9d:Z'dDd<d=Z(de)j*fd>d?Z+dEdAdBZ,  Z-S )FRequestparenttypeguidinitializerr8   Nc              
      sx   t  |||| t|d| _d | _| jr| | j_d | _dddddddddd	| _t| j	d | _
d | _t | _d S )NredirectedFromr   )		startTimedomainLookupStartdomainLookupEndconnectStartsecureConnectionStart
connectEndrequestStartresponseStartresponseEndr,   )superr=   r   rO   _redirected_from_redirected_to_failure_text_timing
RawHeaders_initializer_provisional_headers_all_headers_futurer7   _fallback_overridesr<   r\   r]   r^   r_   	__class__r4   r5   r=      s,   zRequest.__init__c                 C   s   d| j d| jdS )Nz<Request url=z method=>)r*   r+   r;   r4   r4   r5   __repr__      zRequest.__repr__	overridesc                 C   s   | d| jj| j_| d| jj| j_| d| jj| j_| d}t|tr0| | j_d S t|t	r;|| j_d S |d urJt
| | j_d S d S )Nr*   r+   r,   r-   )rO   rt   r*   r+   r,   
isinstancer1   encoder:   r3   jsondumps)r<   r{   	post_datar4   r4   r5   _apply_fallback_overrides   s"   


z!Request._apply_fallback_overridesc                 C      t t| jjp
| jd S Nr*   )r   r1   rt   r*   rq   r;   r4   r4   r5   r*         zRequest.urlc                 C   
   | j d S )NresourceTyperq   r;   r4   r4   r5   resource_type      
zRequest.resource_typer(   c                 C   s   t td t| jdS )Nr(   serviceWorker)r   r   r   rq   rO   r;   r4   r4   r5   service_worker   s   zRequest.service_workerc                 C   r   )Nr+   )r   r1   rt   r+   rq   r;   r4   r4   r5   r+      r   zRequest.methodc                    s0   |   I d H }|std|jdd I d H S )Nz(Unable to fetch sizes for failed requestsizes)responser   _channelsend)r<   r   r4   r4   r5   r      s   
zRequest.sizesc                 C   s:   | j j}|r
| S | jd}|d urt| S d S Nr-   )rt   r:   rR   rq   rO   rP   	b64decode)r<   database64_post_datar4   r4   r5   r      s   zRequest.post_datac                 C   sX   | j }|sd S | jd }d|v rtt|S zt|W S  ty+   td| w )Ncontent-typez!application/x-www-form-urlencodedz&POST data is not a valid JSON object: )	r   r,   dictr   	parse_qslr~   loads	Exceptionr   )r<   r   content_typer4   r4   r5   post_data_json   s   
zRequest.post_data_jsonc                 C   s0   | j jr| j jS | jdrt| jd S d S r   )rt   r:   rq   rO   rP   r   r;   r4   r4   r5   r:      s
   zRequest.post_data_bufferResponsec                    s   t | jdd I d H S )Nr   )r   r   r   r;   r4   r4   r5   r      s   zRequest.responser&   c                 C   sD   | j ds
tdtdt| j d }|js tdg d|S )Nframez8Service Worker requests do not have an associated frame.r&   
)zGFrame for this navigation request is not available, because the requestzIwas issued before the frame is created. You can check whether the requestz@is a navigation request by calling isNavigationRequest() method.)rq   rO   r   r   r   _pagejoinr<   r   r4   r4   r5   r      s   	zRequest.framec                 C   r   )NisNavigationRequestr   r;   r4   r4   r5   is_navigation_request     
zRequest.is_navigation_requestc                 C      | j S r9   )rl   r;   r4   r4   r5   redirected_from
     zRequest.redirected_fromc                 C   r   r9   )rm   r;   r4   r4   r5   redirected_to  r   zRequest.redirected_toc                 C   r   r9   )rn   r;   r4   r4   r5   failure  r   zRequest.failurec                 C   r   r9   ro   r;   r4   r4   r5   timing  r   zRequest.timingresponse_end_timingc                 C   s*   || j d< | j d dkr|| j d< d S d S )Nrj   ri   ra   r   )r<   r   r4   r4   r5   _set_response_end_timing  s   
z Request._set_response_end_timingc                 C   s$   | j j}|rt| S | j S r9   )rt   r,   rp   _from_headers_dict_lossyrr   )r<   overrider4   r4   r5   r,     s   
zRequest.headersc                       |   I d H  S r9   _actual_headersr,   r;   r4   r4   r5   all_headers&     zRequest.all_headersc                    r   r9   r   headers_arrayr;   r4   r4   r5   r   )  r   zRequest.headers_arrayr?   c                       |   I d H |S r9   r   rO   r<   r?   r4   r4   r5   header_value,     zRequest.header_valuerp   c                    s^   | j j}|rtt|S | js)t | _| jjdd ddI d H }| j	t| | jI d H S )NrawRequestHeadersT)is_internal)
rt   r,   rp   rE   rs   asyncioFuturer   r   
set_result)r<   r   r,   r4   r4   r5   r   /  s   
zRequest._actual_headersc                 C   s>   t td t| jd}|st S |j}|st S |jS )Nr&   r   )	r   r   r   rq   rO   r   r   r   _closed_or_crashed_future)r<   r   pager4   r4   r5   _target_closed_future;  s   zRequest._target_closed_futureOptional[Page]c                 C   s$   t | jd}|sd S td|jS )Nr   r&   )r   rq   rO   r   r   r   r4   r4   r5   
_safe_pageF  s   zRequest._safe_pager8   r&   r8   rp   )r8   r   ).r.   r/   r0   r   r1   r	   r=   ry   r)   r   propertyr*   r   r   r   r+   r   r   r   r   r   r3   r:   r   r   boolr   r   r   r   r   r   floatr   r   r,   r   r   r   r   r   r   r   r   r   __classcell__r4   r4   rv   r5   r[      sd    		
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eddfddZ	d=ddZ
defddZedefddZd>deddfddZ							d?dedeeef deeef dedeeef deddddfd d!Z							d?dedeeef deeef dedeeef deddddfd"d#Zd$eddfd%d&Z							d?d'ed(edeeef d)eeeef d*ed+ed,eddfd-d.Z				d@d'ed(edeeef d)eeeef ddf
d/d0Z				d@d'ed(edeeef d)eeeef ddf
d1d2ZdAd4eddfd5d6Zd'eddfd7d8Zd9eddfd:d;Z   Z!S )BRouter\   r]   r^   r_   r8   Nc                    s.   t  |||| d | _tdd | _d| _d S )Nr#   F)rk   r=   _handling_futurer   _context
_did_throwru   rv   r4   r5   r=   N  s   
zRoute.__init__asyncio.Future[bool]c                 C   s   t  | _| jS r9   )r   r   r   r;   r4   r4   r5   _start_handlingV  s   
zRoute._start_handlingdonec                 C   s"   | j }|sJ d | _ || d S r9   )r   r   )r<   r   chainr4   r4   r5   _report_handledZ  s   zRoute._report_handledc                 C   s   | j stdd S )NzRoute is already handled!)r   r   r;   r4   r4   r5   _check_not_handled`  s   zRoute._check_not_handledc                 C   s   d| j  dS )Nz<Route request=rx   )requestr;   r4   r4   r5   ry   d     zRoute.__repr__c                 C   s   t | jd S )Nr   )r   rq   r;   r4   r4   r5   r   g  s   zRoute.request	errorCodec                    s      fddI d H  d S )Nc                      s    jdd d iS )Nabortr   _race_with_page_closer   r   r4   r   r<   r4   r5   <lambda>m  s    zRoute.abort.<locals>.<lambda>_handle_route)r<   r   r4   r   r5   r   k     zRoute.abortstatusr,   bodyr~   pathcontentTyper   r%   c              
      s,     fddI d H  d S )Nc                	      s     S r9   )_inner_fulfillr4   r   r   r,   r~   r   r   r<   r   r4   r5   r     s    zRoute.fulfill.<locals>.<lambda>r   )r<   r   r,   r   r~   r   r   r   r4   r   r5   fulfillx  s   
zRoute.fulfillc                    s  t t }|d ur|d urtdt|}|r_|d= |dr%|d n|j|d< |dr3|d n|j|d< ddlm	}	 |d u r_|d u r_t
||	r_|jj| ju rX|j|d< n| I d H }d}
t
|tru||d< d	|d
< t| }
n3t
|trt| |d< d|d
< t|}
n|r|d= t| }t| |d< d|d
< t|}
dd |di  D }|dr|d |d< n|rd|d< n|rttt|d pd|d< |
rd|vrt|
|d< t||d< | | jdd |I d H  d S )Nz*Can specify either body or json parametersr   r   r,   r   r$   fetchResponseUidr   FisBase64Tr   c                 S   s   i | ]\}}|  t|qS r4   )lowerr1   )rA   kvr4   r4   r5   
<dictcomp>  s    z(Route._inner_fulfill.<locals>.<dictcomp>r   r   zapplication/jsonzapplication/octet-streamzcontent-lengthr   )r   localsr   
json_utilsr   rO   r   r,   playwright._impl._fetchr%   r|   _request_connection
_fetch_uidr   r1   lenr}   r3   rP   rQ   rR   r   
read_bytesrC   	mimetypes
guess_typerE   r   r   r   )r<   r   r,   r   r~   r   r   r   paramsr%   lengthfile_contentr4   r4   r5   r     sX   







 zRoute._inner_fulfillcallbackc              
      sJ   |    z| I d H  | d W d S  ty$ } zd| _|d }~ww NT)r   r   r   r   )r<   r   er4   r4   r5   r     s   zRoute._handle_router*   r+   r-   maxRedirects
maxRetriestimeoutc              
      s*   j  fddI d H S )Nc                
      s    j jjj dS )N)r   r   r   )r   r   _inner_fetchr4   r,   r   r   r+   r-   r<   r   r*   r4   r5   r     s    zRoute.fetch.<locals>.<lambda>)r   wrap_api_call)r<   r*   r+   r,   r-   r   r   r   r4   r  r5   fetch  s   

zRoute.fetchc                    s4   t ttt }|   | j| | d d S NF)r   r)   r   r   r   r   r   r   )r<   r*   r+   r,   r-   r{   r4   r4   r5   fallback  s
   zRoute.fallbackc                    s2   t ttt  d fdd}|I d H S )Nr8   c                      s"   j   dI d H  d S r  )r   r   _inner_continuer4   r{   r<   r4   r5   _inner  s   zRoute.continue_.<locals>._innerr>   )r   r)   r   r   r   )r<   r*   r+   r,   r-   r  r4   r  r5   	continue_  s   zRoute.continue_Fis_fallbackc                    sd   | j j}| | jdd |j|j|jrt|jnd |j	d ur&t
|j	 nd |dI d H  d S )Ncontinue)r*   r+   r,   r-   
isFallback)r   rt   r   r   r   r*   r+   r,   rE   r:   rP   rQ   rR   )r<   r
  optionsr4   r4   r5   r    s    
zRoute._inner_continuec                    s       fddI d H  d S )Nc                      s      jdd diS )NredirectNavigationRequestr*   r   r4   r<   r*   r4   r5   r     s    z6Route._redirected_navigation_request.<locals>.<lambda>r   r  r4   r  r5   _redirected_navigation_request  r   z$Route._redirected_navigation_requestfuturec              	      s   t |}t|dtt | jdtd | j	 }t j
||gt jdI d H  | r8| r8tt| | rHt j|ddI d H  d S d S )N__pw_stack__r   return_whenT)return_exceptions)r   create_tasksetattrgetattrcurrent_task_loopinspectstackr   r   waitFIRST_COMPLETEDr   	exceptionr   BaseExceptiongather)r<   r  futtarget_closed_futurer4   r4   r5   r      s"   

zRoute._race_with_page_close)r8   r   r>   r9   )NNNNNNN)NNNN)F)"r.   r/   r0   r   r1   r	   r=   r   r   r   r   ry   r   r[   r   r   intr   r3   r   r   r   r   r   r   r   r  r  r	  r  r  r   r   r   r4   r4   rv   r5   r   M  s    




	



	
@
	




r   loopcoroc                    s   d fdd}|  |  d S )Nr8   c                      s(   z I d H  W d S  t y   Y d S w r9   )r   r4   r&  r4   r5   _ignore_exception6  s   z<_create_task_and_ignore_exception.<locals>._ignore_exceptionr>   )r  )r%  r&  r(  r4   r'  r5   !_create_task_and_ignore_exception3  s   r)  c                   @   s   e Zd ZdddZdeeeef gef ddfdd	Z	dee
e e
e gef ddfd
dZdddZedefddZddededdfddZdeeef ddfddZdS )ServerWebSocketRoutewsWebSocketRoutec                 C   
   || _ d S r9   )_ws)r<   r+  r4   r4   r5   r=   @  r   zServerWebSocketRoute.__init__handlerr8   Nc                 C      || j _d S r9   )r.  _on_server_messager<   r/  r4   r4   r5   
on_messageC     zServerWebSocketRoute.on_messagec                 C   r0  r9   )r.  _on_server_closer2  r4   r4   r5   on_closeF  r4  zServerWebSocketRoute.on_closec                 C   s   t d)Nz>connectToServer must be called on the page-side WebSocketRoute)NotImplementedErrorr;   r4   r4   r5   connect_to_serverI  s   z&ServerWebSocketRoute.connect_to_serverc                 C   s   | j jd S r   )r.  rq   r;   r4   r4   r5   r*   N     zServerWebSocketRoute.urlcodereasonc              
   C   s(   t | jj| jjdd ||dd d S )NcloseServerTr:  r;  wasClean)r)  r.  r  r   r   r<   r:  r;  r4   r4   r5   closeR  s   zServerWebSocketRoute.closemessagec              	   C   s`   t |trt| jj| jjdd |dd d S t| jj| jjdd t|	 dd d S )NsendToServerFrA  r   T)
r|   r1   r)  r.  r  r   r   rP   rQ   rR   r<   rA  r4   r4   r5   r   `  s   
zServerWebSocketRoute.send)r+  r,  r>   NN)r.   r/   r0   r=   r   r   r1   r3   r   r3  r   r$  r6  r8  r   r*   r@  r   r4   r4   r4   r5   r*  ?  s    
$&
r*  c                
       s  e Zd Zdededededdf
 fddZd	eddfd
dZd	eddfddZd	eddfddZ	d	eddfddZ
edefddZd$dededdfddZd%ddZdeeef ddfddZdeeeef gef ddfddZdeee ee gef ddfd d!Zd&d"d#Z  ZS )'r,  r\   r]   r^   r_   r8   Nc                    s~   t  |||| d | _d | _d | _d | _t| | _d| _| j	
d| j | j	
d| j | j	
d| j | j	
d| j d S )NFmessageFromPagemessageFromServer	closePager<  )rk   r=   _on_page_message_on_page_closer1  r5  r*  _server
_connectedr   on_channel_message_from_page_channel_message_from_server_channel_close_page_channel_close_serverru   rv   r4   r5   r=   t  s   
zWebSocketRoute.__init__eventc                 C   sZ   | j r|  |d rt|d  d S |d  d S | jr+t| j| jdd | d S d S )Nr   rA  rB  )rI  rP   r   rL  r)  r  r   r   r<   rR  r4   r4   r5   rN    s   z)WebSocketRoute._channel_message_from_pagec                 C   sP   | j r|  |d rt|d  d S |d  d S t| j| jdd | d S )Nr   rA  
sendToPage)r1  rP   r   r)  r  r   r   rS  r4   r4   r5   rO    s   z+WebSocketRoute._channel_message_from_serverc                 C   :   | j r|  |d |d  d S t| j| jdd | d S )Nr:  r;  r<  )rJ  r)  r  r   r   rS  r4   r4   r5   rP    
   z"WebSocketRoute._channel_close_pagec                 C   rU  )Nr:  r;  rH  )r5  r)  r  r   r   rS  r4   r4   r5   rQ    rV  z$WebSocketRoute._channel_close_serverc                 C   r   r   r   r;   r4   r4   r5   r*     r   zWebSocketRoute.urlr:  r;  c                    s<   z| j dd ||ddI d H  W d S  ty   Y d S w )NrH  Tr=  )r   r   r   r?  r4   r4   r5   r@    s   zWebSocketRoute.closec                 C   s4   | j rtdd| _ t| jdd  td| jS )NzAlready connected to the serverTconnectr,  )rL  r   r   r  r   r   r   rK  r;   r4   r4   r5   r8    s   z WebSocketRoute.connect_to_serverrA  c              	   C   sX   t |trt| j| jdd |dd d S t| j| jdd t| dd d S )NrT  FrC  T)	r|   r1   r)  r  r   r   rP   rQ   rR   rD  r4   r4   r5   r     s"   
zWebSocketRoute.sendr/  c                 C   r-  r9   )rI  r2  r4   r4   r5   r3    r   zWebSocketRoute.on_messagec                 C   r-  r9   )rJ  r2  r4   r4   r5   r6    r   zWebSocketRoute.on_closec                    s<   | j rd S z| jdd I d H  W d S  ty   Y d S w )NensureOpened)rL  r   r   r   r;   r4   r4   r5   _after_handle  s   zWebSocketRoute._after_handlerE  )r8   r,  r>   )r.   r/   r0   r   r1   r	   r=   rN  rO  rP  rQ  r   r*   r$  r@  r8  r   r3   r   r   r   r3  r   r6  rY  r   r4   r4   rv   r5   r,  s  s0    
$&r,  c                   @   s`   e Zd Zdee dedefddZede	d  de	e
 fdd	Zd
edefddZdddZdS )WebSocketRouteHandlerbase_urlr*   r/  c                 C   s   || _ || _|| _d S r9   )	_base_urlr*   r/  )r<   r[  r*   r/  r4   r4   r5   r=     s   
zWebSocketRouteHandler.__init__handlersr8   c                 C   sp   g }d}| D ](}t |jtr|d|ji qt |jtjr,||jjt|jd qd}q|r6ddigS |S )NFglob)regexSource
regexFlagsTz**/*)r|   r*   r1   rS   rePatternpatternr!   )r]  patternsall_urlsr/  r4   r4   r5   prepare_interception_patterns  s   
z3WebSocketRouteHandler.prepare_interception_patternsws_urlc                 C   s   t | j|| jdS r   )r    r\  r*   )r<   rg  r4   r4   r5   matches  s   zWebSocketRouteHandler.matcheswebsocket_router,  Nc                    s2   |  |}t|r|I d H  | I d H  d S r9   )r/  r   iscoroutinerY  )r<   ri  coro_or_futurer4   r4   r5   handle  s
   


zWebSocketRouteHandler.handle)ri  r,  r8   N)r.   r/   r0   r   r1   r   r   r=   staticmethodr
   r   rf  r   rh  rl  r4   r4   r4   r5   rZ    s     

rZ  c                
       sv  e Zd Zdededededdf
 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
fddZdefddZdefddZdedee fddZdedee fddZd4d!d"Zdee fd#d$Zdee fd%d&Zd5d'd(Zdefd)d*Z defd+d,Z!de"fd-d.Z#ede$fd/d0Z%ed6d2d3Z&  Z'S )7r   r\   r]   r^   r_   r8   Nc                    s   t  |||| t| jd | _| jd }|d | jjd< |d | jjd< |d | jjd< |d | jjd< |d | jjd< |d | jjd< |d	 | jjd	< |d
 | jjd
< ttt| jd | _	d | _
t | _d S )Nr   r   rb   rc   rd   re   rf   rg   rh   ri   r,   )rk   r=   r   rq   r   ro   rp   r   r   rr   _raw_headers_futurer   r   _finished_future)r<   r\   r]   r^   r_   r   rv   r4   r5   r=     s    
zResponse.__init__c                 C   s   d| j d| j dS )Nz<Response url=z	 request=rx   )r*   r   r;   r4   r4   r5   ry   1  rz   zResponse.__repr__c                 C   r   r   r   r;   r4   r4   r5   r*   4  r   zResponse.urlc                 C   s*   | j d dkp| j d dko| j d dkS )Nr   r      i+  r   r;   r4   r4   r5   ok8  s   zResponse.okc                 C   r   )Nr   r   r;   r4   r4   r5   r   ?  r   zResponse.statusc                 C   r   )N
statusTextr   r;   r4   r4   r5   status_textC  r   zResponse.status_textc                 C   s
   | j  S r9   )rr   r,   r;   r4   r4   r5   r,   G  r   zResponse.headersc                 C   r   )NfromServiceWorkerr   r;   r4   r4   r5   from_service_workerK  r   zResponse.from_service_workerc                    r   r9   r   r;   r4   r4   r5   r   O  r   zResponse.all_headersc                    r   r9   r   r;   r4   r4   r5   r   R  r   zResponse.headers_arrayr?   c                    r   r9   r   r   r4   r4   r5   r   U  r   zResponse.header_valuec                    r   r9   )r   get_allr   r4   r4   r5   header_valuesX  r   zResponse.header_valuesrp   c                    sH   | j st | _ tt| jdd I d H }| j t| | j I d H S )NrawResponseHeaders)	rn  r   r   r   r   r   r   r   rp   )r<   r,   r4   r4   r5   r   [  s   
zResponse._actual_headersc                       | j dd I d H S )N
serverAddrr   r   r;   r4   r4   r5   server_addrh  
   
zResponse.server_addrc                    ry  )NsecurityDetailsr{  r;   r4   r4   r5   security_detailsn  r}  zResponse.security_detailsc                    sh   d fdd}t | }t jtttt jt jf   j|gt j	dI d H  |
 r2|I d H  d S d S )Nr8   c                      s    j  I d H  td)NzTarget closed)r   r   r   r4   r;   r4   r5   on_finishedu  s   z&Response.finished.<locals>.on_finishedr  r>   )r   r  r  r   r
   r   Taskr   ro  r  r   )r<   r  on_finished_taskr4   r;   r5   finishedt  s   zResponse.finishedc                    s    | j dd I d H }t|S )Nr   )r   r   rP   r   )r<   binaryr4   r4   r5   r     s   

zResponse.bodyc                    s   |   I d H }| S r9   )r   rR   )r<   contentr4   r4   r5   text  s   zResponse.textc                    s   t |  I d H S r9   )r~   r   r  r;   r4   r4   r5   r~     r   zResponse.jsonc                 C   r   r9   )r   r;   r4   r4   r5   r     r   zResponse.requestr&   c                 C   s   | j jS r9   )r   r   r;   r4   r4   r5   r     s   zResponse.framer   r>   r   )(r.   r/   r0   r   r1   r	   r=   ry   r   r*   r   rq  r$  r   rs  r   r,   ru  r   r   r   r   r   r
   rw  r   r   r|  r   r  r  r3   r   r  r   r~   r[   r   r   r   r4   r4   rv   r5   r     sP    

r   c                
       s   e Zd ZedddddZdededed	ed
df
 fddZd
efddZ	e
d
efddZ		d#dededed
efddZ	d#dededed
efddZdeded
dfddZdeded
dfddZd
efdd Zd$d!d"Z  ZS )%	WebSocketr@  framereceived	framesentsocketerror)CloseFrameReceived	FrameSentr   r\   r]   r^   r_   r8   Nc                    s   t  |||| d _td| _ jd fdd  jd fdd  jd fd	d  jd
 fdd d S )NFr'   	frameSentc                         | d | d S Nopcoder   )_on_frame_sentr   r;   r4   r5   r         z$WebSocket.__init__.<locals>.<lambda>frameReceivedc                    r  r  )_on_frame_receivedr  r;   r4   r5   r     r  socketErrorc                    s     tjj| d S )Nerror)emitr  Eventsr   r  r;   r4   r5   r     r  r@  c                    s      S r9   )	_on_closer  r;   r4   r5   r     s    )rk   r=   
_is_closedr   r   r   rM  ru   rv   r;   r5   r=     s    


zWebSocket.__init__c                 C   s   d| j dS )Nz<WebSocket url=rx   )r*   r;   r4   r4   r5   ry     r   zWebSocket.__repr__c                 C   r   r   r   r;   r4   r4   r5   r*     r   zWebSocket.urlrR  	predicater   c                    s   |d u rt t jj }t d| d}|t t|d| d| d |tj	j
kr7| tj	j
td |tj	jkrH| tj	jtd | jd fd	d
 | || t| S )Nzweb_socket.expect_event()zTimeout z%ms exceeded while waiting for event ""zSocket closedzSocket errorr@  c                      s
    j  S r9   )r   _close_error_with_reasonr4   r;   r4   r5   r     s   
 z(WebSocket.expect_event.<locals>.<lambda>)r   r   _parent_timeout_settingsr   r"   reject_on_timeoutr   r  r  r  reject_on_eventr   r   wait_for_eventr   result)r<   rR  r  r   waiterr4   r;   r5   expect_event  s    zWebSocket.expect_eventc              	      sN   |  |||4 I d H }W d   I d H  n1 I d H sw   Y  |I d H S r9   )r  )r<   rR  r  r   
event_infor4   r4   r5   r    s
   (
zWebSocket.wait_for_eventr  r   c                 C   B   |dkr|  tjjt| d S |dkr|  tjj| d S d S N      )r  r  r  r  rP   r   r<   r  r   r4   r4   r5   r    
   zWebSocket._on_frame_sentc                 C   r  r  )r  r  r  r  rP   r   r  r4   r4   r5   r    r  zWebSocket._on_frame_receivedc                 C   r   r9   )r  r;   r4   r4   r5   	is_closed     zWebSocket.is_closedc                 C   s   d| _ | tjj|  d S r   )r  r  r  r  r  r;   r4   r4   r5   r    s   zWebSocket._on_closerE  r>   )r.   r/   r0   r   r  r   r1   r	   r=   ry   r   r*   r   r   r   r  r   r  r$  r  r  r   r  r  r   r4   r4   rv   r5   r    s\    

r  c                   @   s   e Zd ZdeddfddZedeeef dd fddZdede	e fd	d
Z
dedee fddZdeeef fddZdefddZdS )rp   r,   r8   Nc                 C   s8   || _ tt| _|D ]}d| j|d   |d < q
d S )NTr?   r@   )_headers_arrayr   r   _headers_mapr   )r<   r,   headerr4   r4   r5   r=     s
   
zRawHeaders.__init__c                 C   s   t t| S r9   )rp   rE   rD   r4   r4   r5   r     r9  z#RawHeaders._from_headers_dict_lossyr?   c                 C   s0   |  |}|s	d S | dkrdnd}||S )Nz
set-cookier   z, )rv  r   r   )r<   r?   values	separatorr4   r4   r5   rO     s
   

zRawHeaders.getc                 C   s   t | j|   S r9   )listr  r   keysr   r4   r4   r5   rv    rz   zRawHeaders.get_allc                 C   s,   i }| j  D ]}tt| |||< q|S r9   )r  r  r   r1   rO   )r<   r  r?   r4   r4   r5   r,     s   zRawHeaders.headersc                 C   r   r9   )r  r;   r4   r4   r5   r     r  zRawHeaders.headers_array)r.   r/   r0   r   r=   rm  r	   r1   r   r   rO   r
   rv  r,   r   r4   r4   r4   r5   rp     s    rp   )Lr   rP   r  r~   r   r   ra  collectionsr   pathlibr   typesr   typingr   r   r   r   r	   r
   r   r   r   r   urllibr    playwright._impl._api_structuresr   r   r   r   r   r   r   playwright._impl._connectionr   r   r   playwright._impl._errorsr   'playwright._impl._event_context_managerr   playwright._impl._helperr   r   r   r   r    playwright._impl._str_utilsr!   playwright._impl._waiterr"   !playwright._impl._browser_contextr#   r   r%   playwright._impl._framer&   playwright._impl._pager'   r(   r)   r7   r1   rE   rZ   r[   r   AbstractEventLoopr)  r*  r,  rZ  r   r  rp   r4   r4   r4   r5   <module>   sb   0$	

" M g
4},U