
    8Cf                         d dl 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  e j                  d      Z e j                  d      Z e j                  d      Zd	 Zd
edeeee   f   fdZ G d de      Zy)    N)AnyDictListOptional)Cookie)deprecation)RequestParametersu   [ --ÿ()<>@,;:\\"/[\]?={} 	]z\\[0-3][0-7][0-7]z[\\].c           
         | t        |       dk  r| S | d   dk7  s| d   dk7  r| S | dd } d}t        |       }g }d|cxk  r|k  r n nt        j                  | |      }t        j                  | |      }|s|s|j	                  | |d         ndx}}|r|j                  d      }|r|j                  d      }|r8|r||k  r1|j	                  | ||        |j	                  | |dz             |dz   }nF|j	                  | ||        |j	                  t        t        | |dz   |dz    d                   |dz   }d|cxk  r|k  rn dj                  |      S )	N   r   "          )	lenOCTAL_PATTERNsearchQUOTE_PATTERNappendstartchrintjoin)strinreso_matchq_matchjks           U/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/sanic/cookies/request.py_unquoter$      s[   
{c#hl

1v}B3

a)C	ACA
C
q*1*&&sA.&&sA.wJJs12w
Aa Aa AGq1uJJs1Qx JJs1q5z"AAJJs1Qx JJs3s1q51q511567AA' q*1*( 773<    rawreturnc                 n   i }| j                  d      D ]  }|j                  d      \  }}}|j                         }|j                         }|s|s=d|}}t        j	                  |      rWt        |      dkD  r|d   dk(  r|d   dk(  rt        |      }||v r||   j                  |       |g||<    |S )a  Parses a raw cookie string into a dictionary.

    The function takes a raw cookie string (usually from HTTP headers) and
    returns a dictionary where each key is a cookie name and the value is a
    list of values for that cookie. The function handles quoted values and
    skips invalid cookie names.

    Args:
        raw (str): The raw cookie string to be parsed.

    Returns:
        Dict[str, List[str]]: A dictionary containing the cookie names as keys
        and a list of values for each cookie.

    Example:
        ```python
        raw = 'name1=value1; name2="value2"; name3=value3'
        cookies = parse_cookie(raw)
        # cookies will be {'name1': ['value1'], 'name2': ['value2'], 'name3': ['value3']}
        ```
    ;=r   r   r   r   r   )split	partitionstripCOOKIE_NAME_RESERVED_CHARSr   r   r$   r   )r&   cookiestokennamesepvalues         r#   parse_cookier4   3   s    , %'G3 $ ??3/c5zz| d%D%,,T2u:>eAh#o%)s2BUOE7?DM  '"GGDM-$0 Nr%   c                        e Zd ZdZdedee   f fdZdedefdZddedee   dee   f fdZ		 ddedee   dee   f fd	Z
dedef fd
Z xZS )CookieRequestParametersa  A container for accessing single and multiple cookie values.

    Because the HTTP standard allows for multiple cookies with the same name,
    a standard dictionary cannot be used to access cookie values. This class
    provides a way to access cookie values in a way that is similar to a
    dictionary, but also allows for accessing multiple values for a single
    cookie name when necessary.

    Args:
        cookies (Dict[str, List[str]]): A dictionary containing the cookie
            names as keys and a list of values for each cookie.

    Example:
        ```python
        raw = 'name1=value1; name2="value2"; name3=value3'
        cookies = parse_cookie(raw)
        # cookies will be {'name1': ['value1'], 'name2': ['value2'], 'name3': ['value3']}

        request_cookies = CookieRequestParameters(cookies)
        request_cookies['name1']  # 'value1'
        request_cookies.get('name1')  # 'value1'
        request_cookies.getlist('name1')  # ['value1']
        ```
    keyr'   c           	          t        d| d| d| dd       	 | j                  |      }|d   S # t        $ r t        |   |      }Y |d   S w xY w)NzYou are accessing cookie key 'z', which is currently in compat mode returning a single cookie value. Starting in v24.3 accessing a cookie value like this will return a list of values. To avoid this behavior and continue accessing a single value, please upgrade from request.cookies['z'] to request.cookies.get('zY'). See more details: https://sanic.dev/en/guide/release-notes/v23.3.html#request-cookiesgL8@r   )r   _get_prefixed_cookieKeyErrorsuper__getitem__)selfr7   r3   	__class__s      r#   r<   z#CookieRequestParameters.__getitem__   s    ,SE 24 585 9$$'5 )RR 		
	---c2E Qx  	-G',EQx	-s   / AAc                     |j                  d      r| j                  |      S |j                  d      j                  dd      }t	        | j                  |d            S )N_-r   )
startswith__getattribute__rstripreplacer   get)r=   r7   s     r#   __getattr__z#CookieRequestParameters.__getattr__   sO    >>#((--jjo%%c3/488C$%%r%   r1   defaultc                 l    	 | j                  |      d   S # t        $ r t        |   ||      cY S w xY w)Nr   )r9   r:   r;   rF   r=   r1   rH   r>   s      r#   rF   zCookieRequestParameters.get   s>    	.,,T2155 	.7;tW--	.s    33c                 f    	 | j                  |      S # t        $ r t        |   ||      cY S w xY wN)r9   r:   r;   getlistrJ   s      r#   rM   zCookieRequestParameters.getlist   s9    	2,,T22 	27?411	2s    00c                     t         |   }	  |t        j                   |       S # t        $ r  |t        j
                   |       cY S w xY wrL   )r;   r<   r   HOST_PREFIXr:   SECURE_PREFIX)r=   r1   getitemr>   s      r#   r9   z,CookieRequestParameters._get_prefixed_cookie   sW    '%	<f001$899 	<f223D6:;;	<s   ' #AArL   )__name__
__module____qualname____doc__r   r   r<   rG   r   rF   rM   r9   __classcell__)r>   s   @r#   r6   r6   f   s    2s x} "&s &s &. .hsm .x} . 3722"*3-2	#2< < < <r%   r6   )retypingr   r   r   r   sanic.cookies.responser   	sanic.logr   sanic.request.parametersr	   compiler.   r   r   r$   r   r4   r6    r%   r#   <module>r^      s    	 , , ) ! 6 (RZZ5  

/0

8$D0c 0d3S	>2 0fD</ D<r%   