
    iƉ                        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rd dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<  G d ded          Z= G d d          Z>dee?e?f         defdZ@deee                  deeee?e?f                           fdZA G d de#          ZB G d d e#          ZCd!e jD        d"eddfd#ZE G d$ d%          ZF G d& d'e#          ZG G d( d)          ZH G d* d+e#          ZI G d, d-e#          ZJ G d. d/          ZKdS )0    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                       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     Y/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/playwright/_impl/_network.pyr+   r+   H   se         	#SMd38n%%%%uS%Z())))))r7   r+   F)totalc                       e Zd ZddZdS )SerializedFallbackOverridesreturnNc                 >    d | _         d | _        d | _        d | _        d S N)r,   r-   r.   post_data_bufferselfs    r8   __init__z$SerializedFallbackOverrides.__init__P   s%    "&%)1515r7   r<   N)r0   r1   r2   rB   r6   r7   r8   r;   r;   O   s(        6 6 6 6 6 6r7   r;   r.   r<   c                 >    d |                                  D             S )Nc                 "    g | ]\  }}|||dS )N)namevaluer6   ).0rF   rG   s      r8   
<listcomp>z%serialize_headers.<locals>.<listcomp>X   s4       D% &&r7   )itemsr.   s    r8   serialize_headersrL   W   s+     "==??   r7   clientCertificatesc                   K   | sd S g }| D ]}d|d         i}|                     d          x}r||d<   |                     d          x}r)t          j        |                                          |d<   |                     d          x}r<t          j        t	          |           d {V                                           |d<   |                     d          x}r)t          j        |                                          |d<   |                     d          x}r<t          j        t	          |           d {V                                           |d<   |                     d          x}	r)t          j        |	                                          |d<   |                     d          x}
r<t          j        t	          |
           d {V                                           |d<   |                    |           |S )	Norigin
passphrasepfxpfxPathcertcertPathkeykeyPath)getbase64	b64encodedecoder   append)rM   outclientCertificate
out_recordrP   rQ   pfx_pathrS   	cert_pathrU   key_paths              r8   to_client_certificates_protocolrb   _   sI       t
C/  '1

 +..|<<<: 	2'1J|$#''...3 	? & 0 5 5 < < > >Ju(,,Y7778 	 & 0$X........! !fhh u %((0004 	A!'!1$!7!7!>!>!@!@Jv)--j9999 	!'!1$Y////////" "fhh v $''...3 	? & 0 5 5 < < > >Ju(,,Y7778 	 & 0$X........! !fhh u 	

:Jr7   c            
           e Zd Zdededededdf
 fdZdefdZd	eddfd
Z	e
defd            Ze
defd            Ze
ded         fd            Ze
defd            ZdefdZe
dee         fd            Ze
dee         fd            Ze
dee         fd            Zded         fdZe
d)d            ZdefdZe
ded          fd            Ze
ded          fd            Ze
dee         fd            Ze
defd            Zde ddfdZ!e
de"fd            Z#de"fd Z$de%fd!Z&d"edee         fd#Z'd*d%Z(de)j*        fd&Z+d+d(Z, xZ-S ),Requestparenttypeguidinitializerr<   Nc           
      t   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.   )superrB   r   rW   _redirected_from_redirected_to_failure_text_timing
