
    tiƉ                        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 j                  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/      ZKy)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                   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/var/www/html/venv/lib/python3.12/site-packages/playwright/_impl/_network.pyr+   r+   H   s=    	#SMd38n%%uS%Z())r7   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    r8   __init__z$SerializedFallbackOverrides.__init__P   s    "&%)1515r7   returnN)r0   r1   r2   rA   r6   r7   r8   r;   r;   O   s    6r7   r;   r.   rC   c                 ^    | j                         D cg c]  \  }}|||d c}}S c c}}w )N)namevalue)items)r.   rE   rF   s      r8   serialize_headersrH   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)rI   outclientCertificate
out_recordrL   rM   pfx_pathrO   	cert_pathrQ   key_paths              r8   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            
       ,    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)jT                  fd$Z+d(d%Z, xZ-S ))RequestparenttypeguidinitializerrC   Nc           
      F   t         |   ||||       t        |j                  d            | _        d | _        | j                  r| | j                  _        d | _        dddddddddd	| _        t        | j                  d         | _
        d | _        t               | _        y )NredirectedFromr   )		startTimedomainLookupStartdomainLookupEndconnectStartsecureConnectionStart
connectEndrequestStartresponseStartresponseEndr.   )superrA   r   rS   _redirected_from_redirected_to_failure_text_timing
RawHeaders_initializer_provisional_headers_all_headers_futurer;   _fallback_overridesr@   ra   rb   rc   rd   	__class__s        r8   rA   zRequest.__init__   s     	t[95JOO,-6
 48  37D!!0,0!#!%'
(
 %/t/@/@/K$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    txxl(4;;/CCr7   	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.   r/   )rS   rz   r,   r-   r.   
isinstancer3   encoder>   r5   jsondumps)r@   r   	post_datas      r8   _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 #r7   c                 l    t        t        | j                  j                  xs | j                  d         S Nr,   )r   r3   rz   r,   rw   r?   s    r8   r,   zRequest.url   s+    C1155Q9J9J59QRRr7   c                      | j                   d   S )NresourceTyperw   r?   s    r8   resource_typezRequest.resource_type   s      00r7   r)   c                 l    t        t        d   t        | j                  j	                  d                  S )Nr)   serviceWorker)r   r   r   rw   rS   r?   s    r8   service_workerzRequest.service_worker   s0    X!$"3"3"7"7"HI
 	
r7   c                 l    t        t        | j                  j                  xs | j                  d         S )Nr-   )r   r3   rz   r-   rw   r?   s    r8   r-   zRequest.method   s+    C1188WD<M<Mh<WXXr7   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)r@   r   s     r8   r   zRequest.sizes   sR     (BCC&&++
 
 	
 )
s!   AA0AAAAc                     | j                   j                  }|r|j                         S | j                  j	                  d      }|#t        j                  |      j                         S y Nr/   )rz   r>   rV   rw   rS   rT   	b64decode)r@   database64_post_datas      r8   r   zRequest.post_data   s]    ''88;;= ,,00<'##$45<<>>r7   c                     | j                   }|sy | 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   )r@   r   content_types      r8   post_data_jsonzRequest.post_data_json   st    NN	||N3.,>	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   )rz   r>   rw   rS   rT   r   r?   s    r8   r>   zRequest.post_data_buffer   sV    ##44++<<<  ,##D$5$5j$ABBr7   Responsec                 h   K   t        | j                  j                  dd        d {         S 7 w)Nr   )r   r   r   r?   s    r8   r   zRequest.response   s5     $--$$ 
 	
