
    >OOf+                        d g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m	Z	 ddl
mZ ddlmZ ddlmZmZ ej"                  d e	ej$                  eef   ej(                  ej*                  eef      f   Ze G d	 d
             Z ej0                  dej2                        Z ej0                  dej2                        Z G d d ej8                  eef         Zy)Cookies    N)	dataclass)Cookie	CookieJar)_unquote)urlparse   )CookieConflictRequestsErrorc                       e Zd ZU eed<   eed<   dZeed<   dZeed<   dZeed<   dZ	eed	<   d
Z
eed<   dZeed<   ed        Zed        Zedefd       Zd Zedefd       ZdefdZy)
CurlMorselnamevalue hostnameF
subdomains/pathsecurer   expires	http_onlyc                     | dk(  S )NTRUE ss    [/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/curl_cffi/requests/cookies.py
parse_boolzCurlMorsel.parse_bool"   s    F{    c                     | rdS dS )Nr   FALSEr   r   s    r   	dump_boolzCurlMorsel.dump_bool&   s    v''r   set_cookie_linec                     |j                         j                  d      \  }}}}}}}|r|d   dk(  rd}	|dd  }
nd}	|}
 | |
| j                  |      || j                  |      t        |      |t	        |      |	      S )N	r   #T
   F)r   r   r   r   r   r   r   r   )decodesplitr   intr   )clsr#   r   r   r   r   r   r   r   r   domains              r   from_curl_formatzCurlMorsel.from_curl_format*   s     ""$**40	
s*Ibc]FIF~~j1>>&)L5/	
 		
r   c           	         | j                   s/t        dj                  | j                  | j                              dj                  | j                   | j                  | j                        | j                  | j                  | j                        t        | j                        | j                  | j                  g      S )Nz!Domain not found for cookie {}={}r%   )r   r   formatr   r   joinr"   r   r   r   strr   selfs    r   to_curl_formatzCurlMorsel.to_curl_formatG   s    }} C J J499VZV`V` abbyyt/		t{{+DLL!		



 
	
r   cookiec                      | |j                   |j                  xs d|j                  |j                  |j                  |j
                  t        |j                  xs d      d      S )Nr   r   F)r   r   r   r   r   r   r   r   )r   r   r,   domain_initial_dotr   r   r*   r   )r+   r5   s     r   from_cookiejar_cookiez CurlMorsel.from_cookiejar_cookieV   sT    ,,$"]]00==+!,	
 		
r   returnc           
         t        di ddd| j                  d| j                  dd ddd| j                  d	d
dt	        | j                  j                  d            d| j                  dt	        | j                        d| j                  d| j                  dk(  rd n| j                  d| j                  dk(  rd
nddd dd dt        | j                         ddS )Nversionr   r   r   portport_specifiedFr,   domain_specifiedTr7   .r   path_specifiedr   r   discardcommentcomment_urlrest)r   rfc2109r   )r   r   r   r   bool
startswithr   r   r   dictr   r2   s    r   to_cookiejar_cookiezCurlMorsel.to_cookiejar_cookiec   s     


 **
 	

 !
 ==
 "
  $DMM$<$<S$AB
 
  		?
 ;;
 !LLA-D4<<
 !LLA-D5
 
  !
" 4>>"24#
$ %
 	
r   N)__name__
__module____qualname__r1   __annotations__r   r   rF   r   r   r   r*   r   staticmethodr   r"   classmethodbytesr-   r4   r   r8   rI   r   r   r   r   r      s    
IJHcJD#OFDGSIt  ( ( 
u 
 
8
 

6 

 


V 
r   r   z:\d+$z\.\d+$c                      e Zd ZdZddej
                  e   ddfdZdefdZ	dej                  e   fdZdej                  e   fd	Zdd
ededededdf
dZ	 	 	 dd
edej
                  e   dej
                  e   dej
                  e   dej
                  e   f
dZ	 	 dd
edej
                  e   dej
                  e   ddfdZddej
                  e   dej
                  e   ddfdZddej
                  e   ddfdZd