RawHeaders_initializer_provisional_headers_all_headers_futurer;   _fallback_overridesrA   re   rf   rg   rh   	__class__s        r8   rB   zRequest.__init__   s     	t[9995JOO,--6
 6
 48  	837D!0,0!#!%'
(
 
(
 %/t/@/K$L$L!IM ')) 	   r7   c                 (    d| j         d| j        dS )Nz<Request url=z method=>)r,   r-   r@   s    r8   __repr__zRequest.__repr__   s    CtxCC4;CCCCr7   	overridesc                 D   |                     d| j        j                  | j        _        |                     d| j        j                  | j        _        |                     d| j        j                  | j        _        |                     d          }t          |t                    r |                                | j        _        d S t          |t                    r|| j        _        d S |2t          j        |                                          | j        _        d S d S )Nr,   r-   r.   r/   )rW   r~   r,   r-   r.   
isinstancer3   encoder?   r5   jsondumps)rA   r   	post_datas      r8   _apply_fallback_overridesz!Request._apply_fallback_overrides   s   '0}}4+/(
 (
 $ +4--d.5+
 +
 ' ,5==t/7,
 ,
 ( MM*--	i%% 	W8A8H8H8J8JD$555	5)) 	W8AD$555"8<
98M8M8T8T8V8VD$555 #"r7   c                 Z    t          t          | j        j        p| j        d                   S Nr,   )r   r3   r~   r,   r{   r@   s    r8   r,   zRequest.url   s%    C15Q9J59QRRRr7   c                     | j         d         S )NresourceTyper{   r@   s    r8   resource_typezRequest.resource_type   s     00r7   r)   c                     t          t          d         t          | j                            d                              S )Nr)   serviceWorker)r   r   r   r{   rW   r@   s    r8   service_workerzRequest.service_worker   s8    X!$"3"7"7"H"HII
 
 	
r7   c                 Z    t          t          | j        j        p| j        d                   S )Nr-   )r   r3   r~   r-   r{   r@   s    r8   r-   zRequest.method   s%    C18WD<Mh<WXXXr7   c                    K   |                                   d {V }|st          d          |j                            dd            d {V S )Nz(Unable to fetch sizes for failed requestsizes)responser   _channelsend)rA   r   s     r8   r   zRequest.sizes   s|      (((((( 	DBCCC&++
 
 
 
 
 
 
 
 	
r7   c                     | j         j        }|r|                                S | j                            d          }|&t          j        |                                          S d S Nr/   )r~   r?   rZ   r{   rW   rX   	b64decode)rA   database64_post_datas      r8   r   zRequest.post_data   sc    '8 	!;;== ,00<<'#$455<<>>>tr7   c                     | j         }|sd S | j        d         }d|v r!t          t          j        |                    S 	 t          j        |          S # t          $ r t          d|           w xY w)Ncontent-typez!application/x-www-form-urlencodedz&POST data is not a valid JSON object: )	r   r.   dictr   	parse_qslr   loads	Exceptionr   )rA   r   content_types      r8   post_data_jsonzRequest.post_data_json   s    N	 	4|N3.,>>	22333	N:i((( 	N 	N 	NLLLMMM	Ns   A A0c                     | j         j        r| j         j        S | j                            d          rt	          j        | j        d                   S d S r   )r~   r?   r{   rW   rX   r   r@   s    r8   r?   zRequest.post_data_buffer   sT    #4 	=+<<  ,, 	C#D$5j$ABBBtr7   Responsec                 b   K   t          | j                            dd            d {V           S )Nr   )r   r   r   r@   s    r8   r   zRequest.response   sQ      $-$$       
 
 	
r7   r'   c                     | 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.)r{   rW   r   r   r   _pagejoinrA   r   s     r8   r   zRequest.frame   s     $$W-- 	TRSSSWl4+<W+EFFGG{ 				      r7   c                     | j         d         S )NisNavigationRequestr   r@   s    r8   is_navigation_requestzRequest.is_navigation_request  s     !677r7   c                     | j         S r>   )rv   r@   s    r8   redirected_fromzRequest.redirected_from
  s    $$r7   c                     | j         S r>   )rw   r@   s    r8   redirected_tozRequest.redirected_to  s    ""r7   c                     | j         S r>   )rx   r@   s    r8   failurezRequest.failure  s    !!r7   c                     | j         S r>   ry   r@   s    r8   timingzRequest.timing  s
    |r7   response_end_timingc                 T    || j         d<   | j         d         dk    r|| j         d<   d S d S )Nrt   rs   rk   r   )rA   r   s     r8   _set_response_end_timingz Request._set_response_end_timing  s:    &9]#<(B..,?DL))) /.r7   c                     | j         j        }|r,t                              |                                          S | j                                        S r>   )r~   r.   rz   _from_headers_dict_lossyr|   )rA   overrides     r8   r.   zRequest.headers  sK    +3 	K66x@@HHJJJ(00222r7   c                 ^   K   |                                   d {V                                 S r>   _actual_headersr.   r@   s    r8   all_headerszRequest.all_headers&  6      **,,,,,,,,55777r7   c                 ^   K   |                                   d {V                                 S r>   r   headers_arrayr@   s    r8   r   zRequest.headers_array)  6      **,,,,,,,,;;===r7   rF   c                 `   K   |                                   d {V                     |          S r>   r   rW   rA   rF   s     r8   header_valuezRequest.header_value,  8      **,,,,,,,,11$777r7   rz   c                 F  K   | j         j        }|rt          t          |                    S | j        sbt          j                    | _        | j                            dd d           d {V }| j        	                    t          |                     | j         d {V S )NrawRequestHeadersT)is_internal)
r~   r.   rz   rL   r}   asyncioFuturer   r   
set_result)rA   r   r.   s      r8   r   zRequest._actual_headers/  s      +3 	;/99:::' 	E'.~'7'7D$ M..#Tt /        G $//
70C0CDDD--------r7   c                     t          t          d         t          | j                            d                              }|st          j                    S |j        }|st          j                    S |j        S )Nr'   r   )	r   r   r   r{   rW   r   r   r   _closed_or_crashed_future)rA   r   pages      r8   _target_closed_futurezRequest._target_closed_future;  ss    W4T5F5J5J75S5STT
 
  	$>###{ 	$>###--r7   Optional[Page]c                     t          | j                            d                    }|sd S t          d|          j        S )Nr   r'   )r   r{   rW   r   r   r   s     r8   
_safe_pagezRequest._safe_pageF  s@    %d&7&;&;G&D&DEE 	4GU##))r7   r<   r'   r<   rz   )r<   r   ).r0   r1   r2   r   r3   r
   rB   r   r+   r   propertyr,   r   r   r   r-   r   r   r   r   r   r5   r?   r   r   boolr   r   r   r   r   r   floatr   r   r.   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r8   rd   rd      s       
"
*-
58
GK
	
 
 
 
 
 
8D# D D D DW3M WRV W W W W$ SS S S S XS 1s 1 1 1 X1 
 2 
 
 
 X
 Y Y Y Y XY
\ 
 
 
 
 8C=    X 
