
    iV                         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Zd dlm	Z	m
Z
mZmZmZ ddlmZ  ed      Z ed      Z G d de      Z G d	 d
      Z G d d      Z G d d      Zy)    N)CallableListDictTypeVarUnion   )DEFAULT_ENCODINGTKc                   (    e Zd Zd Zdeedf   fdZy)HTTPResponsec                     || _         || _        || _        |j                         | _        |j                         | _        y N)_context_request	_responsegetcodestatus_codereadcontent)selfcontextrequestresponses       L/home/work/apex_v16/venv/lib/python3.12/site-packages/signalrcore/helpers.py__init__zHTTPResponse.__init__   s7    
  !#++-}}    returnNc                     | j                   j                  t              }t        |      dkD  rt	        j
                  |      S d S )Nr   )r   decoder	   lenjsonloads)r   response_bodys     r   r"   zHTTPResponse.json   s?    ++,<==!A% zz-( 	0+/	0r   )__name__
__module____qualname__r   r   dictr"    r   r   r   r      s    
'0eD$J' 0r   r   c                   |   e Zd Zei fdededefd       Zei i i ddfdededededed	ej                  de
fd
       Zei i i dddfdedededededed	ej                  de
fd       Zei i i dddfdedededededed	ej                  de
fd       Zedi i dddfdededededededed	ej                  de
fd       Zy)RequestHelpersurlparamsr   c                    t        j                  |       }t        j                  |j                        }|j	                  |       t        j
                  |d      }t        j                  |j                  |            S )NTdoseqquery)parseurlparseparse_qsr2   update	urlencode
urlunparse_replace)r,   r-   parsedqs	new_querys        r   update_querystringz!RequestHelpers.update_querystring$   sZ    $^^FLL)
		&OOBd3	i @AAr   Nheadersproxiestimeoutssl_contextc           	      :    t         j                  | d|||||      S )NGET)r>   r?   r-   r@   rA   r+   r   )r,   r>   r?   r-   r@   rA   s         r   getzRequestHelpers.get/   s1     %%# & 
 	
r   datac           
      <    t         j                  | d||||||      S )NPOSTr>   r?   r-   rF   r@   rA   rD   r,   r>   r?   r-   rF   r@   rA   s          r   postzRequestHelpers.postA   s4     %%# & 	
 		
r   c           
      <    t         j                  | d||||||      S )NDELETErI   rD   rJ   s          r   deletezRequestHelpers.deleteU   s4     %%# & 	
 		
r   methodc                 J   i }|ddi}t        j                  |      }|%|j                  dt        t	        |            i       d }	t	        |j                               dkD  rt        j                  j                  |      }	t        j                  | |      }
t        j                  j                  |
|||      }|	t        j                  j                  |	      nt        j                  j                  } ||||      5 }t        |||      cd d d        S # 1 sw Y   y xY w)NzContent-Typezapplication/jsonzContent-Lengthr   )rO   r>   rF   )r   r@   )r   r   r   )copydeepcopyr6   strr!   keysurllibr   ProxyHandlerr+   r=   Requestbuild_openerurlopenr   )r,   rO   r>   r?   r-   rF   r@   rA   request_headersproxy_handlerupdated_urlreqopenerr   s                 r   r   zRequestHelpers.requesti   s    ?-/ABO--0""$4c#d)n#EFw||~""NN77@M %77VDnn$$'	 %  ( ,,];NN"" 	 #! 		 %-#!		 		 		s   DD")r%   r&   r'   staticmethodrS   r(   r=   floatssl
SSLContextr   rE   bytesrK   rN   r   r)   r   r   r+   r+   #   s   46 B BT B3 B B  !*.


 
 	

 
 
 4@
 
"  !*.


 
 	

 
 
 
 4@
 
&  !*.


 
 	

 
 
 
 4@
 
&  !!*.000 0 	0
 0 0 0 0 4@0 0r   r+   c                       e Zd Zeej
                  dfd       Zed        Zed        Zed        Z	ed        Z
ed        Zed        Zed	        Zed
        Zedefd       Zededefd       Zy)HelpersNc                 @   t         j                         }|ft        j                         }| t        j                  k7  rdnd}|j                  t        j                  d|z   dz                |j                  |        |j                  |       |j                  |        y )N z- %(filename)s:%(lineno)d z%(asctime)s - %(name)s z- %(levelname)s - %(message)s)	re   
