
    F˝iP                    2   d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 d dlZd dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ ddlmZ erd dl m!Z! d dl"m#Z# d dl$m%Z% e&e'e&ef   z  Z(ee(   Z)e)e(z  Z*ddZ+ddZ, G d de      Z-y)    )annotationsN)AsyncGeneratorIterable)TYPE_CHECKINGAnycast)	BasicAuthClientErrorClientSessionFormDataTCPConnector)
USER_AGENT)SERVER_SOFTWARE)Self)__version__)TelegramNetworkError)TelegramType   )BaseSession)Bot)TelegramMethod)	InputFilec                    ddl m} d }t        | t              r| }n| \  }} ||      \  }}}}}t        |t              r|j
                  }|j                  }|||||ddS )Nr   )parse_proxy_urlT)
proxy_typehostportusernamepasswordrdns)aiohttp_socks.utilsr   
isinstancestrr	   loginr   )	basicr   
proxy_auth	proxy_urlr   r   r   r   r   s	            W/home/leshdev/mybot/venv/lib/python3.12/site-packages/aiogram/client/session/aiohttp.py_retrieve_basicr)      sv    3#'J%	 %	:1@1K.JdHh*i(##&& !     c           
        ddl m}m}m} t	        | t
              st	        | t              r+t        |       dk(  rt        t        |       } |t        |       fS t        t        |       } | D cg c]  } |di t        |       }}|d|ifS c c}w )Nr   )ChainProxyConnectorProxyConnector	ProxyInfo   proxy_infos )aiohttp_socksr,   r-   r.   r"   r#   tuplelenr   _ProxyBasicr)   _ProxyChain)chain_or_plainr,   r-   r.   r%   infoss         r(   _prepare_connectorr9   7   s    LL .#&>5)c..AQ.Fk>:~>>>+~6NO]^eiA/%*@A^E^ 666 _s   *B
c                       e Zd Zdd fdZddZedd       Zej                  dd       ZddZddZ	ddZ
	 d	 	 	 	 	 	 	 ddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd	Zdd
Z xZS )AiohttpSessionc                .   t        |   di | d| _        t        | _        t        j                  t        j                               |dd| _	        d| _
        d| _        |	 | j                  |       yy# t        $ r}d}t        |      |d}~ww xY w)a  
        Client session based on aiohttp.

        :param proxy: The proxy to be used for requests. Default is None.
        :param limit: The total number of simultaneous connections. Default is 100.
        :param kwargs: Additional keyword arguments.
        N)cafilei  )ssllimitttl_dns_cacheTzbIn order to use aiohttp client for proxy requests, install https://pypi.org/project/aiohttp-socks/r1   )super__init___sessionr   _connector_typer>   create_default_contextcertifiwhere_connector_init_should_reset_connector_proxy_setup_proxy_connectorImportErrorRuntimeError)selfproxyr?   kwargsexcmsg	__class__s         r(   rB   zAiohttpSession.__init__I   s     	"6".23?--W]]_E!0

 (,$)-1++E2   1>  #3'S01s   %A8 8	BBBc                B    t        |      \  | _        | _        || _        y N)r9   rD   rH   rJ   rN   rO   s     r(   rK   z%AiohttpSession._setup_proxy_connectorg   s    5G5N2d2r*   c                    | j                   S rU   )rJ   rN   s    r(   rO   zAiohttpSession.proxyk   s    {{r*   c                4    | j                  |       d| _        y )NT)rK   rI   rV   s     r(   rO   zAiohttpSession.proxyo   s    ##E*'+$r*   c                >  K   | j                   r| j                          d {    | j                  | j                  j                  rFt	         | j
                  di | j                  t        t         dt         i      | _        d| _         | j                  S 7 xw)Nz	 aiogram/)	connectorheadersFr1   )
