
    i                       d dl mZ d dlmZmZmZ d dlZd dlZd dlm	Z	 d dl
mZ  ej                  dd      Zej                  j                  d	d
      xs i Z eej                  j%                  d	d            ZddZddZddZdd dZdddddddd	 	 	 	 	 	 	 	 	 d!dZdddddddd	 	 	 	 	 	 	 	 	 	 	 d"dZdddddddd	 	 	 	 	 	 	 	 	 d#dZd$dZd%dZd Zd&dZy)'    )annotations)DictOptionalUnionN)requests)config_managerdesktop)chromeedge)devicebrowserREQUESTSproxy	use_proxyc                 t    	 t        t        j                  j                  dd            S # t        $ r Y yw xY w)Nr   timeout   )intr   configget_int	Exception     Y/home/nidran/Documenti/script/streaming-community/StreamingCommunity/utils/http_client.py_get_timeoutr      s7    >((00YGHH    (+ 	77c                 t    	 t        t        j                  j                  dd            S # t        $ r Y yw xY w)Nr   verifyT)boolr   r   get_boolr   r   r   r   _get_verifyr!      s7    N))22:xHII r   c                 p   t         sy	 t        t        t              rt        nt        j
                  j                  dd      } t        | t              syi }| j                         D ]:  \  }}t        |t              s|j                         s(|j                         ||<   < |xs dS # t        $ r Y yw xY w)zRReturn proxies dict if `USE_PROXY` is true and proxy config is present, else None.Nr   r   )	USE_PROXY
isinstance
CONF_PROXYdictr   r   get_dictitemsstrstripr   )proxiescleanedschemeurls       r   _get_proxiesr/   &   s     *:t <*.BWBWB`B`akmtBu'4("$"==? 	.KFC#s#		"%))+	. $ s$   A
B) (B) =B) B) )	B54B5c                D    dt               i}| r|j                  |        |S )Nz
User-Agent)get_userAgentupdate)extraheaderss     r   _default_headersr5   9   s"    ]_-GuNr   FT)r4   cookiesr   r   r+   http2follow_redirectsc                   ||n	t               }t        t        |       |||n	t               |
t	               n|||      }|r	 t        j                  di |d|iS t        j                  di |S # t        $ rh d}	t        |t              r%|j                  d      xs |j                  d      }	nt        |t              r|}	|	rt        j                  di |d|	icY S  w xY w)z&Factory for a configured httpx.Client.Nr4   r6   r   r   r8   r7   r+   httpshttpr   r   )r/   r&   r5   r   r!   httpxClient	TypeErrorr$   getr)   
r4   r6   r   r   r+   r7   r8   proxy_valueclient_kwargssingle_proxys
             r   create_clientrE   @   s     %0'lnK )".LN &{}F)M 	<<E-EEE ||,m,,  	L+t,*w7R;??6;RK-* ||HmH<HH	   A2 2A-C#!C#c                   ||n	t               }t        t        |       |||n	t               |
t	               n|||      }|r	 t        j                  di |d|iS t        j                  di |S # t        $ rh d}	t        |t              r%|j                  d      xs |j                  d      }	nt        |t              r|}	|	rt        j                  di |d|	icY S  w xY w)z+Factory for a configured httpx.AsyncClient.Nr:   r+   r;   r<   r   r   )r/   r&   r5   r   r!   r=   AsyncClientr?   r$   r@   r)   rA   s
             r   create_async_clientrI   b   s    
 %0'lnK )".LN &{}F)M 	$$J}JkJJ   1=11  		L+t,*w7R;??6;RK-*((M=MMM		rF   	chrome142)r4   r6   r   r   r+   impersonateallow_redirectsc                F   t        j                         }|j                  j                  t	        |              |r|j
                  j                  |       ||n	t               |_        |
t               n||_	        ||n	t               }|r||_        ||_        ||_        |S )z+Factory for a configured curl_cffi session.)r   Sessionr4   r2   r5   r6   r   r   r!   r   r/   r+   rK   rL   )	r4   r6   r   r   r+   rK   rL   sessionrB   s	            r   create_client_curlrP      s    
  GOO+G45w'!(!4g,.GO&,n[]&GN$0'lnK%%G-GNr   c                 B    t        j                         j                  } | S N)ua_generatorgeneratetext)
user_agents    r   r1   r1      s    '')..Jr   c                 >    t         j                  j                         S rR   )uar4   r@   r   r   r   get_headersrY      s    ::>>r   c                    	 d} t        t                     j                  | d      }|j                         }|j                  d      dk(  r|d   |d   |d	   |d
   dS dddS # t        $ r}ddt        |      dcY d }~S d }~ww xY w)NzDhttp://ip-api.com/json/?fields=status,country,countryCode,city,query)r4      )r   statussuccesscountrycountryCodecityquery)r^   country_coder`   ipfailXX)r\   rb   )r\   rb   error)rE   rY   r@   jsonr   r)   )r.   responsedataes       r   get_my_locationrk      s    IT 7;;C;K}}88H*	? $] 3V7m	  !$77 I $QHHIs$   AA%  A% %	B.B<BBc                    	 t               }|j                  d      dk(  sd|v ry|j                  d      }|r&|| vr"t        d| ddj                  |        d	       y
y# t        $ r Y yw xY w)Nr\   rd   rf   Trb   zSite: z, unavailable outside z, .F)rk   r@   printjoinr   )allowed_regions	site_namelocationcurrent_countrys       r   check_region_availabilityrt      s    
"$<<!V+w(/B",,~6oEF9+%;DIIo<V;WWXYZ   s   "A 8A 	A+*A+)returnr   )ru   r   )ru   Optional[Dict[str, str]]rR   )r3   rv   ru   zDict[str, str])r4   rv   r6   rv   r   Optional[Union[int, float]]r   Optional[bool]r+   rv   r7   r   r8   r   ru   zhttpx.Client)r4   rv   r6   rv   r   rw   r   rx   r+   rv   r7   r   r8   r   ru   zhttpx.AsyncClient)r4   rv   r6   rv   r   rw   r   rx   r+   rv   rK   r)   rL   r   )ru   r)   )ru   r&   )rp   listrq   r)   ru   r   )
__future__r   typingr   r   r   r=   rS   	curl_cffir   StreamingCommunity.utilsr   rT   rX   r   r'   r%   r   r    r#   r   r!   r/   r5   rE   rI   rP   r1   rY   rk   rt   r   r   r   <module>r~      sr   " ( (    4 l96HI""++J@FB
&&//
KHI	& :>cg  QU!t[`{--,D-TX-tx--D @Dim+/$tx$2(29G2Yq22+/2 2@ ?Chl+/$tx"D(9GYq59(
I$r   