N 
N 
N 
N X
N (5/    X
 4 
 
 
 
    X 8t 8 8 8 8 %)!4 % % % X% #x	2 # # # X# "# " " " X"     X@E @d @ @ @ @
 3 3 3 3 X387 8 8 8 8>\ > > > >8s 8x} 8 8 8 8
. 
. 
. 
.	.w~ 	. 	. 	. 	.* * * * * * * *r7   rd   c                       e Zd Zdededededdf
 fdZd,d	Zd
eddfdZ	d-dZ
defdZedefd            Zd.deddf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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Zdeddf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#Z	 	 	 	 d0dededeeef         deeeef         ddf
d$Z	 	 	 	 d0dededeeef         deeeef         ddf
d%Zd1d'eddfd(Zdeddfd)Zd*eddfd+Z  xZ!S )2Routere   rf   rg   rh   r<   Nc                     t                                          ||||           d | _        t          dd           | _        d| _        d S )Nr$   F)ru   rB   _handling_futurer   _context
_did_throwr   s        r8   rB   zRoute.__init__N  sH     	t[999BF*./?*F*Fr7   asyncio.Future[bool]c                 @    t          j                    | _        | j        S r>   )r   r   r   r@   s    r8   _start_handlingzRoute._start_handlingV  s     ' 0 0$$r7   donec                 T    | j         }|sJ d | _         |                    |           d S r>   )r   r   )rA   r   chains      r8   _report_handledzRoute._report_handledZ  s5    %u $r7   c                 2    | j         st          d          d S )NzRoute is already handled!)r   r   r@   s    r8   _check_not_handledzRoute._check_not_handled`  s&    $ 	53444	5 	5r7   c                     d| j          dS )Nz<Route request=r   )requestr@   s    r8   r   zRoute.__repr__d  s    00000r7   c                 6    t          | j        d                   S )Nr   )r   r{   r@   s    r8   r   zRoute.requestg  s    D-i8999r7   	errorCodec                 L    K                          fd           d {V  d S )Nc                  f                         j                            dd d i                    S )Nabortr   _race_with_page_closer   r   )r   rA   s   r8   <lambda>zRoute.abort.<locals>.<lambda>m  s<    D..""#Y   r7   _handle_route)rA   r   s   ``r8   r   zRoute.abortk  sa            

 

 
	
 
	
 
	
 
	
 
	
 
	
 
	
 
	
 
	
r7   statusr.   bodyr   pathcontentTyper   r&   c           
      d    K                          fd           d {V  d S )Nc            	      :                                    S r>   )_inner_fulfill)r  r  r.   r   r  r   rA   r   s   r8   r   zRoute.fulfill.<locals>.<lambda>  s&    D''tT;  r7   r   )rA   r   r.   r  r   r  r  r   s   ````````r8   fulfillzRoute.fulfillx  s                   
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
r7   c                   K   t          t                                }|%|t          d          t          j        |          }|r|d= |                    d          r|d         n|j        |d<   |                    d          r|d         n|j        |d<   ddlm	}	 |J|Ht          ||	          r8|j        j        | j        u r|j        |d<   n|                                 d {V }d}
t          |t                    r,||d<   d	|d
<   t!          |                                          }
nt          |t$                    r>t'          j        |                                          |d<   d|d
<   t!          |          }
nc|ra|d= t-          |                                          }t'          j        |                                          |d<   d|d
<   t!          |          }
d |                    di                                           D             }|                    d          r|d         |d<   nC|rd|d<   n;|r9t3          j        t          t-          |                              d         pd|d<   |
rd|vrt          |
          |d<   t7          |          |d<   |                     | j                            dd |                     d {V  d S )Nz*Can specify either body or json parametersr   r   r.   r   r%   fetchResponseUidr  FisBase64Tr  c                 X    i | ]'\  }}|                                 t          |          (S r6   )lowerr3   )rH   kvs      r8   
<dictcomp>z(Route._inner_fulfill.<locals>.<dictcomp>  s,    SSSA17799c!ffSSSr7   r  r   zapplication/jsonzapplication/octet-streamzcontent-lengthr  )r    localsr   
json_utilsr   rW   r   r.   playwright._impl._fetchr&   r   _request_connection
_fetch_uidr  r3   lenr   r5   rX   rY   rZ   r   
read_bytesrJ   	mimetypes
guess_typerL   r   r   r   )rA   r   r.   r  r   r  r  r   paramsr&   lengthfile_contents               r8   r  zRoute._inner_fulfill  s      "&((++HIII#D))D 	1z"$*JJx$8$8Mx  ho 8 &,ZZ	%:%:Py!!@P 9 <;;;;;|Hk1R1R$0D4DDD191DF-..!)000000DdC   	'!F6N!&F:''FFe$$ 		'#-d33::<<F6N!%F:YYFF 	'v::0022L#-l;;BBDDF6N!%F:&&FSSIr1J1J1P1P1R1RSSS::m$$ 	&,]&;GN## 	&8GN## 	$Sd__55a8V<V N#  	4&g55(+FG$%-g66y((););ItV)T)TUUUUUUUUUUUr7   callbackc                    K   |                                   	  |             d {V  |                     d           d S # t          $ r}d| _        |d }~ww xY wNT)r   r   r   r   )rA   r  es      r8   r   zRoute._handle_route  s      !!!	(**  &&&&& 	 	 	"DOG	s   %? 
A		AAr,   r-   r/   maxRedirects
maxRetriestimeoutc           
      j    K    j                              fd           d {V S )Nc            
      \    j         j                            j                   S )N)r!  r"  r#  )r   r   _inner_fetch)r.   r!  r"  r-   r/   rA   r#  r,   s   r8   r   zRoute.fetch.<locals>.<lambda>  s;    DM)66)% 7 	 	 r7   )r  wrap_api_call)rA   r,   r-   r.   r/   r!  r"  r#  s   ````````r8   fetchzRoute.fetch  s       %33	 	 	 	 	 	 	 	 	 	 	
 
 
 
 
 
 
 
 	
