Ë
    §ŒjK;  ã                  ó  — d dl m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
mZmZmZmZmZ d dlmZmZ d dlmZmZ d dlmZmZ g d¢Zd d	lmZ d d
lmZ d dlmZ dZ dZ!h d£Z"e G d„ d«      «       Z# G d„ de$«      Z% G d„ d«      Z&y)é    )ÚannotationsN)Ú	dataclass)ÚAnyÚDictÚMappingÚOptionalÚTupleÚUnion)Ú	HTTPErrorÚURLError)Ú	urlencodeÚurljoin)ÚRequestÚurlopen)Ú
HttpClientÚHttpResponseÚ	HttpErrorÚDEFAULT_TIMEOUT)ÚExponentialWithJitterBackoff)ÚRetry©Ú
dummy_failz)HttpClient/1.0 (+https://example.invalid)g      >@>   é­  éô  éö  é÷  éø  c                  óP   — e Zd ZU ded<   ded<   ded<   ded<   ddd
„Zdd„Zdd„Zy	)r   ÚintÚstatusúDict[str, str]ÚheadersÚstrÚurlÚbytesÚcontentNc                ód   — |xs | j                  «       }| j                  j                  |d¬«      S )NÚreplace)Úerrors)Ú_get_encodingr&   Údecode)ÚselfÚencodingÚencs      ú`/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/redis/http/http_client.pyÚtextzHttpResponse.text    s/   € ØÒ.˜$×,Ñ,Ó.ˆØ�|‰|×"Ñ" 3¨yÐ"Ó9Ð9ó    c                óh   — t        j                  | j                  | j                  «       ¬«      «      S )N)r-   )ÚjsonÚloadsr0   r*   )r,   s    r/   r3   zHttpResponse.json$   s%   € Ü�z‰z˜$Ÿ)™)¨T×-?Ñ-?Ó-A˜)ÓBÓCÐCr1   c                ó  — | j                   j                  dd«      }|j                  d«      D ]Z  }|j                  «       }|j	                  «       j                  d«      sŒ3|j                  dd«      d   j                  «       xs dc S  y)Núcontent-typeÚ Ú;zcharset=Ú=é   úutf-8)r"   ÚgetÚsplitÚstripÚlowerÚ
startswith)r,   ÚctypeÚpartÚps       r/   r*   zHttpResponse._get_encoding'   sr   € à—‘× Ñ  °Ó4ˆà—K‘K Ö$ˆDØ—
‘
“ˆAØ�w‰w‹y×#Ñ# JÕ/Ø—w‘w˜s A“ qÑ)×/Ñ/Ó1Ò<°WÒ<ð %ð r1   ©N)r-   úOptional[str]Úreturnr#   )rF   r   )rF   r#   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r0   r3   r*   © r1   r/   r   r      s'   … àƒKØÓØ	ƒHØƒNô:óDôr1   r   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )r   c                óv   •— || _         || _        |xs d|› d|› �| _        t        ‰| �  | j                  «       y )NzHTTP z for )r    r$   ÚmessageÚsuperÚ__init__)r,   r    r$   rN   Ú	__class__s       €r/   rP   zHttpError.__init__3   s;   ø€ ØˆŒØˆŒØÒ< E¨&¨°°s°eÐ"<ˆŒÜ‰Ñ˜Ÿ™Õ&r1   rD   )r    r   r$   r#   rN   rE   )rG   rH   rI   rP   Ú__classcell__)rQ   s   @r/   r   r   2   s   ø„ ÷'ò 'r1   r   c                  óD  — e Zd ZdZdde e edd¬«      d¬«      d	dddddddef	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z		 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z
	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d 	 	 	 	 	 d!d„Zd"d„Z	 	 	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d$d„Z	 d 	 	 	 	 	 d%d„Z	 d&	 	 	 	 	 d'd„Z	 	 	 	 	 	 d(d„Zd)d„Zd*d„Zy)+r   z7
    A lightweight HTTP client for REST API calls.
    r7   Nr:   é
   )ÚbaseÚcapé   )ÚbackoffÚretriesTc                óâ  — |r$|j                  d«      s|j                  «       dz   n|| _        |xs i j                  «       D ��ci c]  \  }}|j	                  «       |“Œ c}}| _        || _        || _        | j                  j                  t        t        t        j                  f«       || _        || _        || _        || _        |	| _        |
| _        || _        || _        || _        yc c}}w )a  
        Initialize a new HTTP client instance.

        Args:
            base_url: Base URL for all requests. Will be prefixed to all paths.
            headers: Default headers to include in all requests.
            timeout: Default timeout in seconds for requests.
            retry: Retry configuration for failed requests.
            verify_tls: Whether to verify TLS certificates.
            ca_file: Path to CA certificate file for TLS verification.
            ca_path: Path to a directory containing CA certificates.
            ca_data: CA certificate data as string or bytes.
            client_cert_file: Path to client certificate for mutual TLS.
            client_key_file: Path to a client private key for mutual TLS.
            client_key_password: Password for an encrypted client private key.
            auth_basic: Tuple of (username, password) for HTTP basic auth.
            user_agent: User-Agent header value for requests.

        The client supports both regular HTTPS with server verification and mutual TLS
        authentication. For server verification, provide CA certificate information via
        ca_file, ca_path or ca_data. For mutual TLS, additionally provide a client
        certificate and key via client_cert_file and client_key_file.
        Ú/N)ÚendswithÚrstripÚbase_urlÚitemsr?   Ú_default_headersÚtimeoutÚretryÚupdate_supported_errorsr   r   ÚsslÚSSLErrorÚ
verify_tlsÚca_fileÚca_pathÚca_dataÚclient_cert_fileÚclient_key_fileÚclient_key_passwordÚ
auth_basicÚ
user_agent)r,   r^   r"   ra   rb   rf   rg   rh   ri   rj   rk   rl   rm   rn   ÚkÚvs                   r/   rP   zHttpClient.__init__?   sÜ   € ñZ  × 1Ñ 1°#Ô 6ð �O‰OÓ Ò#àð 	Œð
 <Cº=Àb×:OÑ:OÔ:QÔ RÑ:Q±$°!°Q §¡£¨A¡Ð:QÒ RˆÔØˆŒØˆŒ
Ø�
‰
×*Ñ*¬I´xÄÇÁÐ+NÔOØ$ˆŒð ˆŒØˆŒØˆŒØ 0ˆÔØ.ˆÔØ#6ˆÔ à$ˆŒØ$ˆ�ùó !Ss   ÁC+c           	     ó2   — | j                  d||||d |¬«      S )NÚGET©Úparamsr"   ra   ÚbodyÚexpect_json©Ú
_json_call©r,   Úpathrt   r"   ra   rv   s         r/   r<   zHttpClient.get�   s/   € ð �‰ØØØØØØØ#ð ó 
ð 	
r1   c           	     ó2   — | j                  d||||d |¬«      S )NÚDELETErs   rw   ry   s         r/   ÚdeletezHttpClient.delete•   s/   € ð �‰ØØØØØØØ#ð ó 
ð 	
r1   c                óT   — | j                  d||||| j                  ||¬«      |¬«      S )NÚPOST©Ú	json_bodyÚdatars   ©rx   Ú_prepare_body©r,   rz   r�   r‚   rt   r"   ra   rv   s           r/   ÚpostzHttpClient.post©   s?   € ð �‰ØØØØØØ×#Ñ#¨i¸dÐ#ÓCØ#ð ó 
ð 	
r1   c                óT   — | j                  d||||| j                  ||¬«      |¬«      S )NÚPUTr€   rs   rƒ   r…   s           r/   ÚputzHttpClient.put¿   s?   € ð �‰ØØØØØØ×#Ñ#¨i¸dÐ#ÓCØ#ð ó 
ð 	
r1   c                óT   — | j                  d||||| j                  ||¬«      |¬«      S )NÚPATCHr€   rs   rƒ   r…   s           r/   ÚpatchzHttpClient.patchÕ   s?   € ð �‰ØØØØØØ×#Ñ#¨i¸dÐ#ÓCØ#ð ó 
ð 	
r1   c                ó,  ‡ ‡‡‡— ‰ j                  ||«      }‰ j                  ||«      }t        |t        «      r|j	                  d«      n|}	t        ||j                  «       |	|¬«      Šd Š|j                  «       j                  d«      r±‰ j                  rut        j                  ‰ j                  ‰ j                  ‰ j                  ¬«      Š‰ j                  rc‰j!                  ‰ j                  ‰ j"                  ‰ j$                  ¬«       n0t        j                  «       Šd‰_        t        j(                  ‰_        	 ‰ j,                  j/                  ˆˆˆ ˆfd„d„ ˆ fd	„«      S # t0        $ r§}
d
}	 |
j3                  «       }n# t4        $ r Y nw xY w|
j6                  xs i j9                  «       D ��ci c]  \  }}|j                  «       |“Œ nc c}}w }}}‰ j;                  ||«      }t=        |
dd«      xs d}t?        ||||¬«      }|cY d }
~
S d }
~
ww xY w)Nr;   )r$   Úmethodr‚   r"   Úhttps)ÚcafileÚcapathÚcadata)ÚcertfileÚkeyfileÚpasswordFc                 ó,   •— ‰j                  ‰‰ ‰¬«      S )N)Úcontextra   )Ú_make_request)r—   Úreqr,   ra   s   €€€€r/   Ú<lambda>z$HttpClient.request.<locals>.<lambda>  s   ø€ ˜×*Ñ*¨3¸ÈÐ*ÔQr1   c                ó   — t        «       S rD   r   )Ú_s    r/   rš   z$HttpClient.request.<locals>.<lambda>  s   € œ*œ,r1   c                ó&   •— ‰j                  | «      S rD   )Ú_is_retryable_http_error)Úerrorr,   s    €r/   rš   z$HttpClient.request.<locals>.<lambda>  s   ø€ ˜d×;Ñ;¸EÔBr1   r1   Úcoder   ©r    r"   r$   r&   ) Ú
_build_urlÚ_prepare_headersÚ
isinstancer#   Úencoder   Úupperr?   r@   rf   rd   Úcreate_default_contextrg   rh   ri   rj   Úload_cert_chainrk   rl   Úcheck_hostnameÚ	CERT_NONEÚverify_moderb   Úcall_with_retryr   ÚreadÚ	Exceptionr"   r_   Ú_maybe_decompressÚgetattrr   )r,   rŽ   rz   rt   r"   ru   ra   r$   Úall_headersr‚   ÚeÚerr_bodyro   rp   Úheaders_mapr    Úresponser—   r™   s   `     `          @@r/   ÚrequestzHttpClient.requestì   sÐ  û€ ð �o‰o˜d FÓ+ˆØ×+Ñ+¨G°TÓ:ˆÜ'1°$¼Ô'<ˆt�{‰{˜7Ô#À$ˆä˜# f§l¡l£n¸4ÈÔUˆà,0ˆØ�9‰9‹;×!Ñ! 'Ô*Ø�Šä×4Ñ4ØŸ<™<ØŸ<™<ØŸ<™<ô�ð ×(Ò(Ø×+Ñ+Ø!%×!6Ñ!6Ø $× 4Ñ 4Ø!%×!9Ñ!9ð ,õ ô ×4Ñ4Ó6�Ø).�Ô&Ü&)§m¡m�Ô#ð	Ø—:‘:×-Ñ-ÞQÙ&ÛBóð øô
 ò 	àˆHðØŸ6™6›8‘øÜò Ùðúà56·Y±Y²_À"×4KÑ4KÔ4MÔNÑ4M©D¨A¨q˜1Ÿ7™7›9 a™<Ñ4MùÓNˆKÑNØ×-Ñ-¨h¸ÓDˆHÜ˜Q ¨Ó*Ò/¨aˆFÜ#ØØ#ØØ ô	ˆHð �Oûð!	úsN   Ä<&E# Å#	HÅ,HÅ/F Å?HÆ 	FÆ	HÆFÆ$HÆ0GÇ=HÈHÈHc                óz  — t        ||xs | j                  |¬«      5 }|j                  «       }|j                  j	                  «       D ��ci c]  \  }}|j                  «       |“Œ }}}| j                  ||«      }t        |j                  ||j                  «       |¬«      cd d d «       S c c}}w # 1 sw Y   y xY w)N)ra   r—   r¡   )
r   ra   r­   r"   r_   r?   r¯   r   r    Úgeturl)	r,   r¶   r—   ra   ÚrespÚrawro   rp   r´   s	            r/   r˜   zHttpClient._make_request+  sž   € ô �W gÒ&=°·±ÀwÕOÐSWØ—)‘)“+ˆCØ48·L±L×4FÑ4FÔ4HÔIÑ4H©D¨A¨q˜1Ÿ7™7›9 a™<Ð4HˆKÑIØ×(Ñ(¨¨kÓ:ˆCÜØ—{‘{Ø#Ø—K‘K“MØô	÷	 PÑOùãI÷ PÐOús   �.B1ÁB+Á&;B1Â+B1Â1B:c                óZ   — t        |t        «      r| j                  |j                  «      S y)NF)r¤   r   Ú_should_retry_statusr    )r,   rŸ   s     r/   rž   z#HttpClient._is_retryable_http_error<  s$   € Ü�eœYÔ'Ø×,Ñ,¨U¯Z©ZÓ8Ð8Ør1   c                óä   — | j                  ||||||¬«      }d|j                  cxk  rdk  s1n t        |j                  |j                  |j	                  «       «      ‚|r|j                  «       S |S )N)rŽ   rz   rt   r"   ru   ra   éÈ   i�  )r¶   r    r   r$   r0   r3   )	r,   rŽ   rz   rt   r"   ra   ru   rv   r¹   s	            r/   rx   zHttpClient._json_callB  sm   € ð �|‰|ØØØØØØð ó 
ˆð �t—{‘{Ô( SÔ(Ü˜DŸK™K¨¯©°4·9±9³;Ó?Ð?ÙØ—9‘9“;ÐØˆr1   c                óX   — |�|�t        d«      ‚|�t        j                  |dd¬«      S |S )Nz+Provide either json_body or data, not both.F)Ú,Ú:)Úensure_asciiÚ
separators)Ú
ValueErrorr3   Údumps)r,   r�   r‚   s      r/   r„   zHttpClient._prepare_body\  s9   € ð Ð  TÐ%5ÜÐJÓKÐKØÐ Ü—:‘:˜i°eÈ
ÔSÐSØˆr1   c                óÖ   — t        | j                  xs d|«      }|rFt        |j                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}d¬«      }d|v rdnd}|r|› |› |› �n|}|S c c}}w )Nr7   T)ÚdoseqÚ?Ú&)r   r^   r   r_   )r,   rz   rt   r$   ro   rp   ÚqueryÚ	separators           r/   r¢   zHttpClient._build_urle  s|   € ô �d—m‘mÒ) r¨4Ó0ˆÙäØ"(§,¡,¤.ÔB¡.™$˜!˜Q°A±M��A‘ .ÒBÈ$ôˆEð !$ s¡
™°ˆIÙ05�S�E˜)˜ U GÑ,¸3ˆCØˆ
ùó	 Cs   µ
A%
Á A%
c                ó   — i }|j                  | j                  «       |j                  dd«       |j                  d| j                  «       |j                  dd«       |�"t	        |t
        «      r|j                  dd«       | j                  rSd|vrO| j                  \  }}t        j                  |› d	|› �j                  d
«      «      j                  d«      }d|› �|d<   |r+|j                  «       D ]  \  }}|||j                  «       <   Œ |S )NÚacceptzapplication/jsonz
user-agentzaccept-encodingzgzip, deflater6   zapplication/json; charset=utf-8ÚauthorizationrÁ   r;   ÚasciizBasic )Úupdater`   Ú
setdefaultrn   r¤   r#   rm   Úbase64Ú	b64encoder¥   r+   r_   r?   )	r,   r"   ru   ÚpreparedÚuserÚpwdÚtokenro   rp   s	            r/   r£   zHttpClient._prepare_headersv  s  € ð $&ˆØ�‰˜×-Ñ-Ô.ð 	×Ñ˜HÐ&8Ô9Ø×Ñ˜L¨$¯/©/Ô:à×ÑÐ-¨Ô?ð Ð¤
¨4´Ô 5Ø×Ñ Ð0QÔRð �?Š?˜°hÑ>ØŸ™‰IˆD�#Ü×$Ñ$¨ v¨Q¨s¨e _×%;Ñ%;¸GÓ%DÓE×LÑLÈWÓUˆEØ*0°°Ð(8ˆH�_Ñ%ñ ØŸ™ž‘��1Ø&'�˜Ÿ™›Ò#ð (ð
 ˆr1   c                ó   — |t         v S rD   )ÚRETRY_STATUS_CODES)r,   r    s     r/   r¼   zHttpClient._should_retry_status–  s   € ØÔ+Ð+Ð+r1   c                ó\  — |s|S |j                  d«      xs dj                  «       }	 d|v rt        j                  |«      S d|v r&	 t	        j                  |t        j
                   «      S 	 |S # t        j                  $ r t	        j                  |«      cY S w xY w# t        $ r |cY S w xY w)Nzcontent-encodingr7   ÚgzipÚdeflate)r<   r?   rÛ   Ú