s   %20	2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.)rw   rS   r   r   r   _pagejoinr@   r   s     r8   r   zRequest.frame   sj      $$W-RSSWl4+<+<W+EF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=   )rr   r?   s    r8   redirected_fromzRequest.redirected_from
  s    $$$r7   c                     | j                   S r=   )rs   r?   s    r8   redirected_tozRequest.redirected_to  s    """r7   c                     | j                   S r=   )rt   r?   s    r8   failurezRequest.failure  s    !!!r7   c                     | j                   S r=   ru   r?   s    r8   timingzRequest.timing  s    ||r7   response_end_timingc                 f    || j                   d<   | j                   d   dk(  r|| j                   d<   y y )Nrp   ro   rg   r   )r@   r   s     r8   _set_response_end_timingz Request._set_response_end_timing  s4    &9]#<<(B.,?DLL) /r7   c                     | j                   j                  }|r#t        j                  |      j                         S | j                  j                         S r=   )rz   r.   rv   _from_headers_dict_lossyrx   )r@   overrides     r8   r.   zRequest.headers  sE    ++3366x@HHJJ((0022r7   c                 Z   K   | j                          d {   j                         S 7 wr=   _actual_headersr.   r?   s    r8   all_headerszRequest.all_headers&  $     **,,5577,   +)+c                 Z   K   | j                          d {   j                         S 7 wr=   r   headers_arrayr?   s    r8   r   zRequest.headers_array)  $     **,,;;==,r   rE   c                 \   K   | j                          d {   j                  |      S 7 wr=   r   rS   r@   rE   s     r8   header_valuezRequest.header_value,  &     **,,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)
rz   r.   rv   rH   ry   asyncioFuturer   r   
set_result)r@   r   r.   s      r8   r   zRequest._actual_headers/  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   rw   rS   r   r   r   _closed_or_crashed_future)r@   r   pages      r8   _target_closed_futurezRequest._target_closed_future;  sd    W4T5F5F5J5J75ST
 >>##{{>>##---r7   c                 |    t        | j                  j                  d            }|sy t        d|      j                  S )Nr   r'   )r   rw   rS   r   r   r   s     r8   
_safe_pagezRequest._safe_pageF  s6    %d&7&7&;&;G&DEGU#)))r7   rC   r'   rC   rv   )rC   zOptional[Page]).r0   r1   r2   r   r3   r
   rA   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   r`   r`      s^   
"
*-
58
GK
	
8D# DW3M WRV W$ SS S S 1s 1 1 
 2 
 
 Y Y Y
\ 
 8C=   
N 
N 
N (5/  
 4 
   8t 8 %)!4 % % #x	2 # # "# " "   @E @d @
 3 3 387 8>\ >8s 8x} 8
.	.w~~ 	.*r7   r`   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Routera   rb   rc   rd   rC   Nc                 h    t         |   ||||       d | _        t        dd       | _        d| _        y )Nr$   F)rq   rA   _handling_futurer   _context
_did_throwr{   s        r8   rA   zRoute.__init__N  s6     	t[9BF*./?*Fr7   c                 L    t        j                         | _        | j                  S r=   )r   r   r   r?   s    r8   _start_handlingzRoute._start_handlingV  s     ' 0$$$r7   donec                 T    | j                   }|sJ d | _         |j                  |       y r=   )r   r   )r@   r   chains      r8   _report_handledzRoute._report_handledZ  s*    %%u $r7   c                 2    | j                   st        d      y )NzRoute is already handled!)r   r   r?   s    r8   _check_not_handledzRoute._check_not_handled`  s    $$344 %r7   c                 "    d| j                    dS )Nz<Route request=r~   )requestr?   s    r8   r   zRoute.__repr__d  s     a00r7   c                 2    t        | j                  d         S )Nr   )r   rw   r?   s    r8   r   zRoute.requestg  s    D--i899r7   	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   r@   s   r8   <lambda>zRoute.abort.<locals>.<lambda>m  s4    D..""#Y r7   _handle_route)r@   r   s   ``r8   r   zRoute.abortk  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   r@   r   s   r8   r   zRoute.fulfill.<locals>.<lambda>  s!    D''tT; r7   r   )r@   r   r.   r   r   r   r   r   s   ````````r8   fulfillzRoute.fulfillx  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   rS   r   r.   playwright._impl._fetchr&   r   _request_connection
_fetch_uidr   r3   lenr   r5   rT   rU   rV   r   
read_bytesrG   lower	mimetypes
guess_typerH   r   r   r   )r@   r   r.   r   r   r   r   r   paramsr&   lengthfile_contentkvs                 r8   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   )r@   r  es      r8   r   zRoute._handle_route  sP     !	*  &  	"DOG	s1   A
7 57 A7 	A 	A		AAr,   r-   r/   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-   r/   r@   r  r,   s   r8   r   zRoute.fetch.<locals>.<lambda>  s=    DMM))66)% 7 	 r7   )r  wrap_api_call)r@   r,   r-   r.   r/   r  r  r  s   ````````r8   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   )r@   r,   r-   r.   r/   r   s         r8   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   r@   s   r8   _innerzRoute.continue_.<locals>._inner  s-     LL229=&&u---s   0;9;rB   )r   r+   r    r  r   )r@   r,   r-   r.   r/   r*  r   s   `     @r8   	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.   r/   
isFallback)r   rz   r   r   r   r,   r-   r.   rH   r>   rT   rU   rV   )r@   r,  optionss      r8   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   r@   r,   s   r8   r   z6Route._redirected_navigation_request.<locals>.<lambda>  s-    D..""#>uclS r7   r   r4  s   ``r8   _redirected_navigation_requestz$Route._redirected_navigation_request  s$       
 	
 	
r   futurec                 <  K   t        j                  |      }t        |dt        t        j                  | j
                        dt        j                  d                   | 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__r   return_whenT)return_exceptions)r   create_tasksetattrgetattrcurrent_task_loopinspectstackr   r   waitFIRST_COMPLETEDr   	exceptionr   BaseExceptiongather)r@   r6  futtarget_closed_futures       r8   r   zRoute._race_with_page_close   s     !!&)G((4ngmmTUFVW	

  $||AACll&'//
 	
 	
 88:#--/}cmmo66$$&..=== '	
 >s%   B"D$D%A,DDDD)rC   zasyncio.Future[bool]rB   r=   )NNNNNNN)NNNN)F)"r0   r1   r2   r   r3   r
   rA   r   r   r   r   r   r   r`   r   r   intr   r5   r   r   r  r  r   r   r   r#  r&  r+  r)  r5  r	   r   r   r   s   @r8   r   r   M  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
 
$ 
,
 
 
>) > >r7   r   loopcoroc                 >    dfd}| j                   |              y )Nc                  F   K   	   d {    y 7 # t         $ r Y y w xY wwr=   )r   )rL  s   r8   _ignore_exceptionz<_create_task_and_ignore_exception.<locals>._ignore_exception6  s$     	JJ 		s(   !  ! 	!!rB   )r<  )rK  rL  rO  s    ` r8   !_create_task_and_ignore_exceptionrP  3  s     	&()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y)ServerWebSocketRoutec                     || _         y r=   )_ws)r@   wss     r8   rA   zServerWebSocketRoute.__init__@  s	    r7   handlerrC   Nc                 &    || j                   _        y r=   )rT  _on_server_messager@   rV  s     r8   
on_messagezServerWebSocketRoute.on_messageC  s    &-#r7   c                 &    || j                   _        y r=   )rT  _on_server_closerY  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                 4    | j                   j                  d   S r   )rT  rw   r?   s    r8   r,   zServerWebSocketRoute.urlN  s    xx$$U++r7   codereasonc                     t        | j                  j                  | j                  j                  j	                  dd ||dd             y )NcloseServerTrb  rc  wasClean)rP  rT  r@  r   r   r@   rb  rc  s      r8   closezServerWebSocketRoute.closeR  sA    )HHNNHH"" $ $	
r7   messagec           
         t        |t              rIt        | j                  j                  | j                  j
                  j                  dd |dd             y t        | j                  j                  | j                  j
                  j                  dd t        j                  |      j                         dd             y )NsendToServerFrj  r  T)
r   r3   rP  rT  r@  r   r   rT   rU   rV   r@   rj  s     r8   r   zServerWebSocketRoute.send`  s    gs#-!!&&"Dg5*Q .!!&&" & 0 0 9 @ @ BPTUr7   )rU  WebSocketRouterB   NN)r0   r1   r2   rA   r   r   r3   r5   r   rZ  r   rJ  r]  r`  r   r,   ri  r   r6   r7   r8   rR  rR  ?  s    .(E#u*,=+>+C"D . .,(3-#)G)L M ,RV ,

 ,S , ,
# 
c 
T 
E#u*- $ r7   rR  c            
           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 )ro  ra   rb   rc   rd   rC   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  )rq   rA   _on_page_message_on_page_closerX  r\  rR  _server
_connectedr   on_channel_message_from_page_channel_message_from_server_channel_close_page_channel_close_serverr{   s        r8   rA   zWebSocketRoute.__init__t  s     	t[9NR 	 QU  	 ,D1*D,K,KL,d.O.OPd&>&>?(B(BCr7   eventc                    | j                   r7| j                  |d   rt        j                  |d                y |d          y | j                  r2t	        | j
                  | j                  j                  dd |             y y )Nr  rj  rl  )rv  rT   r   ry  rP  r@  r   r   r@   r  s     r8   r{  z)WebSocketRoute._channel_message_from_page  sw      !!$   y!12 9%
 __-

DMM..~tUK r7   c                     | j                   r7| j                  |d   rt        j                  |d                y |d          y t        | j                  | j
                  j                  dd |             y )Nr  rj  
sendToPage)rX  rT   r   rP  r@  r   r   r  s     r8   r|  z+WebSocketRoute._channel_message_from_server  sk    ""##$   y!12 9% .

DMM..|T5Ir7   c                     | j                   r| j                  |d   |d          y t        | j                  | j                  j	                  dd |             y )Nrb  rc  re  )rw  rP  r@  r   r   r  s     r8   r}  z"WebSocketRoute._channel_close_page  sG    fuX?-

DMM..}dEJr7   c                     | j                   r| j                  |d   |d          y t        | j                  | j                  j	                  dd |             y )Nrb  rc  ru  )r\  rP  r@  r   r   r  s     r8   r~  z$WebSocketRoute._channel_close_server  sG      !!%-xA-

DMM..{D%Hr7   c                      | j                   d   S r   r   r?   s    r8   r,   zWebSocketRoute.url        ''r7   rb  rc  c                    K   	 | j                   j                  dd ||dd       d {    y 7 # t        $ r Y y w xY ww)Nru  Trf  )r   r   r   rh  s      r8   ri  zWebSocketRoute.close  sI     	--$$TDFPT#U    		s(   ?$0 .0 ?0 	<?<?c                     | j                   rt        d      d| _         t        j                  | j                  j                  dd              t        d| j                        S )NzAlready connected to the serverTconnectro  )ry  r   r   r<  r   r   r   rx  r?   s    r8   r`  z WebSocketRoute.connect_to_server  sV    ??9::MM	
 $dll33r7   rj  c           
      8   t        |t              r5t        | j                  | j                  j                  dd |dd             y t        | j                  | j                  j                  dd t        j                  |      j                         dd             y )Nr  Frm  T)	r   r3   rP  r@  r   r   rT   rU   rV   rn  s     r8   r   zWebSocketRoute.send  s    gs#-

"" $G(O .

"" #)#3#3G#<#C#C#E$(
r7   rV  c                     || _         y r=   )rv  rY  s     r8   rZ  zWebSocketRoute.on_message  s
     'r7   c                     || _         y r=   )rw  rY  s     r8   r]  zWebSocketRoute.on_close  s
    %r7   c                    K   | j                   ry 	 | j                  j                  dd        d {    y 7 # t        $ r Y y w xY ww)NensureOpened)ry  r   r   r   r?   s    r8   _after_handlezWebSocketRoute._after_handle  sJ     ??	--$$    		s1   A8 68 A8 	AAAArp  )rC   ro  rB   )r0   r1   r2   r   r3   r
   rA   r{  r|  r}  r~  r   r,   rJ  ri  r`  r   r5   r   r   r   rZ  r   r]  r  r   r   s   @r8   ro  ro  s  s1   D"D*-D58DGKD	D(
 
 

$ 
4 
 $ 4 D  (S ( ( C 4 
4E#u*- $ *((E#u*,=+>+C"D ( (&(3-#)G)L M &RV &
r7   ro  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,   rV  c                 .    || _         || _        || _        y r=   )	_base_urlr,   rV  )r@   r  r,   rV  s       r8   rA   zWebSocketRouteHandler.__init__  s     "r7   handlersrC   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,   r3   rW   rePatternpatternr"   )r  patternsall_urlsrV  s       r8   prepare_interception_patternsz3WebSocketRouteHandler.prepare_interception_patterns  s      	 G'++s+ 56GKK4'.{{':':&8&E  	  V$%%r7   ws_urlc                 F    t        | j                  || j                  d      S r  )r!   r  r,   )r@   r  s     r8   matcheszWebSocketRouteHandler.matches  s    4>>6488TBBr7   Nc                    K   | j                  |      }t        j                  |      r
| d {    |j                          d {    y 7 7 wr=   )rV  r   iscoroutiner  )r@   websocket_routecoro_or_futures      r8   handlezWebSocketRouteHandler.handle  sF     o6~.   ++--- !-s!   ,AAAAAA)r  ro  rC   N)r0   r1   r2   r   r3   r   r   rA   staticmethodr   r   r  r   r  r  r6   r7   r8   r  r    sp    3-  /	 ./	d ,Cc Cd 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   ra   rb   rc   rd   rC   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                         | _        y )Nr   r   rh   ri   rj   rk   rl   rm   rn   ro   r.   )rq   rA   r   rw   r  ru   rv   r   r   rx   _raw_headers_futurer   r   _finished_future)r@   ra   rb   rc   rd   r   r|   s         r8   rA   zResponse.__init__  sJ    	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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    |9T\\N!DDr7   c                      | j                   d   S r   r   r?   s    r8   r,   zResponse.url4  r  r7   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    r8   okzResponse.ok8  sJ       *a/ 
h'3.U43D3DX3NRU3U	
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                 6    | j                   j                         S r=   )rx   r.   r?   s    r8   r.   zResponse.headersG  s    ((0022r7   c                      | j                   d   S )NfromServiceWorkerr   r?   s    r8   from_service_workerzResponse.from_service_workerK  s      !455r7   c                 Z   K   | j                          d {   j                         S 7 wr=   r   r?   s    r8   r   zResponse.all_headersO  r   r   c                 Z   K   | j                          d {   j                         S 7 wr=   r   r?   s    r8   r   zResponse.headers_arrayR  r   r   rE   c                 \   K   | j                          d {   j                  |      S 7 wr=   r   r   s     r8   r   zResponse.header_valueU  r   r   c                 \   K   | j                          d {   j                  |      S 7 wr=   )r   get_allr   s     r8   header_valueszResponse.header_valuesX  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   rv   )r@   r.   s     r8   r   zResponse._actual_headers[  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    r8   server_addrzResponse.server_addrh  s-     ]]''
 
 	
 
    )')c                 V   K   | j                   j                  dd        d {   S 7 w)NsecurityDetailsr  r?   s    r8   security_detailszResponse.security_detailsn  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   r8   on_finishedz&Response.finished.<locals>.on_finishedu  s-     --55777(( 8s   313r9  rB   )r   r<  rC  r   r   r   Taskr   r  rD  r   )r@   r  on_finished_tasks   `  r8   finishedzResponse.finishedt  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   rT   r   )r@   binarys     r8   r   zResponse.body  s=     }}))
 
 ''	
s    ><>c                 ^   K   | j                          d {   }|j                         S 7 wr=   )r   rV   )r@   contents     r8   textzResponse.text  s&     		#~~ $s   -+-c                 d   K   t        j                  | j                          d {         S 7 wr=   )r   r   r  r?   s    r8   r   zResponse.json  s!     zz		+,,+s   #0.	0c                     | j                   S r=   )r  r?   s    r8   r   zResponse.request  s    }}r7   c                 .    | j                   j                  S r=   )r  r   r?   s    r8   r   zResponse.frame  s    }}"""r7   r   rB   r   )(r0   r1   r2   r   r3   r
   rA   r   r   r,   r   r  rJ  r   r  r   r.   r  r   r   r   r   r   r   r  r   r   r  r   r  r  r5   r   r  r   r   r`   r   r   r   r   s   @r8   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 
# (E ( C  -C -    # #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 )	WebSocketri  framereceived	framesentsocketerror)CloseFrameReceived	FrameSentr   ra   rb   rc   rd   rC   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  r@   s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s    4..vh/?P r7   frameReceivedc                 4    j                  | d   | d         S r  )_on_frame_receivedr  s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s    4226(3CVF^T r7   socketErrorc                 ^    j                  t        j                  j                  | d         S )Nerror)emitr  Eventsr   r  s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s"    499Y%5%5%;%;VG_M r7   ri  c                 $    j                         S r=   )	_on_closer  s    r8   r   z$WebSocket.__init__.<locals>.<lambda>  s    1A r7   )rq   rA   
_is_closedr   r   r   rz  r{   s   `    r8   rA   zWebSocket.__init__  s     	t[9&&)
P	
 	T	
 	M	
 	"ABr7   c                 "    d| j                   dS )Nz<WebSocket url=r~   )r,   r?   s    r8   r   zWebSocket.__repr__  s     A..r7   c                      | j                   d   S r   r   r?   s    r8   r,   zWebSocket.url  r  r7   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 errorri  c                  8     j                   j                         S r=   )r   _close_error_with_reasonr?   s   r8   r   z(WebSocket.expect_event.<locals>.<lambda>  s    )L)L)N r7   )r   r   _parent_timeout_settingsr  r#   reject_on_timeoutr   r  r  r  reject_on_eventr   r   wait_for_eventr   result)r@   r  r  r  waiters   `    r8   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7r7   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  )r@   r  r  r  