r7   c                    K   t          t          t          t                                          }|                                  | j                            |           |                     d           d S NF)r   r+   r    r  r   r   r   r   )rA   r,   r-   r.   r/   r   s         r8   fallbackzRoute.fallback  sg       35Efhh5O5OPP	!!!..y999U#####r7   c                     K   t          t          t          t                                          d fd}                     |           d {V S )Nr<   c                  v   K   j                                                             d           d {V  d S r*  )r   r   _inner_continue)r   rA   s   r8   _innerzRoute.continue_.<locals>._inner  sI      L229===&&u-----------r7   rC   )r   r+   r    r  r   )rA   r,   r-   r.   r/   r/  r   s   `     @r8   	continue_zRoute.continue_  sr       35Efhh5O5OPP		. 	. 	. 	. 	. 	. 	. ''/////////r7   Fis_fallbackc                 F  K   | j         j        }|                     | j                            dd |j        |j        |j        rt          |j                  nd |j	        +t          j        |j	                                                  nd |d                     d {V  d S )Ncontinue)r,   r-   r.   r/   
isFallback)r   r~   r   r   r   r,   r-   r.   rL   r?   rX   rY   rZ   )rA   r1  optionss      r8   r.  zRoute._inner_continue  s      ,2((M";%n>EoW)'/:::SW #3? ()ABBIIKKK!"-  
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
r7   c                 L    K                          fd           d {V  d S )Nc                  f                           j                            dd di                    S )NredirectNavigationRequestr,   r   rA   r,   s   r8   r   z6Route._redirected_navigation_request.<locals>.<lambda>  s3    D..""#>uclSS  r7   r   r9  s   ``r8   _redirected_navigation_requestz$Route._redirected_navigation_request  sa            
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
r7   futurec                 H  K   t          j        |          }t          |dt          t          j        | j                  dt          j        d                               | j        	                                }t          j
        ||gt           j                   d {V  |                                r;|                                r't          t          |                                          |                                rt          j        |d           d {V  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)rA   r;  futtarget_closed_futures       r8   r   zRoute._race_with_page_close   s5     !&))G(44ngmTUFVFVWW	
 	
 	

  $|AACCl&'/
 
 
 	
 	
 	
 	
 	
 	
 	
 88:: 	7#--// 	7}cmmoo666$$&& 	>.============	> 	>r7   )r<   r   rC   r>   )NNNNNNN)NNNN)F)"r0   r1   r2   r   r3   r
   rB   r   r   r   r   r   r   rd   r   r   intr   r5   r   r   r  r  r   r   r   r(  r+  r0  r.  r:  r	   r   r   r   s   @r8   r   r   M  sH        " *- 58 GK 	           % % % %D T    5 5 5 51# 1 1 1 1 : : : : X:
 
S 
D 
 
 
 
 "&"&!%"&
 

 c3h
 CJ	

 
 CI
 
  
 

 
 
 
$ "&"&!%"&>V >V>V c3h>V CJ	>V
 >V CI>V >V  >V 
>V >V >V >V@H      "&+/ 
 

 
 c3h	

 S%(
 
 
 
 

 
 
 
2 "&+/
$ 
$
$ 
$ c3h	
$
 S%(
$ 

$ 
$ 
$ 
$ "&+/0 00 0 c3h	0
 S%(0 
0 0 0 0
 
 
$ 
 
 
 
,
 
 
 
 
 
>) > > > > > > > > >r7   r   loopcoroc                 N    dfd}|                       |                       d S )Nr<   c                  @   K   	   d {V  d S # t           $ r Y d S w xY wr>   )r   )rQ  s   r8   _ignore_exceptionz<_create_task_and_ignore_exception.<locals>._ignore_exception6  sC      	JJJJJJJJJ 	 	 	DD	s    
rC   )rA  )rP  rQ  rT  s    ` r8   !_create_task_and_ignore_exceptionrU  3  sG          	&&(()))))r7   c                       e Zd ZddZdeeeef         gef         ddfdZ	dee
e         e
e         gef         ddfdZdd	Zedefd
            ZddededdfdZdeeef         ddfdZdS )ServerWebSocketRoutewsWebSocketRoutec                     || _         d S r>   )_ws)rA   rX  s     r8   rB   zServerWebSocketRoute.__init__@  s    r7   handlerr<   Nc                     || j         _        d S r>   )r[  _on_server_messagerA   r\  s     r8   
on_messagezServerWebSocketRoute.on_messageC  s    &-###r7   c                     || j         _        d S r>   )r[  _on_server_closer_  s     r8   on_closezServerWebSocketRoute.on_closeF  s    $+!!!r7   c                      t          d          )Nz>connectToServer must be called on the page-side WebSocketRoute)NotImplementedErrorr@   s    r8   connect_to_serverz&ServerWebSocketRoute.connect_to_serverI  s    !L
 
 	
r7   c                 &    | j         j        d         S r   )r[  r{   r@   s    r8   r,   zServerWebSocketRoute.urlN  s    x$U++r7   codereasonc                     t          | j        j        | j        j                            dd ||dd                     d S )NcloseServerTrh  ri  wasClean)rU  r[  rE  r   r   rA   rh  ri  s      r8   closezServerWebSocketRoute.closeR  sV    )HNH"" $ $  	
 	
 	
 	
 	
r7   messagec           
      l   t          |t                    r>t          | j        j        | j        j                            dd |dd                     d S t          | j        j        | j        j                            dd t          j        |          	                                dd                     d S )NsendToServerFrp  r
  T)
r   r3   rU  r[  rE  r   r   rX   rY   rZ   rA   rp  s     r8   r   zServerWebSocketRoute.send`  s    gs## 	-!&&"Dg5*Q*Q      .!&&" & 0 9 9 @ @ B BPTUU     r7   )rX  rY  rC   NN)r0   r1   r2   rB   r   r   r3   r5   r   r`  r   rO  rc  rf  r   r,   ro  r   r6   r7   r8   rW  rW  ?  s.          .(E#u*,=+>+C"D . . . . .,(3-#)G)L M ,RV , , , ,
 
 
 

 ,S , , , X,
 
# 
c 
T 
 
 
 
E#u*- $      r7   rW  c            
       D    e Zd Zdededededdf
 fdZdeddfd	Zdeddfd
ZdeddfdZ	deddfdZ
edefd            ZddededdfdZddZdeeef         ddfdZdeeeef         gef         ddfdZdeee         ee         gef         ddfdZddZ xZS )rY  re   rf   rg   rh   r<   Nc                    t                                          ||||           d | _        d | _        d | _        d | _        t          |           | _        d| _        | j	        
                    d| j                   | j	        
                    d| j                   | j	        
                    d| j                   | j	        
                    d| j                   d S )NFmessageFromPagemessageFromServer	closePagerk  )ru   rB   _on_page_message_on_page_closer^  rb  rW  _server
