
    ijɇ                     x   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$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"      ZC G d! d"      ZD G d# d$e"      ZE G d% d&      ZF G d' d(e"      ZG G d) d*e"      ZH G d+ d,      ZIy)-    N)defaultdict)Path)SimpleNamespace)
TYPE_CHECKINGAnyCallable	CoroutineDictListOptional	TypedDictUnioncast)parse)ClientCertificateHeadersHeadersArray
RemoteAddrRequestSizesResourceTimingSecurityDetails)ChannelOwner_capture_stack_trace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                   b    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<   y)FallbackOverrideParametersurlmethodheaderspostDataN)	__name__
__module____qualname__r   str__annotations__r
   r   bytes     L/root/.hermes/venv/lib/python3.12/site-packages/playwright/_impl/_network.pyr,   r,   H   s=    	#SMd38n%%uS%Z())r8   r,   F)totalc                       e Zd ZddZy)SerializedFallbackOverridesNc                 <    d | _         d | _        d | _        d | _        y N)r-   r.   r/   post_data_bufferselfs    r9   __init__z$SerializedFallbackOverrides.__init__P   s    "&%)1515r8   returnN)r1   r2   r3   rB   r7   r8   r9   r<   r<   O   s    6r8   r<   r/   rD   c                 ^    | j                         D cg c]  \  }}|||d c}}S c c}}w )N)namevalue)items)r/   rF   rG   s      r9   serialize_headersrI   W   s9     #==?D% &  s   )clientCertificatesc                   K   | sy g }| D ]  }d|d   i}|j                  d      x}r||d<   |j                  d      x}r&t        j                  |      j                         |d<   |j                  d      x}r7t        j                  t	        |       d {         j                         |d<   |j                  d      x}r&t        j                  |      j                         |d<   |j                  d      x}r7t        j                  t	        |       d {         j                         |d<   |j                  d      x}	r&t        j                  |	      j                         |d<   |j                  d      x}
r7t        j                  t	        |
       d {         j                         |d<   |j                  |        |S 7 67 7 4w)	Norigin
passphrasepfxpfxPathcertcertPathkeykeyPath)getbase64	b64encodedecoder    append)rJ   outclientCertificate
out_recordrM   rN   pfx_pathrP   	cert_pathrR   key_paths              r9   to_client_certificates_protocolr_   _   s     
C/ '1

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

:12 J / 0 /s8   BGG
BGG
BGG
0GGGc            
       H    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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*jV                  fd%Z,d)d&Z- xZ.S )*RequestparenttypeguidinitializerrD   Nc           
      T   t         |   ||||       t        |j                  d            | _        d | _        | j                  r| | j                  _        d | _        dddddddddd	| _        t        | j                  d         | _
        d | _        t               | _        d | _        y )NredirectedFromr   )		startTimedomainLookupStartdomainLookupEndconnectStartsecureConnectionStart
connectEndrequestStartresponseStartresponseEndr/   )superrB   r   rT   _redirected_from_redirected_to_failure_text_timing
RawHeaders_initializer_provisional_headers_all_headers_futurer<   _fallback_overrides	_responserA   rb   rc   rd   re   	__class__s        r9   rB   zRequest.__init__   s     	t[95JOO,-6
 48  37D!!0,0!#!%'
(
 %/t/@/@/K$L!IM ') 	  04r8   c                 <    d| j                   d| j                  dS )Nz<Request url=z method=>)r-   r.   r@   s    r9   __repr__zRequest.__repr__   s    txxl(4;;/CCr8   	overridesc                 r   |j                  d| j                  j                        | j                  _        |j                  d| j                  j                        | j                  _        |j                  d| j                  j                        | j                  _        |j                  d      }t        |t              r |j                         | j                  _        y t        |t              r|| j                  _        y |3t        j                  |      j                         | j                  _        y y )Nr-   r.   r/   r0   )rT   r{   r-   r.   r/   
isinstancer4   encoder?   r6   jsondumps)rA   r   	post_datas      r9   _apply_fallback_overridesz!Request._apply_fallback_overrides   s    '0}}4++//(
  $ +4--d..55+
  ' ,5==t//77,
  ( MM*-	i%8A8H8H8JD$$5	5)8AD$$5"8<

98M8T8T8VD$$5 #r8   c                 l    t        t        | j                  j                  xs | j                  d         S Nr-   )r   r4   r{   r-   rx   r@   s    r9   r-   zRequest.url   s+    C1155Q9J9J59QRRr8   c                      | j                   d   S )NresourceTyperx   r@   s    r9   resource_typezRequest.resource_type   s      00r8   r*   c                 l    t        t        d   t        | j                  j	                  d                  S )Nr*   serviceWorker)r   r   r   rx   rT   r@   s    r9   service_workerzRequest.service_worker   s0    X!$"3"3"7"7"HI
 	
r8   c                 l    t        t        | j                  j                  xs | j                  d         S )Nr.   )r   r4   r{   r.   rx   r@   s    r9   r.   zRequest.method   s+    C1188WD<M<Mh<WXXr8   c                    K   | j                          d {   }|st        d      |j                  j                  dd        d {   S 7 57 w)Nz(Unable to fetch sizes for failed requestsizes)responser   _channelsend)rA   r   s     r9   r   zRequest.sizes   sR     (BCC&&++
 
 	
 )