event_infos        r8   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  rT   r   r@   r  r   s      r8   r  zWebSocket._on_frame_sent  sT    Q;IIi&&00&2B2B42HIq[IIi&&00$7 r7   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  rT   r   r	  s      r8   r  zWebSocket._on_frame_received  sT    Q;IIi&&44f6F6Ft6LMq[IIi&&44d; r7   c                     | j                   S r=   )r  r?   s    r8   	is_closedzWebSocket.is_closed  s    r7   c                 f    d| _         | j                  t        j                  j                  |        y r  )r  r  r  r  r  r?   s    r8   r  zWebSocket._on_close  s#    		)""(($/r7   rp  rB   )r0   r1   r2   r   r  r   r3   r
   rA   r   r   r,   r   r   r   r  r   r  rJ  r  r  r   r  r  r   r   s   @r8   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 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y)rv   r.   rC   Nc                     || _         t        t              | _        |D ](  }d| j                  |d   j	                            |d   <   * y )NTrE   rF   )_headers_arrayr   r   _headers_mapr  )r@   r.   headers      r8   rA   zRawHeaders.__init__  sN    %8CD8I 	NFIMDfVn2245fWoF	Nr7   c                 *    t        t        |             S r=   )rv   rH   )r.   s    r8   r   z#RawHeaders._from_headers_dict_lossy  s    +G455r7   rE   c                 z    | j                  |      }|sy |j                         dk(  rdnd}|j                  |      S )Nz