get_loggerloggingStreamHandlerDEBUGsetFormatter	FormattersetLevel
addHandler)levelhandlerloggerdebug_formatters       r   configure_loggerzHelpers.configure_logger   s    ##%?++-GGMM) !,    !!-%&3456
 U#'"r   c                  ,    t        j                  d      S )NSignalRCoreClient)ri   	getLoggerr)   r   r   rh   zHelpers.get_logger   s      !455r   c                 
    d| v S )N?r)   r,   s    r   has_querystringzHelpers.has_querystring   s    czr   c                 8    | j                  d      }|d   |d   fS )Nry   r   r   )split)r,   partss     r   split_querystringzHelpers.split_querystring   s"    		#Qxq!!r   c                     t        j                  |       }||j                  vrB|j                  |k(  r|j                  |      }|j                  |k(  r|j                  |      }t        j                  |      S )N)scheme)r3   urlsplitr   r9   
urlunsplit)r,   root_schemesourcesecure_sourcedestinationsecure_destination	url_partss          r   replace_schemezHelpers.replace_scheme   st     NN3'	i...=0%..6H.I	6)%..k.B		**r   c                 6    t         j                  | ddddd      S )Nhttpwswsshttpsre   r   rz   s    r   websocket_to_httpzHelpers.websocket_to_http   s'    %% 	r   c                 6    t         j                  | ddddd      S )Nr   r   r   r   r   rz   s    r   http_to_websocketzHelpers.http_to_websocket   s'    %%
 	
r   c                    d}t         j                  |       rt         j                  |       \  } }t        j                  t         j                  |             }|j                  j                  d      rdnd}|j                  |j                  |z         }|dk(  rt        j                  |      S t        j                  |      dz   |z   S )Nrg   /	negotiatez
/negotiate)pathry   )
re   r{   r   r3   r   r   r   endswithr9   r   )r,   querystringr   negotiate_suffixs       r   get_negotiate_urlzHelpers.get_negotiate_url   s    ""3'&88=CNN7#<#<S#AB	 ~~&&s+ ' 	 &&INN=M,M&N	 b  	* 	<Y'#-;	<r   c                    t        j                  |       }t        j                  |j                        }||d<   |j	                  t        j
                  |d            }t        j                  t        j                  |            S )NidTr/   r1   )	r3   r   r5   r2   r9   r7   re   r   r   )r,   r   r   query_string_partss       r   encode_connection_idzHelpers.encode_connection_id   ss    NN3'	"^^IOO<#%4 &&//" ' 	
 (()9)9))DEEr   r   c                 J    | j                   }| j                  dv }|sd}|rd}|S )N)r   r   P   i  )portr   )
parsed_urlr   is_secure_connections      r   get_portzHelpers.get_port  s2    )004DDD#r   r   r?   c                     d }| r6|j                  dd       $t        j                  |j                  d            }| s6|j                  dd       $t        j                  |j                  d            }|S )Nr   r   )rE   r3   r4   )r   r?   
proxy_infos      r   get_proxy_infozHelpers.get_proxy_info  se     
KK.:G(<=J#KK-9F(;<Jr   )r%   r&   r'   r_   ri   INFOrt   rh   r{   r   r   r   r   r   r   intr   boolr(   r   r)   r   r   re   re      s    &||T    6 6   " " + +"   
 
 < <" 
F 
F    "& r   re   c            	       F    e Zd Zedee   deegef   deeef   fd       Z	y)ListHelperselementskeyr   c                 :    | D ci c]  } ||      | c}S c c}w r   r)   )r   r   es      r   list_to_dictzListHelpers.list_to_dict   s,     
 FAI
 	
 
s   N)
r%   r&   r'   r_   r   r
   r   r   r   r   r)   r   r   r   r     sC    
1g
1#q&!
&*1a4j
 
r   r   )r"   ra   rQ   ri   rU   urllib.parser3   urllib.requesttypingr   r   r   r   r   typesr	   r
   r   objectr   r+   re   r   r)   r   r   <module>r      se     
      7 7 #CLCL06 0&w wt D
 
r   