s!   AA0AAAAc                     | j                   j                  }||j                         S | j                  j	                  d      }|#t        j                  |      j                         S y Nr0   )r{   r?   rW   rx   rT   rU   	b64decode)rA   database64_post_datas      r9   r   zRequest.post_data   s`    ''88;;= ,,00<'##$45<<>>r8   c                     | j                   }|sy | j                  j                  d      }|r"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/   rT   dictr   	parse_qslr   loads	Exceptionr   )rA   r   content_types      r9   post_data_jsonzRequest.post_data_json   s}    NN	||''7?<O	233	N::i(( 	N@LMM	Ns   A% %A=c                     | j                   j                  r| j                   j                  S | j                  j                  d      r"t	        j
                  | j                  d         S y r   )r{   r?   rx   rT   rU   r   r@   s    r9   r?   zRequest.post_data_buffer   sV    ##44++<<<  ,##D$5$5j$ABBr8   Responsec                 h   K   t        | j                  j                  dd        d {         S 7 w)Nr   )r   r   r   r@   s    r9   r   zRequest.response   s5     $--$$ 
 	
s   %20	2c                     | j                   S r>   )r|   r@   s    r9   existing_responsezRequest.existing_response   s    ~~r8   c                     | j                   j                  d      st        d      t        dt	        | j                   d               }|j
                  st        dj                  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.)rx   rT   r   r   r   _pagejoinrA   r   s     r9   r   zRequest.frame   sj      $$W-RSSWl4+<+<W+EFG{{		  r8   c                      | j                   d   S )NisNavigationRequestr   r@   s    r9   is_navigation_requestzRequest.is_navigation_request  s      !677r8   c                     | j                   S r>   )rs   r@   s    r9   redirected_fromzRequest.redirected_from  s    $$$r8   c                     | j                   S r>   )rt   r@   s    r9   redirected_tozRequest.redirected_to  s    """r8   c                     | j                   S r>   )ru   r@   s    r9   failurezRequest.failure  s    !!!r8   c                     | j                   S r>   rv   r@   s    r9   timingzRequest.timing  s    ||r8   response_end_timingc                 f    || j                   d<   | j                   d   dk(  r|| j                   d<   y y )Nrq   rp   rh   r   )rA   r   s     r9   _set_response_end_timingz Request._set_response_end_timing  s4    &9]#<<(B.,?DLL) /r8   c                     | j                   j                  }|r#t        j                  |      j                         S | j                  j                         S r>   )r{   r/   rw   _from_headers_dict_lossyry   )rA   overrides     r9   r/   zRequest.headers$  sE    ++3366x@HHJJ((0022r8   c                 Z   K   | j                          d {   j                         S 7 wr>   _actual_headersr/   r@   s    r9   all_headerszRequest.all_headers+  $     **,,5577,   +)+c                 Z   K   | j                          d {   j                         S 7 wr>   r   headers_arrayr@   s    r9   r   zRequest.headers_array.  $     **,,;;==,r   rF   c                 \   K   | j                          d {   j                  |      S 7 wr>   r   rT   rA   rF   s     r9   header_valuezRequest.header_value1  &     **,,11$77,   ,*,c                 p  K   | j                   j                  }|rt        t        |            S | j                  sct        j                         | _        | j                  j                  dd d       d {   }| j                  j                  t        |             | j                   d {   S 7 <7 w)NrawRequestHeadersT)is_internal)
r{   r/   rw   rI   rz   asyncioFuturer   r   
set_result)rA   r   r/   s      r9   r   zRequest._actual_headers4  s     ++33/9::'''.~~'7D$ MM..#Tt /  G $$//
70CD----	 .s$   A3B65B267B6-B4.B64B6c                     t        t        d   t        | j                  j	                  d                  }|st        j                         S |j                  }|st        j                         S |j                  S )Nr(   r   )	r   r   r   rx   rT   r   r   r   _closed_or_crashed_future)rA   r   pages      r9   _target_closed_futurezRequest._target_closed_future@  sd    W4T5F5F5J5J75ST
 >>##{{>>##---r8   c                 |    t        | j                  j                  d            }|sy t        d|      j                  S )Nr   r(   )r   rx   rT   r   r   r   s     r9   
_safe_pagezRequest._safe_pageK  s6    %d&7&7&;&;G&DEGU#)))r8   rD   r(   rD   rw   )rD   zOptional[Page])/r1   r2   r3   r   r4   r
   rB   r   r,   r   propertyr-   r   r   r   r.   r   r   r   r   r   r6   r?   r   r   r   boolr   r   r   r   r   r   floatr   r   r/   r   r   r   r   r   r   r   r   r   __classcell__r~   s   @r9   ra   ra      s~   4"4*-4584GK4	4:D# DW3M WRV W$ SS S S 1s 1 1 
 2 
 
 Y Y Y
\ 
 8C=   
N 
N 
N (5/  
 4 
 8J#7     8t 8 %)!4 % % #x	2 # # "# " "   @E @d @
 3 3 387 8>\ >8s 8x} 8
.	.w~~ 	.*r8   ra   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	 	 	 	 d.dededeeef   deeeef   ddf
d#Z	 	 	 	 d.dededeeef   deeeef   ddf
d$Zd/d%eddfd&Zdeddfd'Zd(eddfd)Z  xZ!S )0Routerb   rc   rd   re   rD   Nc                 h    t         |   ||||       d | _        t        dd       | _        d| _        y )Nr%   F)rr   rB   _handling_futurer   _context
_did_throwr}   s        r9   rB   zRoute.__init__S  s6     	t[9BF*./?*Fr8   c                 L    t        j                         | _        | j                  S r>   )r   r   r   r@   s    r9   _start_handlingzRoute._start_handling[  s     ' 0$$$r8   donec                 T    | j                   }|sJ d | _         |j                  |       y r>   )r   r   )rA   r   chains      r9   _report_handledzRoute._report_handled_  s*    %%u $r8   c                 2    | j                   st        d      y )NzRoute is already handled!)r   r   r@   s    r9   _check_not_handledzRoute._check_not_handlede  s    $$344 %r8   c                 "    d| j                    dS )Nz<Route request=r   )requestr@   s    r9   r   zRoute.__repr__i  s     a00r8   c                 2    t        | j                  d         S )Nr   )r   rx   r@   s    r9   r   zRoute.requestl  s    D--i899r8   	errorCodec                 N    K    j                   fd       d {    y 7 w)Nc                  `    j                  j                  j                  dd d i            S )Nabortr   _race_with_page_closer   r   )r   rA   s   r9   <lambda>zRoute.abort.<locals>.<lambda>r  s4    D..""#Y r8   _handle_route)rA   r   s   ``r9   r   zRoute.abortp  s$       

 
	
 
	
   %#%statusr/   bodyr   pathcontentTyper   r'   c           
      f    K    j                   fd       d {    y 7 w)Nc            	      2    j                         S r>   )_inner_fulfill)r  r  r/   r   r  r   rA   r  s   r9   r   zRoute.fulfill.<locals>.<lambda>  s!    D''tT; r8   r   )rA   r  r/   r  r   r  r  r   s   ````````r9   fulfillzRoute.fulfill}  s+         
 	
 	
s   1/1c                 z  K   t        t                     }|"|t        d      t        j                  |      }|r|d= |j                  d      r|d   n|j                  |d<   |j                  d      r|d   n|j                  |d<   ddlm	}	 |X|Vt        ||	      rJ|j                  j                  | j                  u r|j                  |d<   n|j                          d {   }d}
t        |t              r$||d<   d	|d
<   t!        |j#                               }
nt        |t$              r7t'        j(                  |      j+                         |d<   d|d
<   t!        |      }
nT|rR|d= t-        |      j/                         }t'        j(                  |      j+                         |d<   d|d
<   t!        |      }
|j                  di       j1                         D ci c]  \  }}|j3                         t        |      ! }}}|j                  d      r	|d   |d<   n;|rd|d<   n3|r1t5        j6                  t        t-        |                  d   xs d|d<   |
rd|vrt        |
      |d<   t9        |      |d<   | j;                  | j<                  j?                  dd |             d {    y 7 c c}}w 7 w)Nz*Can specify either body or json parametersr   r  r/   r   r&   fetchResponseUidr  FisBase64Tr  r  r   zapplication/jsonzapplication/octet-streamzcontent-lengthr  ) r!   localsr   
json_utilsr   rT   r  r/   playwright._impl._fetchr'   r   _request_connection
_fetch_uidr  r4   lenr   r6   rU   rV   rW   r   
read_bytesrH   lower	mimetypes
guess_typerI   r   r   r   )rA   r  r/   r  r   r  r  r   paramsr'   lengthfile_contentkvs                 r9   r  zRoute._inner_fulfill  s     "&(+HII##D)Dz"$*JJx$8x hoo 8 &,ZZ	%:y!@P@P 9 <|Hk1R$$00D4D4DD191D1DF-.!)0DdC !F6N!&F:'Fe$#--d3::<F6N!%F:YFv:002L#--l;BBDF6N!%F:&F17Ir1J1P1P1RSA1779c!f$SS::m$&,]&;GN#&8GN#$$Sd_5a8V<V N# &g5(+FG$%-g6y((););ItV)TUUU? 1$ T 	Vs2   C"J;$J0%C8J;$J3B)J;*J9+J;3J;callbackc                    K   | j                          	  |        d {    | j                  d       y 7 # t        $ r}d| _        |d }~ww xY wwNT)r   r   r   r   )rA   r  es      r9   r   zRoute._handle_route  sP     !	*  &  	"DOG	s1   A
7 57 A7 	A 	A		AAr-   r.   r0   maxRedirects
maxRetriestimeoutc           
      x    K    j                   j                   fd       d {   S 7 w)Nc            
      r    j                   j                  j                  j                         S )N)r   r!  r"  )r   r   _inner_fetch)r/   r   r!  r.   r0   rA   r"  r-   s   r9   r   zRoute.fetch.<locals>.<lambda>  s=    DMM))66)% 7 	 r8   )r  wrap_api_call)rA   r-   r.   r/   r0   r   r!  r"  s   ````````r9   fetchzRoute.fetch  s6      %%33	 	
 
 	
 
s   ):8:c                    K   t        t        t        t                           }| j	                          | j
                  j                  |       | j                  d       y wNF)r   r,   r!   r  r   r   r   r   )rA   r-   r.   r/   r0   r   s         r9   fallbackzRoute.fallback  sI      35Efh5OP	!..y9U#s   AA!c                     K   t        t        t        t                           d fd} j	                  |       d {   S 7 w)Nc                  z   K   j                   j                          j                  d       d {    y 7 wr)  )r   r   _inner_continue)r   rA   s   r9   _innerzRoute.continue_.<locals>._inner  s-     LL229=&&u---s   0;9;rC   )r   r,   r!   r  r   )rA   r-   r.   r/   r0   r.  r   s   `     @r9   	continue_zRoute.continue_  s<      35Efh5OP		. ''////s   =AAAis_fallbackc                   K   | j                   j                  }| j                  | j                  j	                  dd |j
                  |j                  |j                  rt        |j                        nd |j                  -t        j                  |j                        j                         nd |d             d {    y 7 w)Ncontinue)r-   r.   r/   r0   
isFallback)r   r{   r   r   r   r-   r.   r/   rI   r?   rU   rV   rW   )rA   r0  optionss      r9   r-  zRoute._inner_continue  s     ,,22((MM";;%nn>Eoo)'//:SW #33? (()A)ABIIK!"-
 	
 	
s   B:C<C=Cc                 N    K    j                   fd       d {    y 7 w)Nc                  `     j                   j                  j                  dd di            S )NredirectNavigationRequestr-   r   rA   r-   s   r9   r   z6Route._redirected_navigation_request.<locals>.<lambda>   s-    D..""#>uclS r8   r   r8  s   ``r9   _redirected_navigation_requestz$Route._redirected_navigation_request  s$       
 	
 	
r   futurec           	      .  K   t        j                  |      }t        |dt        t        j                  | j
                        dd       xs
 t                      | j                  j                         }t        j                  ||gt         j                         d {    |j                         r.|j                         rt        t        |j                               |j                         r t        j                  |d       d {    y y 7 s7 w)N__pw_stack__return_whenT)return_exceptions)r   create_tasksetattrgetattrcurrent_task_loopr   r   r   waitFIRST_COMPLETEDr   	exceptionr   BaseExceptiongather)rA   r:  futtarget_closed_futures       r9   r   zRoute._race_with_page_close%  s     !!&)G((4ndK &#%		
  $||AACll&'//
 	
 	
 88:#--/}cmmo66$$&..=== '	
 >s%   BDDA,D
DDD)rD   zasyncio.Future[bool]rC   r>   )NNNNNNN)NNNN)F)"r1   r2   r3   r   r4   r
   rB   r   r   r   r   r   r   ra   r   r   intr   r6   r   r   r  r  r   r   r   r'  r*  r/  r-  r9  r	   r   r   r   s   @r9   r   r   R  s    " *- 58 GK 	 %D T 51# 1 : : :
S 
D 
 "&"&!%"&

 c3h
 CJ	

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

 S%(
 
 
 
 

2 "&+/
$
$ 
$ c3h	
$
 S%(
$ 

$ "&+/00 0 c3h	0
 S%(0 
0
 
$ 
,
 
 
>) > >r8   r   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edee   fd	       Zdd
ededdfdZdeeef   ddfdZy)ServerWebSocketRoutec                     || _         y r>   )_ws)rA   wss     r9   rB   zServerWebSocketRoute.__init__:  s	    r8   handlerrD   Nc                 &    || j                   _        y r>   )rP  _on_server_messagerA   rR  s     r9   
on_messagezServerWebSocketRoute.on_message=  s    &-#r8   c                 &    || j                   _        y r>   )rP  _on_server_closerU  s     r9   on_closezServerWebSocketRoute.on_close@  s    $+!r8   c                     t        d      )Nz>connectToServer must be called on the page-side WebSocketRoute)NotImplementedErrorr@   s    r9   connect_to_serverz&ServerWebSocketRoute.connect_to_serverC  s    !L
 	
r8   c                 4    | j                   j                  d   S r   )rP  rx   r@   s    r9   r-   zServerWebSocketRoute.urlH  s    xx$$U++r8   c                 `    t        | j                  j                  j                  dg             S N	protocols)listrP  rx   rT   r@   s    r9   r`  zServerWebSocketRoute.protocolsL  s$    DHH))--k2>??r8   codereasonc                 Z    | j                   j                  j                  dd ||dd       y )NcloseServerTrb  rc  wasClean)rP  r   send_may_failrA   rb  rc  s      r9   closezServerWebSocketRoute.closeP  s.    ''  	
r8   messagec                    t        |t              r+| j                  j                  j	                  dd |dd       y | j                  j                  j	                  dd t        j                  |      j                         dd       y )NsendToServerFrk  r  T)r   r4   rP  r   rh  rU   rV   rW   rA   rk  s     r9   r   zServerWebSocketRoute.send[  sl    gs#HH++'u&M HH++",,W5<<>DQr8   )rQ  WebSocketRouterC   NN)r1   r2   r3   rB   r   r   r4   r6   r   rV  r   rL  rY  r\  r   r-   r   r`  rj  r   r7   r8   r9   rN  rN  9  s    .(E#u*,=+>+C"D . .,(3-#)G)L M ,RV ,

 ,S , , @49 @ @	
# 	
c 	
T 	

E#u*- 
$ 
r8   rN  c            
       6    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ede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 )rp  rb   rc   rd   re   rD   Nc                    t         |   ||||       d | _        d | _        d | _        d | _        t        |       | _        d| _        | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         y )NFmessageFromPagemessageFromServer	closePagere  )rr   rB   _on_page_message_on_page_closerT  rX  rN  _server
_connectedr   on_channel_message_from_page_channel_message_from_server_channel_close_page_channel_close_serverr}   s        r9   rB   zWebSocketRoute.__init__i  s     	t[9NR 	 QU  	 ,D1*D,K,KL,d.O.OPd&>&>?(B(BCr8   eventc                     | j                   r7| j                  |d   rt        j                  |d                y |d          y | j                  r| j                  j                  dd |       y y )Nr  rk  rm  )rw  rU   r   rz  r   rh  rA   r  s     r9   r|  z)WebSocketRoute._channel_message_from_page}  si      !!$   y!12 9%
 __MM''eD r8   c                     | j                   r7| j                  |d   rt        j                  |d                y |d          y | j                  j	                  dd |       y )Nr  rk  
sendToPage)rT  rU   r   r   rh  r  s     r9   r}  z+WebSocketRoute._channel_message_from_server  s]    ""##$   y!12 9% MM''dEBr8   c                     | j                   r| j                  |d   |d          y | j                  j                  dd |       y )Nrb  rc  re  )rx  r   rh  r  s     r9   r~  z"WebSocketRoute._channel_close_page  s9    fuX?MM''tUCr8   c                     | j                   r| j                  |d   |d          y | j                  j                  dd |       y )Nrb  rc  rv  )rX  r   rh  r  s     r9   r  z$WebSocketRoute._channel_close_server  s9      !!%-xAMM''T5Ar8   c                      | j                   d   S r   r   r@   s    r9   r-   zWebSocketRoute.url        ''r8   c                 L    t        | j                  j                  dg             S r_  )ra  rx   rT   r@   s    r9   r`  zWebSocketRoute.protocols  s     D%%))+r:;;r8   rb  rc  c                    K   	 | j                   j                  dd ||dd       d {    y 7 # t        $ r Y y w xY ww)Nrv  Trf  )r   r   r   ri  s      r9   rj  zWebSocketRoute.close  sI     	--$$TDFPT#U    		s(   ?$0 .0 ?0 	<?<?c                     | j                   rt        d      d| _         | j                  j                  dd        t	        d| j
                        S )NzAlready connected to the serverTconnectrp  )rz  r   r   rh  r   ry  r@   s    r9   r\  z WebSocketRoute.connect_to_server  sB    ??9::##It4$dll33r8   rk  c                     t        |t              r!| j                  j                  dd |dd       y | j                  j                  dd t	        j
                  |      j                         dd       y )Nr  Frn  T)r   r4   r   rh  rU   rV   rW   ro  s     r9   r   zWebSocketRoute.send  sc    gs#MM''dU$K MM''%//8??A $r8   rR  c                     || _         y r>   )rw  rU  s     r9   rV  zWebSocketRoute.on_message  s
     'r8   c                     || _         y r>   )rx  rU  s     r9   rY  zWebSocketRoute.on_close  s
    %r8   c                    K   | j                   ry 	 | j                  j                  dd        d {    y 7 # t        $ r Y y w xY ww)NensureOpened)rz  r   r   r   r@   s    r9   _after_handlezWebSocketRoute._after_handle  sJ     ??	--$$    		s1   A8 68 A8 	AAAArq  )rD   rp  rC   )r1   r2   r3   r   r4   r
   rB   r|  r}  r~  r  r   r-   r   r`  rL  rj  r\  r   r6   r   r   r   rV  r   rY  r  r   r   s   @r9   rp  rp  h  s\   D"D*-D58DGKD	D(E E EC$ C4 CD D$ DB4 BD B (S ( ( <49 < < C 4 4E#u*- $ ((E#u*,=+>+C"D ( (&(3-#)G)L M &RV &
r8   rp  c                   d    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y
)WebSocketRouteHandlerbase_urlr-   rR  c                 .    || _         || _        || _        y r>   )	_base_urlr-   rR  )rA   r  r-   rR  s       r9   rB   zWebSocketRouteHandler.__init__  s     "r8   handlersrD   c                 ^   g }d}| D ]  }t        |j                  t              r|j                  d|j                  i       ;t        |j                  t        j
                        r<|j                  |j                  j                  t        |j                        d       d} |rddigS |S )NFglob)regexSource
regexFlagsTz**/*)r   r-   r4   rX   rePatternpatternr#   )r  patternsall_urlsrR  s       r9   prepare_interception_patternsz3WebSocketRouteHandler.prepare_interception_patterns  s      	 G'++s+ 56GKK4'.{{':':&8&E  	  V$%%r8   ws_urlc                 F    t        | j                  || j                  d      S r  )r"   r  r-   )rA   r  s     r9   matcheszWebSocketRouteHandler.matches  s    4>>6488TBBr8   Nc                    K   | j                  |      }t        j                  |      r
| d {    |j                          d {    y 7 7 wr>   )rR  r   iscoroutiner  )rA   websocket_routecoro_or_futures      r9   handlezWebSocketRouteHandler.handle  sF     o6~.   ++--- !-s!   ,AAAAAA)r  rp  rD   N)r1   r2   r3   r   r4   r   r   rB   staticmethodr   r   r  r   r  r  r7   r8   r9   r  r    sp    3-  /	 ./	d ,Cc Cd C.r8   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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   rb   rc   rd   re   rD   Nc                    t         |   ||||       t        | j                  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	<   |d
   | j                  j                  d
<   t        t        t        | j                  d               | _
        d | _        t        j                         | _        y )Nr   r   ri   rj   rk   rl   rm   rn   ro   rp   r/   )rr   rB   r   rx   r  r|   rv   rw   r   r   ry   _raw_headers_futurer   r   _finished_future)rA   rb   rc   rd   re   r   r~   s         r9   rB   zResponse.__init__  sV    	t[9!-d.?.?	.J!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0;<%
! JN 6=nn6Fr8   c                 <    d| j                   d| j                   dS )Nz<Response url=z	 request=r   )r-   r   r@   s    r9   r   zResponse.__repr__  s    |9T\\N!DDr8   c                      | j                   d   S r   r   r@   s    r9   r-   zResponse.url  r  r8   c                 v    | j                   d   dk(  xs& | j                   d   dk\  xr | j                   d   dk  S )Nr  r      i+  r   r@   s    r9   okzResponse.ok  sJ       *a/ 
h'3.U43D3DX3NRU3U	
r8   c                      | j                   d   S )Nr  r   r@   s    r9   r  zResponse.status&  s      **r8   c                      | j                   d   S )N
statusTextr   r@   s    r9   status_textzResponse.status_text*  s      ..r8   c                 6    | j                   j                         S r>   )ry   r/   r@   s    r9   r/   zResponse.headers.  s    ((0022r8   c                      | j                   d   S )NfromServiceWorkerr   r@   s    r9   from_service_workerzResponse.from_service_worker2  s      !455r8   c                 Z   K   | j                          d {   j                         S 7 wr>   r   r@   s    r9   r   zResponse.all_headers6  r   r   c                 Z   K   | j                          d {   j                         S 7 wr>   r   r@   s    r9   r   zResponse.headers_array9  r   r   rF   c                 \   K   | j                          d {   j                  |      S 7 wr>   r   r   s     r9   r   zResponse.header_value<  r   r   c                 \   K   | j                          d {   j                  |      S 7 wr>   )r   get_allr   s     r9   header_valueszResponse.header_values?  s&     **,,55d;;,r   c                 0  K   | j                   sot        j                         | _         t        t        | j
                  j                  dd        d {         }| j                   j                  t        |             | j                    d {   S 7 @7 w)NrawResponseHeaders)	r  r   r   r   r   r   r   r   rw   )rA   r/   s     r9   r   zResponse._actual_headersB  s}     '''.~~'7D$mm((( G $$//
70CD---- .s$   ABB
;BBBBc                 V   K   | j                   j                  dd        d {   S 7 w)N
serverAddrr   r   r@   s    r9   server_addrzResponse.server_addrO  s-     ]]''
 
 	
 
    )')c                 V   K   | j                   j                  dd        d {   S 7 w)NsecurityDetailsr  r@   s    r9   security_detailszResponse.security_detailsU  s-     ]]''
 
 	
 
r  c                 V   K   | j                   j                  dd        d {   S 7 w)NhttpVersionr  r@   s    r9   http_versionzResponse.http_version[  s-     ]]''
 
 	
 
r  c                 j   K   d fd}t        j                   |             }t        j                  t        t        t
        t         j                  t         j                  f       j                  |g      t         j                         d {    |j                         r| d {    y y 7  7 w)Nc                  j   K    j                   j                          d {    t        d      7 w)NzTarget closed)r  r   r   r@   s   r9   on_finishedz&Response.finished.<locals>.on_finishedb  s-     --55777(( 8s   313r=  rC   )r   r@  rE  r   r   r   Taskr   r  rF  r   )rA   r  on_finished_tasks   `  r9   finishedzResponse.finisheda  s     	) #..{}=llU7<<789&&(89  //
 	
 	
   """" #	
 #s$   BB3B/B3(B1)B31B3c                    K   | j                   j                  dd        d {   }t        j                  |      S 7 w)Nr  )r   r   rU   r   )rA   binarys     r9   r  zResponse.bodyq  s=     }}))
 
 ''	