ededdfdZd
edefdZd
eddfdZdefdZdej0                  e   fdZdefdZdefdZy)r   z-
    HTTP Cookies, as a mutable mapping.
    Ncookiesr9   c                    |t        |t              rKt               | _        t        |t              r+|j	                         D ]  \  }}| j                  ||        y y t        |t              r,t               | _        |D ]  \  }}| j                  ||        y t        |t              r<t               | _        |j                  D ]  }| j                  j                  |        y || _        y N)	
isinstancerH   r   jaritemssetlistr   
set_cookie)r3   rR   keyr   r5   s        r   __init__zCookies.__init__   s    ?j$7 {DH'4(")--/ )JCHHS%() ) & {DH% %
Ue$%) {DH!++ ,##F+, DHr   c                 "   t        |j                        d   }|dk(  r|j                  j                  dd      }t        j                  d|d      }|j                         }|j                  d      dk(  rt        j                  |      s|dz  }|S )z
        Almost equivalent to the eff_request_host function in:
            https://github.com/python/cpython/blob/3.11/Lib/http/cookiejar.py#L636
        r	   r   Hostr?   z.local)
r   urlheadersgetcut_port_resublowerfindIPV4_REsearch)r3   requesthosts      r   _eff_request_hostzCookies._eff_request_host   s}    
 $Q'2:??&&vr2D r4+zz|99S>Rt(<HDr   c                 P   | j                   j                  j                          g }	 t        t	        j                               x| j                   j
                  _        | _        | j                   D ]J  }t        j                  |      }|j                  s| j                  |      |_	        |j                  |       L 	 | j                   j                  j                          | j                   j                          |S # | j                   j                  j                          w xY w)zMthe process is similar to `cookiejar.add_cookie_header`, but load all cookies)rV   _cookies_lockacquirer*   time_policy_nowr   r8   r   rk   appendreleaseclear_expired_cookies)r3   ri   morselsr5   morsels        r   get_cookies_for_curlzCookies.get_cookies_for_curl   s    &&(	-03DIIK0@@DHH!DI(( '#99&A&*&<&<W&EFOv&	' HH""**,&&( HH""**,s   BC? ?&D%ru   c                     |D ]-  }|j                         }| j                  j                  |       / | j                  j                          y rT   )rI   rV   rZ   rt   )r3   ru   rv   r5   s       r   update_cookies_from_curlz Cookies.update_cookies_from_curl   sC     	(F//1FHH'	( 	&&(r   r   r   r,   r   c                    |j                  d      r|du rt        j                  d       d}n7|j                  d      r&|du s|s|dk7  rt        j                  d       d}d}d}i d	d
d|d|ddddd|dt        |      d|j                  d      d|dt        |      d|dddddddddddidd}t	        di |}| j
                  j                  |       y)zU
        Set a cookie value by name. May optionally include domain and path.
        z	__Secure-Fz9`secure` changed to True for `__Secure-` prefixed cookiesTz__Host-r   z^`host` changed to True, `domain` removed, `path` changed to `/` for `__Host-` prefixed cookiesr   r;   r   r   r   r<   Nr=   r,   r>   r7   r?   r   r@   r   r   rA   rB   rC   rD   HttpOnlyrE   r   )rG   warningswarnrF   r   rV   rZ   )r3   r   r   r,   r   r   kwargsr5   s           r   rX   zCookies.set   sm   
 ??;'FeOMMUVF__Y'Vu_$RU+MM1 FFD
q
D
 U
 D	

 e
 f
 V
 !&"3"3C"8
 D
 d4j
 f
 t
 t
 t
 4
  Z&!
