
    ^i                     $   S r SSKrSSKrSSKJr  SSKJr  SSKJrJ	r	  SSK
r
SSKrSSKrSSKJrJr  \(       a  SSKJr  \R$                  " \5      r\" 5       r " S	 S
5      r " S S5      r/ SQrS\\-  S\R4                  4S jr " S S5      rg)zPTemporary HTTP client for 'backend=duckduckgo'. Delete when HttpClient is fixed.    N)SystemRandom)TracebackType)TYPE_CHECKINGAny   )DDGSExceptionTimeoutException)Callablec                   6    \ rS rSrSrSrS\S\S\SS4S	 jr	Sr
g)
Response   zHTTP response.)contentstatus_codetextr   r   r   returnNc                 (    Xl         X l        X0l        g )Nr   r   r   )selfr   r   r   s       K/home/james-whalen/.local/lib/python3.13/site-packages/ddgs/http_client2.py__init__Response.__init__   s    &	    )__name__
__module____qualname____firstlineno____doc__	__slots__intbytesstrr   __static_attributes__ r   r   r   r      s+    2IC % s t r   r   c                       \ rS rSrSr   SSS.S\\\4   S-  S\S-  S\S-  S	\\-  S
S4
S jjjr	S\
S\
S
\4S jrS\
S\
S
\4S jrS\
S\
S
\4S jrSrg)HttpClient2"   zTemporary HTTP client.NTverifyheadersproxytimeoutr(   r   c          	      `    [         R                  " UUUU(       a	  [        US9OSSSS9U l        g)a  Initialize the HttpClient object.

Args:
    headers (dict, optional): headers for the HTTP client.
    proxy (str, optional): proxy for the HTTP client, supports http/https/socks5 protocols.
        example: "http://user:pass@example.com:3128". Defaults to None.
    timeout (int, optional): Timeout value for the HTTP client. Defaults to 10.
    verify: (bool | str):  True to verify, False to skip or str path to a PEM file. Defaults to True.

r'   FT)r)   r*   r+   r(   follow_redirectshttp2N)httpxClient_get_random_ssl_contextclient)r   r)   r*   r+   r(   s        r   r   HttpClient2.__init__%   s0    $ ll=C*&9"
r   argskwargsc                 |   [        5           U R                  R                  " U0 UD6n[        UR                  UR
                  UR                  S9sSSS5        $ ! [         aE  nSU ;   a  SU< 3n[        U5      Ue[        U5      R                   SU< 3n[        U5      UeSnAff = f! , (       d  f       g= f)z"Make a request to the HTTP client.r   Nz	timed outzRequest timed out: z: )Patchr2   requestr   r   r   r   	Exceptionr	   typer   r   )r   r4   r5   respexmsgs         r   r8   HttpClient2.request@   s    W1{{**D;F;D,<,<dllY]YbYbc W  1RD)/v6C*3/R7b**+2bV4#C(b01	 Ws*   B-AA
B*%A B%%B**B--
B;c                 *    U R                   " USS0UD6$ )z&Make a GET request to the HTTP client.methodGETr8   r   r4   r5   s      r   getHttpClient2.getM   s    ||T:%:6::r   c                 *    U R                   " USS0UD6$ )z'Make a POST request to the HTTP client.r@   POSTrB   rC   s      r   postHttpClient2.postQ   s    ||T;&;F;;r   )r2   )NN
   )r   r   r   r   r   dictr!   r   boolr   r   r   r8   rD   rH   r"   r#   r   r   r%   r%   "   s      *.  	
 "
c3h$&
 Tz
 t	
 s

 

61S 1C 1H 1; ; ; ;<# < < <r   r%   )TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-ECDSA-CHACHA20-POLY1305ECDHE-RSA-AES128-GCM-SHA256ECDHE-RSA-CHACHA20-POLY1305ECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES256-GCM-SHA384rP   rQ   rR   rS   rT   rU   zECDHE-ECDSA-AES128-SHA256zECDHE-RSA-AES128-SHA256zECDHE-ECDSA-AES256-SHA384zECDHE-RSA-AES256-SHA384zECDHE-ECDSA-AES128-SHAzECDHE-RSA-AES128-SHAzAES128-GCM-SHA256zAES128-SHA256z
AES128-SHAzECDHE-RSA-AES256-SHAzAES256-GCM-SHA384zAES256-SHA256z
AES256-SHAzDES-CBC3-SHAr(   r   c                 d   [         R                  " [        U [        5      (       a  U OS S9n[        R                  [        SS  [        [        5      S-
  5      nUR                  SR                  [        S S U-   5      5        S S S S /n[        R                  U5      nU(       a  U" U5        U$ )N)cafile	   :c                 L    [        U S[        R                  R                  5      $ )Nmaximum_version)setattrssl
TLSVersionTLSv1_2contexts    r   <lambda>)_get_random_ssl_context.<locals>.<lambda>l       ):CNN<R<RSr   c                 L    [        U S[        R                  R                  5      $ )Nminimum_version)r\   r]   r^   TLSv1_3r`   s    r   rb   rc   m   rd   r   c                 R    [        U SU R                  [        R                  -  5      $ )Noptions)r\   ri   r]   OP_NO_TICKETr`   s    r   rb   rc   n   s    GOOcFVFV4VWr   )r]   create_default_context
isinstancer!   randomsampleDEFAULT_CIPHERSlenset_ciphersjoinchoice)r(   ssl_contextshuffled_cipherscommandsrandom_commands        r   r1   r1   f   s    ,,jQT>U>UF[_`K}}_QR%8#o:NQR:RSCHH_Ra%8;K%KLMSSW	?H ]]8,N{#r   c            	       ^    \ rS rSrSrSS jr   SS\\   S-  S\S-  S\S-  SS4S	 jjr	S
r
g)r7   v   z7Patch the HTTP2Connection._send_connection_init method.r   Nc                 2   S[         R                  R                  R                  S[         R                  SS4S jn[         R                  R                  R                  R
                  U l        U[         R                  R                  R                  l        g)zEnter the context manager.r   r8   r   Nc                    [         R                  R                  S[         R                  R                  R                  [
        R                  SS5      [         R                  R                  R                  [
        R                  SS5      [         R                  R                  R                  [
        R                  SS5      [         R                  R                  R                  [
        R                  SS5      [         R                  R                  R                  [
        R                  SS	5      [         R                  R                  R                  [
        R                  S
S5      [         R                  R                  R                  [
        R                  S
S5      0S9U R                  l        U R                  R                  5         U R                  R!                  S5        U R#                  U5        g )NTd      i  i  i @  i  i  i r   r   )r2   initial_valuesi   )h2settingsSettingsSettingCodesINITIAL_WINDOW_SIZErm   randintHEADER_TABLE_SIZEMAX_FRAME_SIZEMAX_CONCURRENT_STREAMSMAX_HEADER_LIST_SIZEENABLE_CONNECT_PROTOCOLENABLE_PUSH	_h2_statelocal_settingsinitiate_connectionincrement_flow_control_window_write_outgoing_data)r   r8   s     r   _send_connection_init.Patch.__enter__.<locals>._send_connection_init|   sG   ,.KK,@,@KK,,@@&..QTVYBZKK,,>>tUY@ZKK,,;;V^^ESX=YKK,,CCV^^TWY\E]KK,,AA6>>RWY^C_KK,,DDfnnUVXYFZKK,,88&..A:N  -A -DNN) NN..0NN88?%%g.r   )httpcore_syncr.   HTTP2ConnectionRequestr   original_send_connection_init)r   r   s     r   	__enter__Patch.__enter__y   sl    	/(<(<(L(L 	/W_WgWg 	/lp 	/" .6^^-A-A-Q-Q-g-g*EZ,,Br   exc_typeexc_valexc_tbc                 j    U R                   [        R                  R                  R                  l        g)zExit the context manager.N)r   r   r   r.   r   r   )r   r   r   r   s       r   __exit__Patch.__exit__   s$     FJEgEg,,Br   )r   )r   N)NNN)r   r   r   r   r   r   r:   BaseExceptionr   r   r"   r#   r   r   r7   r7   v   s`    A[2 04(,'+	h}%,h %h $	h
 
h hr   r7   )r   loggingr]   rm   r   typesr   typingr   r   r   r   r/   
exceptionsr   r	   collections.abcr
   	getLoggerr   loggerr   r%   ro   rL   r!   
SSLContextr1   r7   r#   r   r   <module>r      s    V  
   % 	   7( 
		8	$	 1< 1<jtcz cnn  !h !hr   