rI   closerC   closedr   rD   rH   r   r   r   rX   s    r(   create_sessionzAiohttpSession.create_sessiont   s     ''**,== DMM$8$8).$..F1E1EF?"39[M JDM ,1D(}} s    BBA9Bc                   K   | j                   W| j                   j                  s@| j                   j                          d {    t        j                  d       d {    y y y 7 $7 	w)Ng      ?)rC   r^   r]   asynciosleeprX   s    r(   r]   zAiohttpSession.close   sX     ==$T]]-A-A--%%''' --%%% .B$' &s$   A A+A'A+A) A+)A+c                V   t        d      }i }|j                  d      j                         D ].  \  }}| j                  |||      }|s|j	                  ||       0 |j                         D ]6  \  }}|j	                  ||j                  |      |j                  xs |       8 |S )NF)quote_fields)warnings)botfiles)filename)r   
model_dumpitemsprepare_value	add_fieldreadrh   )rN   rf   methodformrg   keyvalues          r(   build_form_datazAiohttpSession.build_form_data   s    U+&( ++U+;AAC 	'JC&&u#U&CENN3&		'
  ++- 	JCNN

3.3  	 r*   c                  K   | j                          d {   }| j                  j                  |j                  |j                        }| j                  ||      }	 |j                  |||| j                  n|      4 d {   }|j                          d {   }d d d       d {    | j                  ||j                         }
t#        t$        |
j&                        S 7 7 g7 Q7 C# 1 d {  7  sw Y   SxY w# t        j                  $ r}	t        |d      |	d }	~	wt        $ r+}	t        |t        |	      j                   d|	       |	d }	~	ww xY ww)N)tokenrn   )rf   rn   )datatimeoutzRequest timeout error)rn   messagez: )rf   rn   status_codecontent)r_   apiapi_urlrt   __api_method__rr   postrv   textra   TimeoutErrorr   r
   type__name__check_responsestatusr   r   result)rN   rf   rn   rv   sessionurlro   resp
raw_resulteresponses              r(   make_requestzAiohttpSession.make_request   s`     ++--hhSYYv7L7LM##F#;
	a||(/W $  / / #'99;.
/ / &&	 ' 
 L(//22- ./
 // / / / ## 	^&f>UV\]] 	a&faAQAQ@RRTUVTW>XY_``	as   E$C,AE$ &D	 C.D	 
C4C0C4#D	 .C2/D	 3:E$.D	 0C42D	 4D:C=;DD	 	E!D**E!6&EE!!E$c               .  K   |i }| j                          d {   }|j                  ||||      4 d {   }|j                  j                  |      2 3 d {   }| 7 L7 07 6 d d d       d {  7   y # 1 d {  7  sw Y   y xY ww)N)rv   r\   raise_for_status)r_   getry   iter_chunked)	rN   r   r\   rv   
chunk_sizer   r   r   chunks	            r(   stream_contentzAiohttpSession.stream_content   s      ?G++--;;-	  
 	 	
 #||88D  e .	D	 	 	 	 	sx   BA'BA)BB A-A+A- B 'B)B+A--B .B9A<:B BB	BBc                B   K   | j                          d {    | S 7 wrU   )r_   rX   s    r(   
__aenter__zAiohttpSession.__aenter__   s"     !!### 	$s   )Nd   )rO   _ProxyType | Noner?   intrP   r   returnNone)rO   
_ProxyTyper   r   )r   r   )r   r   )r   r   )rf   r   rn   TelegramMethod[TelegramType]r   r   rU   )rf   r   rn   r   rv   z
int | Noner   r   )N   i   T)r   r#   r\   zdict[str, Any] | Nonerv   r   r   r   r   boolr   zAsyncGenerator[bytes, None])r   r   )r   
__module____qualname__rB   rK   propertyrO   setterr_   r]   rr   r   r   r   __classcell__)rS   s   @r(   r;   r;   H   s    1<   \\, ,&( #	33 -3 	3
 
3B *.!% ' 	
   
%,r*   r;   )r%   r5   r   zdict[str, Any])r7   r   r   z)tuple[type[TCPConnector], dict[str, Any]]).
__future__r   ra   r>   collections.abcr   r   typingr   r   r   rF   aiohttpr	   r
   r   r   r   aiohttp.hdrsr   aiohttp.httpr   typing_extensionsr   aiogram.__meta__r   aiogram.exceptionsr   aiogram.methods.baser   baser   aiogram.client.botr   aiogram.methodsr   aiogram.typesr   r#   r3   r5   r6   r   r)   r9   r;   r1   r*   r(   <module>r      s    "  
 4 + +  Q Q # ( " ( 3 - &.'E#y.)){#;&
27"I[ Ir*   