_connectedr   on_channel_message_from_page_channel_message_from_server_channel_close_page_channel_close_serverr   s        r8   rB   zWebSocketRoute.__init__t  s     	t[999NR 	 QU  	 ,D11*D,KLLL,d.OPPPd&>???(BCCCCCr7   eventc                    | j         r?|                      |d         rt          j        |d                   n|d                    d S | j        r1t	          | j        | j                            dd |                     d S d S )Nr
  rp  rr  )r{  rX   r   r~  rU  rE  r   r   rA   r  s     r8   r  z)WebSocketRoute._channel_message_from_page  s      		!!$& y!12229%    
 _ 	-
DM..~tUKK    	 	r7   c                     | j         r?|                      |d         rt          j        |d                   n|d                    d S t          | j        | j                            dd |                     d S )Nr
  rp  
sendToPage)r^  rX   r   rU  rE  r   r   r  s     r8   r  z+WebSocketRoute._channel_message_from_server  s    " 		##$& y!12229%     .
DM..|T5II    r7   c                     | j         r$|                      |d         |d                    d S t          | j        | j                            dd |                     d S )Nrh  ri  rk  )r|  rU  rE  r   r   r  s     r8   r  z"WebSocketRoute._channel_close_page  sh     	fuX?????-
DM..}dEJJ    r7   c                     | j         r$|                      |d         |d                    d S t          | j        | j                            dd |                     d S )Nrh  ri  rz  )rb  rU  rE  r   r   r  s     r8   r  z$WebSocketRoute._channel_close_server  sh      	!!%-xAAAAA-
DM..{D%HH    r7   c                     | j         d         S r   r   r@   s    r8   r,   zWebSocketRoute.url       ''r7   rh  ri  c                 z   K   	 | j                             dd ||dd           d {V  d S # t          $ r Y d S w xY w)Nrz  Trl  )r   r   r   rn  s      r8   ro  zWebSocketRoute.close  s      	-$$TDFPT#U#U            	 	 	DD	s   &, 
::c                     | j         rt          d          d| _         t          j        | j                            dd                      t          d| j                  S )NzAlready connected to the serverTconnectrY  )r~  r   r   rA  r   r   r   r}  r@   s    r8   rf  z WebSocketRoute.connect_to_server  sg    ? 	;9:::M 	
 	
 	
 $dl333r7   rp  c           
      D   t          |t                    r4t          | j        | j                            dd |dd                     d S t          | j        | j                            dd t          j        |                                          dd                     d S )Nr  Frs  T)	r   r3   rU  rE  r   r   rX   rY   rZ   rt  s     r8   r   zWebSocketRoute.send  s    gs## 	-