s    ><>c                 ^   K   | j                          d {   }|j                         S 7 wr>   )r  rW   )rA   contents     r9   textzResponse.textx  s&     		#~~ $s   -+-c                 d   K   t        j                  | j                          d {         S 7 wr>   )r   r   r  r@   s    r9   r   zResponse.json|  s!     zz		+,,+s   #0.	0c                     | j                   S r>   )r  r@   s    r9   r   zResponse.request  s    }}r8   c                 .    | j                   j                  S r>   )r  r   r@   s    r9   r   zResponse.frame  s    }}"""r8   r   rC   r   ))r1   r2   r3   r   r4   r
   rB   r   r   r-   r   r  rL  r  r  r   r/   r  r   r   r   r   r   r   r  r   r   r  r   r  r  r  r6   r  r  r   r   ra   r   r   r   r   s   @r9   r   r     s   G"G*-G58GGKG	G*E# E (S ( ( 
D 
 
 + + + /S / / 3 3 3 6T 6 687 8>\ >8s 8x} 8< <S	 <.
8J#7 

(A 

C 
# (E ( C  -C -    # #r8   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 )	WebSocketrj  framereceived	framesentsocketerror)CloseFrameReceived	FrameSentr   rb   rc   rd   re   rD   Nc                 T    t            ||||       d _        t        d|       _         j
                  j                  d fd        j
                  j                  d fd        j
                  j                  d fd        j
                  j                  d	 fd
       y )NFr)   	frameSentc                 4    j                  | d   | d         S Nopcoder   )_on_frame_sentr  rA   s    r9   r   z$WebSocket.__init__.<locals>.<lambda>  s    4..vh/?P r8   frameReceivedc                 4    j                  | d   | d         S r  )_on_frame_receivedr  s    r9   r   z$WebSocket.__init__.<locals>.<lambda>  s    4226(3CVF^T r8   socketErrorc                 ^    j                  t        j                  j                  | d         S )Nerror)emitr  Eventsr   r  s    r9   r   z$WebSocket.__init__.<locals>.<lambda>  s"    499Y%5%5%;%;VG_M r8   rj  c                 $    j                         S r>   )	_on_closer  s    r9   r   z$WebSocket.__init__.<locals>.<lambda>  s    1A r8   )rr   rB   