set-cookier   z, )r  r  r   )r@   rE   values	separators       r8   rS   zRawHeaders.get  s9    d# JJLL8Dd	~~f%%r7   c                 j    t        | j                  |j                            j                               S r=   )listr  r  keysr   s     r8   r  zRawHeaders.get_all  s'    D%%djjl388:;;r7   c                     i }| j                   j                         D ]$  }t        t        | j	                  |            ||<   & |S r=   )r  r  r   r3   rS   )r@   r   rE   s      r8   r.   zRawHeaders.headers  sB    %%**, 	5DTXXd^4F4L	5r7   c                     | j                   S r=   )r  r?   s    r8   r   zRawHeaders.headers_array  s    """r7   )r0   r1   r2   r   rA   r  r
   r3   r   r   rS   r   r  r.   r   r6   r7   r8   rv   rv     s    N N N 6$sCx. 6\ 6 6& & &<C <DI <c3h #| #r7   rv   )Lr   rT   rA  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   rH   r^   r`   r   AbstractEventLooprP  rR  ro  r  r   r  rv   r6   r7   r8   <module>r,     so         	 #  !      
 + K  ; +@3-3*% *6 6tCH~ ,  &7!89d4S>"#DI*l I*Xc>L c>L	*

#
#	*+4	*		*1 1hz\ zz). ).X|#| |#~R0 R0j# #r7   