decompressÚzlibÚ	MAX_WBITSrŸ   r®   )r,   r&   r"   r-   s       r/   r¯   zHttpClient._maybe_decompress™  sª   € ÙØˆNØ—K‘KÐ 2Ó3Ò9°r×@Ñ@ÓBˆð	Ø˜Ñ!Ü—‘ wÓ/Ð/Ø˜HÑ$ð4ÜŸ?™?¨7´T·^±^°OÓDÐDð %ð ˆøô —z‘zò 4ÜŸ?™?¨7Ó3Ò3ð4ûäò 	àŠNð	ús5   ©B ÁB Á$A/ Á/(BÂB ÂBÂB ÂB+Â*B+)r^   r#   r"   úOptional[Mapping[str, str]]ra   Úfloatrb   r   rf   Úboolrg   rE   rh   rE   ri   zOptional[Union[str, bytes]]rj   rE   rk   rE   rl   rE   rm   zOptional[Tuple[str, str]]rn   r#   rF   ÚNone)NNNT)rz   r#   rt   úGOptional[Mapping[str, Union[None, str, int, float, bool, list, tuple]]]r"   rà   ra   úOptional[float]rv   râ   rF   úUnion[HttpResponse, Any])NNNNNT)rz   r#   r�   úOptional[Any]r‚   úOptional[Union[bytes, str]]rt   rä   r"   rà   ra   rå   rv   râ   rF   ræ   )NNNN)rŽ   r#   rz   r#   rt   rä   r"   rà   ru   rè   ra   rå   rF   r   )NN)r¶   r   r—   zOptional[ssl.SSLContext]ra   rå   )rŸ   r®   rF   râ   )NNNNT)rŽ   r#   rz   r#   rt   rä   r"   rà   ra   rå   ru   rè   rv   râ   rF   ræ   )r�   rç   r‚   rè   rF   rè   rD   )rz   r#   rt   rä   rF   r#   )r"   rà   ru   rè   rF   r!   )r    r   rF   râ   )r&   r%   r"   zMapping[str, str]rF   r%   )rG   rH   rI   Ú__doc__r   r   r   ÚDEFAULT_USER_AGENTrP   r<   r}   r†   r‰   rŒ   r¶   r˜   rž   rx   r„   r¢   r£   r¼   r¯   rK   r1   r/   r   r   :   s  „ ñð Ø/3Ø(ÙÙ0°a¸RÔ@È!ô
ð  à!%Ø!%Ø/3à*.Ø)-Ø-1Ø04Ø,ð%?%àð?%ð -ð?%ð ð	?%ð
 ð?%ð ð?%ð ð?%ð ð?%ð -ð?%ð (ð?%ð 'ð?%ð  +ð!?%ð" .ð#?%ð$ ð%?%ð& 
ó'?%ðN Ø/3Ø#'Ø ð
àð
ð
ð
ð -ð
ð !ð
ð ð
ð 
"ó
ð2 Ø/3Ø#'Ø ð
àð
ð
ð
ð -ð
ð !ð
ð ð
ð 
"ó
ð. $(Ø,0ð Ø/3Ø#'Ø ð
àð
ð !ð
ð *ð	
ð

ð
ð -ð
ð !ð
ð ð
ð 
"ó
ð2 $(Ø,0ð Ø/3Ø#'Ø ð
àð
ð !ð
ð *ð	
ð

ð
ð -ð
ð !ð
ð ð
ð 
"ó
ð2 $(Ø,0ð Ø/3Ø#'Ø ð
àð
ð !ð
ð *ð	
ð

ð
ð -ð
ð !ð
ð ð
ð 
"ó
ð: Ø/3Ø,0Ø#'ð=àð=ð ð=ð
ð	=ð -ð=ð *ð=ð !ð=ð 
ó=ðD -1Ø#'ð	àðð *ðð !ó	ó"ð Ø/3Ø#'Ø,0Ø ðàðð ðð
ð	ð -ðð !ðð *ðð ðð 
"óð6 TXðØ&ðØ5Pðà	$óð ðàðð
ðð 
óð"Ø2ðØ:Uðà	óó@,ôr1   r   )'Ú
__future__r   rÒ   rÛ   r3   rd   rÞ   Údataclassesr   Útypingr   r   r   r   r	   r
   Úurllib.errorr   r   Úurllib.parser   r   Úurllib.requestr   r   Ú__all__Úredis.backoffr   Úredis.retryr   Úredis.utilsr   rê   r   rÙ   r   r®   r   r   rK   r1   r/   Ú<module>rõ      sy   ðÝ "ã Û Û Û 
Û Ý !ß =× =ß ,ß +ß +â
H€å 6Ý Ý "à@Ð Ø€Ú.Ð ð ÷ð ó ðô0'�	ô '÷oò or1   