_is_closedr   r   r   r{  r}   s   `    r9   rB   zWebSocket.__init__  s     	t[9&&)
P	
 	T	
 	M	
 	"ABr8   c                 "    d| j                   dS )Nz<WebSocket url=r   )r-   r@   s    r9   r   zWebSocket.__repr__  s     A..r8   c                      | j                   d   S r   r   r@   s    r9   r-   zWebSocket.url  r  r8   r  	predicater"  c                     |2t        t         j                        j                  j	                         }t         d| d      }|j                  t        t        |      d| d| d       |t        j                  j                  k7  r4|j                   t        j                  j                  t        d             |t        j                  j                  k7  r4|j                   t        j                  j                  t        d             |j                   j                  d fd	       |j                   ||       t        |j!                               S )
Nzweb_socket.expect_event()zTimeout z%ms exceeded while waiting for event ""zSocket closedzSocket errorrj  c                  8     j                   j                         S r>   )r   _close_error_with_reasonr@   s   r9   r   z(WebSocket.expect_event.<locals>.<lambda>  s    )L)L)N r8   )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   `    r9   expect_eventzWebSocket.expect_event  s    ?3-??GGIG 8qAB   wiDUG1M	
 I$$***""4)9)9)?)?AWXI$$***""4)9)9)?)?~AVWJJ!N	
 	dE95&v}}77r8   c                    K   | j                  |||      4 d {   }	 d d d       d {     d {   S 7 7 # 1 d {  7  sw Y    xY w7 wr>   )r  )rA   r  r  r"  
event_infos        r9   r  zWebSocket.wait_for_event  s[      $$UIw? 	 	:	 		 	 	 	 	sF   A:A>A<	AAAAAAAAr  r   c                     |dk(  r>| j                  t        j                  j                  t	        j
                  |             y |dk(  r+| j                  t        j                  j                  |       y y N      )r  r  r  r  rU   r   rA   r  r   s      r9   r  zWebSocket._on_frame_sent  sT    Q;IIi&&00&2B2B42HIq[IIi&&00$7 r8   c                     |dk(  r>| j                  t        j                  j                  t	        j
                  |             y |dk(  r+| j                  t        j                  j                  |       y y r  )r  r  r  r  rU   r   r  s      r9   r  zWebSocket._on_frame_received  sT    Q;IIi&&44f6F6Ft6LMq[IIi&&44d; r8   c                     | j                   S r>   )r  r@   s    r9   	is_closedzWebSocket.is_closed  s    r8   c                 f    d| _         | j                  t        j                  j                  |        y r  )r  r  r  r  r  r@   s    r9   r  zWebSocket._on_close  s#    		)""(($/r8   rq  rC   )r1   r2   r3   r   r  r   r4   r
   rB   r   r   r-   r   r   r   r  r   r  rL  r  r  r   r  r  r   r   s   @r9   r  r    s   %	FC"C*-C58CGKC	C(/# / (S ( ( #	88 8 	8
 
!80 HL  %- ?D 	 8S 8 8 8< <C <D <4 0r8   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y)rw   r/   rD   Nc                     || _         t        t              | _        |D ](  }d| j                  |d   j	                            |d   <   * y )NTrF   rG   )_headers_arrayr   r   _headers_mapr  )rA   r/   headers      r9   rB   zRawHeaders.__init__  sN    %8CD8I 	NFIMDfVn2245fWoF	Nr8   c                 *    t        t        |             S r>   )rw   rI   )r/   s    r9   r   z#RawHeaders._from_headers_dict_lossy  s    +G455r8   rF   c                 z    | j                  |      }|sy |j                         dk(  rdnd}|j                  |      S )Nz
set-cookier   z, )r  r  r   )rA   rF   values	separators       r9   rT   zRawHeaders.get  s9    d# JJLL8Dd	~~f%%r8   c                 j    t        | j                  |j                            j                               S r>   )ra  r  r  keysr   s     r9   r  zRawHeaders.get_all  s'    D%%djjl388:;;r8   c                     i }| j                   j                         D ]$  }t        t        | j	                  |            ||<   & |S r>   )r  r  r   r4   rT   )rA   r  rF   s      r9   r/   zRawHeaders.headers  sB    %%**, 	5DTXXd^4F4L	5r8   c                     | j                   S r>   )r  r@   s    r9   r   zRawHeaders.headers_array  s    """r8   )r1   r2   r3   r   rB   r  r
   r4   r   r   rT   r   r  r/   r   r7   r8   r9   rw   rw     s    N N N 6$sCx. 6\ 6 6& & &<C <DI <c3h #| #r8   rw   )Jr   rU   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   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<   r4   rI   r_   ra   r   rN  rp  r  r   r  rw   r7   r8   r9   <module>r/     sI        	 #  !       + K  ; +@3-3*% *6 6tCH~ ,  &7!89d4S>"#DN*l N*bd>L d>N, ,^k\ k\). ).XC#| C#LR0 R0j# #r8   