" u#
& !&!F#r   defaultc                    d}d}| j                   D ]  }|j                  |k(  s||j                  |k(  s%||j                  |k(  s7|o|j	                  |j                        sTt        |j                        j	                  |      s0||j                  k7  r!d| d| d|j                   d}t        |      |j                  }|j                  xs d} ||S |S )z
        Get a cookie by name. May optionally include domain and path
        in order to specify exactly which cookie to retrieve.
        Nr   z!Multiple cookies exist with name=z on z and z., add domain parameter to suppress this error.)rV   r   r,   r   endswithr1   r   r
   )	r3   r   r   r,   r   r   matched_domainr5   messages	            r   rb   zCookies.get   s     hh 	=F{{d">V]]f%<|v{{d': "-$2$;$;FMM$J$'$6$?$?$O % 5 #DD6#1"2% GD!D $
 #1"99 &)/)<"%	=( =Nr   c                 h   ||| j                   j                  |||      S | j                   D cg c]5  }|j                  |k(  r$||j                  |k(  r||j                  |k(  r|7 }}|D ]=  }| j                   j                  |j                  |j                  |j                         ? yc c}w )z
        Delete a cookie by name. May optionally include domain and path
        in order to specify exactly which cookie to delete.
        N)rV   clearr   r,   r   )r3   r   r,   r   r5   removes         r   deletezCookies.delete	  s     $"288>>&$55 ((
{{d"6==F#:!4	 
 
  	DFHHNN6==&++v{{C	D
s   :B/c                     g }||j                  |       ||J |j                  |        | j                  j                  |  y)z
        Delete all cookies. Optionally include a domain and path in
        order to only delete a subset of all the cookies.
        N)rr   rV   r   )r3   r,   r   argss       r   r   zCookies.clear!  sK    
 KK%%%KKr   c                 r    t        |      }|j                  D ]  }| j                  j                  |        y rT   )r   rV   rZ   )r3   rR   r5   s      r   updatezCookies.update.  s1    '"kk 	(FHH'	(r   c                 &    | j                  ||      S rT   )rX   r3   r   r   s      r   __setitem__zCookies.__setitem__3  s    xxe$$r   c                 B    | j                  |      }|t        |      |S rT   )rb   KeyErrorr   s      r   __getitem__zCookies.__getitem__6  s#    =4. r   c                 $    | j                  |      S rT   )r   )r3   r   s     r   __delitem__zCookies.__delitem__<  s    {{4  r   c                 ,    t        | j                        S rT   )lenrV   r2   s    r   __len__zCookies.__len__?  s    488}r   c                 (    d | j                   D        S )Nc              3   4   K   | ]  }|j                     y wrT   )r   ).0r5   s     r   	<genexpr>z#Cookies.__iter__.<locals>.<genexpr>C  s     33s   rV   r2   s    r   __iter__zCookies.__iter__B  s    3$((33r   c                 (    | j                   D ]  } y y)NTFr   )r3   _s     r   __bool__zCookies.__bool__E  s     	A	r   c                     dj                  | j                  D cg c],  }d|j                   d|j                   d|j                   d. c}      }d| dS c c}w )Nz, z<Cookie =z for z />z	<Cookies[z]>)r0   rV   r   r   r,   )r3   r5   cookies_reprs      r   __repr__zCookies.__repr__J  s]    yyZ^ZbZbcPVx}Afll^5sKc
 <.++ ds   1ArT   )r   r   F)NNN)NN)rJ   rK   rL   __doc__typingOptionalCookieTypesr\   r1   rk   Listr   rw   ry   rX   rb   r   r   r   r   r   r   r*   r   Iteratorr   rF   r   r   r   r   r   r   r      s    <  "C  v{{:/F ")J0G )$$ $$C $$ $$ $$]a $$R )-'+%)## %# $	#
 ooc"# 
	#P (,%)	DD $D ooc"	D
 
D0FOOC0 vs?S _c (fook: (d (
% %C %D %  ! ! ! 4&//#. 4$ 
,# ,r   )__all__rero   r   r|   dataclassesr   http.cookiejarr   r   http.cookiesr   urllib.parser   errorsr
   r   UnionDictr1   r   Tupler   r   compileASCIIrc   rg   MutableMappingr   r   r   r   <module>r      s   
 + 	    ! , ! ! 1lly&++c3h/V\\#s(=S1TT
 b
 b
 b
J bjj288,
"**Y
)N,f##CH- N,r   