"" $G(O(O      .
"" #)#3G#<#<#C#C#E#E$(  
 
 
 
 
r7   r\  c                     || _         d S r>   )r{  r_  s     r8   r`  zWebSocketRoute.on_message  s     'r7   c                     || _         d S r>   )r|  r_  s     r8   rc  zWebSocketRoute.on_close  s    %r7   c                    K   | j         rd S 	 | j                            dd            d {V  d S # t          $ r Y d S w xY w)NensureOpened)r~  r   r   r   r@   s    r8   _after_handlezWebSocketRoute._after_handle  s      ? 	F	-$$            	 	 	DD	s   !0 
>>ru  )r<   rY  rC   )r0   r1   r2   r   r3   r
   rB   r  r  r  r  r   r,   rO  ro  rf  r   r5   r   r   r   r`  r   rc  r  r   r   s   @r8   rY  rY  s  s       D"D*-D58DGKD	D D D D D D(
 
 
 
 
 

$ 
4 
 
 
 
 $    4 D     (S ( ( ( X(  C 4    
4 
4 
4 
4E#u*- $    *((E#u*,=+>+C"D ( ( ( ( (&(3-#)G)L M &RV & & & &
 
 
 
 
 
 
 
r7   rY  c                   ~    e Zd Zdee         dedefdZede	d          de	e
         fd            Zdedefd	ZddZdS )WebSocketRouteHandlerbase_urlr,   r\  c                 0    || _         || _        || _        d S r>   )	_base_urlr,   r\  )rA   r  r,   r\  s       r8   rB   zWebSocketRouteHandler.__init__  s     "r7   handlersr<   c                 @   g }d}| D ]}t          |j        t                    r|                    d|j        i           9t          |j        t          j                  r5|                    |j        j        t          |j                  d           d}|rddigS |S )NFglob)regexSource
regexFlagsTz**/*)r   r,   r3   r[   rePatternpatternr"   )r  patternsall_urlsr\  s       r8   prepare_interception_patternsz3WebSocketRouteHandler.prepare_interception_patterns  s      	  	 G'+s++ 
  56666GK44  '.{':&8&E&E       	&V$%%r7   ws_urlc                 :    t          | j        || j        d          S r  )r!   r  r,   )rA   r  s     r8   matcheszWebSocketRouteHandler.matches  s    4>648TBBBr7   websocket_routerY  Nc                    K   |                      |          }t          j        |          r| d {V  |                                 d {V  d S r>   )r\  r   iscoroutiner  )rA   r  coro_or_futures      r8   handlezWebSocketRouteHandler.handle  sl      o66~.. 	!        ++-----------r7   )r  rY  r<   N)r0   r1   r2   r   r3   r   r   rB   staticmethodr   r   r  r   r  r  r6   r7   r8   r  r    s        3-  /	    ./	d   \,Cc Cd C C C C. . . . . .r7   r  c            
           e Zd Zdededededdf
 fdZdefdZedefd	            Z	ede
fd
            Zedefd            Zedefd            Zedefd            Zede
fd            ZdefdZdefdZdedee         fdZdedee         fdZddZdee         fdZdee         fdZd dZdefdZ defdZ!de"fdZ#ede$fd            Z%ed!d            Z& xZ'S )"r   re   rf   rg   rh   r<   Nc                    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          j                    | _        d S )Nr   r   rl   rm   rn   ro   rp   rq   rr   rs   r.   )ru   rB   r   r{   r  ry   rz   r   r   r|   _raw_headers_futurer   r   _finished_future)rA   re   rf   rg   rh   r   r   s         r8   rB   zResponse.__init__  s6    	t[999!-d.?	.J!K!K"8,-3K-@k*5;<O5P1239:K3L/006~0Fn-9?@W9X56.4\.Bl+06~0Fn-171Ho.$.t0;<<%
 %
! JN 6=n6F6Fr7   c                 (    d| j         d| j         dS )Nz<Response url=z	 request=r   )r,   r   r@   s    r8   r   zResponse.__repr__1  s    DDDT\DDDDr7   c                     | j         d         S r   r   r@   s    r8   r,   zResponse.url4  r  r7   c                 h    | j         d         dk    p!| j         d         dk    o| j         d         dk    S )Nr   r      i+  r   r@   s    r8   okzResponse.ok8  sA      *a/ 
h'3.U43DX3NRU3U	
r7   c                     | j         d         S )Nr   r   r@   s    r8   r   zResponse.status?  s     **r7   c                     | j         d         S )N
statusTextr   r@   s    r8   status_textzResponse.status_textC  s     ..r7   c                 4    | j                                         S r>   )r|   r.   r@   s    r8   r.   zResponse.headersG  s    (00222r7   c                     | j         d         S )NfromServiceWorkerr   r@   s    r8   from_service_workerzResponse.from_service_workerK  s     !455r7   c                 ^   K   |                                   d {V                                 S r>   r   r@   s    r8   r   zResponse.all_headersO  r   r7   c                 ^   K   |                                   d {V                                 S r>   r   r@   s    r8   r   zResponse.headers_arrayR  r   r7   rF   c                 `   K   |                                   d {V                     |          S r>   r   r   s     r8   r   zResponse.header_valueU  r   r7   c                 `   K   |                                   d {V                     |          S r>   )r   get_allr   s     r8   header_valueszResponse.header_valuesX  s8      **,,,,,,,,55d;;;r7   rz   c                   K   | j         sst          j                    | _         t          t          | j                            dd            d {V           }| j                             t          |                     | j          d {V S )NrawResponseHeaders)	r  r   r   r   r   r   r   r   rz   )rA   r.   s     r8   r   zResponse._actual_headers[  s      ' 		E'.~'7'7D$m(((        G $//
70C0CDDD--------r7   c                 H   K   | j                             dd            d {V S )N
serverAddrr   r   r@   s    r8   server_addrzResponse.server_addrh  sD      ]''
 
 
 
 
 
 
 
 	
r7   c                 H   K   | j                             dd            d {V S )NsecurityDetailsr  r@   s    r8   security_detailszResponse.security_detailsn  sD      ]''
 
 
 
 
 
 
 
 	
r7   c                 Z   K   d fd}t          j         |                      }t          j        t          t          t
          t           j        t           j        f                   j        |g          t           j	                   d {V  |
                                r
| d {V  d S d S )Nr<   c                  d   K    j                                          d {V  t          d          )NzTarget closed)r  r   r   r@   s   r8   on_finishedz&Response.finished.<locals>.on_finishedu  s;      -55777777777(((r7   r>  rC   )r   rA  rH  r   r   r   Taskr   r  rI  r   )rA   r  on_finished_tasks   `  r8   finishedzResponse.finishedt  s      	) 	) 	) 	) 	) 	) #.{{}}==lU7<789&(89   /
 
 
 	
 	
 	
 	
 	
 	
 	
   "" 	#""""""""""	# 	#r7   c                 p   K   | j                             dd            d {V }t          j        |          S )Nr  )r   r   rX   r   )rA   binarys     r8   r  zResponse.body  sT      }))
 
 
 
 
 
 
 
 '''r7   c                 b   K   |                                   d {V }|                                S r>   )r  rZ   )rA   contents     r8   textzResponse.text  s5      		######~~r7   c                 ^   K   t          j        |                                  d {V           S r>   )r   r   r  r@   s    r8   r   zResponse.json  s0      z		++++++,,,r7   c                     | j         S r>   )r  r@   s    r8   r   zResponse.request  s
    }r7   r'   c                     | j         j        S r>   )r  r   r@   s    r8   r   zResponse.frame  s    }""r7   r   rC   r   )(r0   r1   r2   r   r3   r
   rB   r   r   r,   r   r  rO  r   r  r   r.   r  r   r   r   r   r   r   r  r   r   r  r   r  r  r5   r  r  r   r   rd   r   r   r   r   s   @r8   r   r     s       G"G*-G58GGKG	G G G G G G(E# E E E E (S ( ( ( X( 
D 
 
 
 X
 + + + + X+ /S / / / X/ 3 3 3 3 X3 6T 6 6 6 X687 8 8 8 8>\ > > > >8s 8x} 8 8 8 8< <S	 < < < <. . . .
8J#7 
 
 
 

(A 
 
 
 
# # # # (E ( ( ( ( C        -C - - - -     X # # # X# # # # #r7   r   c            
            e Zd Z edddd          Zdededed	ed
df
 fdZd
efdZ	e
d
efd            Z	 	 ddededed
efdZ	 ddededed
efdZdeded
dfdZdeded
dfdZd
efdZddZ xZS )	WebSocketro  framereceived	framesentsocketerror)CloseFrameReceived	FrameSentr   re   rf   rg   rh   r<   Nc                 z    t                                          ||||           d _        t          d|           _         j                            d fd            j                            d fd            j                            d fd            j                            d	 fd
           d S )NFr(   	frameSentc                 H                         | d         | d                   S Nopcoder   )_on_frame_sentr  rA   s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s     4..vh/?PP r7   frameReceivedc                 H                         | d         | d                   S r  )_on_frame_receivedr  s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s     4226(3CVF^TT r7   socketErrorc                 Z                         t          j        j        | d                   S )Nerror)emitr  Eventsr   r  s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s    499Y%5%;VG_MM r7   ro  c                 ,                                     S r>   )	_on_closer  s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s    1A1A r7   )ru   rB   
_is_closedr   r   r   r  r   s   `    r8   rB   zWebSocket.__init__  s     	t[999&&))
PPPP	
 	
 	
 	TTTT	
 	
 	
 	MMMM	
 	
 	
 	"A"A"A"ABBBBBr7   c                     d| j         dS )Nz<WebSocket url=r   )r,   r@   s    r8   r   zWebSocket.__repr__  s    .....r7   c                     | j         d         S r   r   r@   s    r8   r,   zWebSocket.url  r  r7   r  	predicater#  c                     |1t          t           j                  j                                        }t           d| d          }|                    t          t          |          d| d| d           |t          j	        j
        k    r3|                     t          j	        j
        t          d                     |t          j	        j        k    r3|                     t          j	        j        t          d                     |                     j        d fd	           |                     ||           t          |                                          S )
Nzweb_socket.expect_event()zTimeout z%ms exceeded while waiting for event ""zSocket closedzSocket errorro  c                  6     j                                         S r>   )r   _close_error_with_reasonr@   s   r8   r   z(WebSocket.expect_event.<locals>.<lambda>  s    )L)L)N)N r7   )r   r   _parent_timeout_settingsr#  r#   reject_on_timeoutr   r  r  r  reject_on_eventr   r   wait_for_eventr   result)rA   r  r  r#  waiters   `    r8   expect_eventzWebSocket.expect_event  sK    ?3--?GGIIGAAAABB    MwMMUMMM	
 	
 	
 I$***""4)9)?AWAWXXXI$***""4)9)?~AVAVWWWJ!N!N!N!N	
 	
 	
 	dE9555&v}}777r7   c                    K   |                      |||          4 d {V }	 d d d           d {V  n# 1 d {V swxY w Y   | d {V S r>   )r  )rA   r  r  r#  
event_infos        r8   r  zWebSocket.wait_for_event  s       $$UIw?? 	 	 	 	 	 	 	:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   4
>>r  r   c                     |dk    r9|                      t          j        j        t	          j        |                     d S |dk    r'|                      t          j        j        |           d S d S N      )r  r  r  r  rX   r   rA   r  r   s      r8   r  zWebSocket._on_frame_sent  sf    Q;;IIi&0&2B42H2HIIIIIq[[IIi&0$77777 [r7   c                     |dk    r9|                      t          j        j        t	          j        |                     d S |dk    r'|                      t          j        j        |           d S d S r
  )r  r  r  r  rX   r   r  s      r8   r  zWebSocket._on_frame_received  sf    Q;;IIi&4f6Ft6L6LMMMMMq[[IIi&4d;;;;; [r7   c                     | j         S r>   )r  r@   s    r8   	is_closedzWebSocket.is_closed  s
    r7   c                 ^    d| _         |                     t          j        j        |            d S r  )r  r  r  r  r  r@   s    r8   r  zWebSocket._on_close  s)    		)"($/////r7   ru  rC   )r0   r1   r2   r   r  r   r3   r
   rB   r   r   r,   r   r   r   r  r   r  rO  r  r  r   r  r  r   r   s   @r8   r  r    s       _%	  FC"C*-C58CGKC	C C C C C C(/# / / / / (S ( ( ( X( #	8 88 8 	8
 
!8 8 8 80 HL    %- ?D 	       8S 8 8 8 8 8 8< <C <D < < < <4    0 0 0 0 0 0 0 0r7   r  c                       e Zd ZdeddfdZedeeef         dd fd            Zdede	e         fdZ
dedee         fdZdeeef         fd	Zdefd
ZdS )rz   r.   r<   Nc                     || _         t          t                    | _        |D ]0}d| j        |d                                                  |d         <   1d S )NTrF   rG   )_headers_arrayr   r   _headers_mapr  )rA   r.   headers      r8   rB   zRawHeaders.__init__  s`    %8CD8I8I 	N 	NFIMDfVn22445fWoFF	N 	Nr7   c                 :    t          t          |                     S r>   )rz   rL   rK   s    r8   r   z#RawHeaders._from_headers_dict_lossy  s    +G44555r7   rF   c                     |                      |          }|sd S |                                dk    rdnd}|                    |          S )Nz
set-cookier   z, )r  r  r   )rA   rF   values	separators       r8   rW   zRawHeaders.get  sM    d## 	4 JJLLL88DDd	~~f%%%r7   c                 ~    t          | j        |                                                                                   S r>   )listr  r  keysr   s     r8   r  zRawHeaders.get_all  s,    D%djjll388::;;;r7   c                     i }| j                                         D ]-}t          t          |                     |                    ||<   .|S r>   )r  r  r   r3   rW   )rA   r  rF   s      r8   r.   zRawHeaders.headers  sI    %**,, 	5 	5DTXXd^^44F4LLr7   c                     | j         S r>   )r  r@   s    r8   r   zRawHeaders.headers_array  s    ""r7   )r0   r1   r2   r   rB   r  r
   r3   r   r   rW   r   r  r.   r   r6   r7   r8   rz   rz     s        N N N N N N 6$sCx. 6\ 6 6 6 \6& & & & & &<C <DI < < < <c3h    #| # # # # # #r7   rz   )Lr   rX   rF  r   r  r  r  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+   r;   r3   rL   rb   rd   r   AbstractEventLooprU  rW  rY  r  r   r  rz   r6   r7   r8   <module>r0     s               				 # # # # # #       ! ! ! ! ! !                                                       
 + * * * * * K K K K K K              ; : : : : : + + + + + + 4@@@@@@333333------33333333* * * * *% * * * *6 6 6 6 6 6 6 6tCH~ ,     &7!89d4S>"#   DI* I* I* I* I*l I* I* I*Xc> c> c> c> c>L c> c> c>L	*

#	*+4	*		* 	* 	* 	*1 1 1 1 1 1 1 1hz z z z z\ z z zz). ). ). ). ). ). ). ).X|# |# |# |# |#| |# |# |#~R0 R0 R0 R0 R0 R0 R0 R0j# # # # # # # # # #r7   