
    dh                     ~   U d dl m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	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d	d
l%m&Z&m'Z' d	dl(m)Z) d	dl
m*Z*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 erddl3m4Z4 edef   Z5ede6f   Z7dZ8de9d<    G d dejt                        Z;y)    )annotationsN)Enum)
HTTPStatus)TracebackType)	TYPE_CHECKINGAnyAsyncGeneratorCallableDictFinalOptionalTypecast)ValidationError)ClientDecodeErrorRestartingTelegramTelegramAPIErrorTelegramBadRequestTelegramConflictErrorTelegramEntityTooLargeTelegramForbiddenErrorTelegramMigrateToChatTelegramNotFoundTelegramRetryAfterTelegramServerErrorTelegramUnauthorizedError   )ResponseTelegramMethod)TelegramType)	InputFileTelegramObject   )Default)
PRODUCTIONTelegramAPIServer   )RequestMiddlewareManager)Bot.g      N@zFinal[float]DEFAULT_TIMEOUTc                  t   e Zd ZdZeej                  ej                  ef	 	 	 	 	 	 	 	 	 ddZ		 	 	 	 	 	 	 	 	 	 ddZ
ej                  dd       Zej                  	 d	 	 	 	 	 	 	 dd       Zej                  	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd       Z	 d	 	 	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 dd	Zdd
Z	 	 	 	 	 	 	 	 ddZy)BaseSessionz
    This is base class for all HTTP sessions in aiogram.

    If you want to create your own session, you must inherit from this class.
    c                Z    || _         || _        || _        || _        t	               | _        y)z

        :param api: Telegram Bot API URL patterns
        :param json_loads: JSON loader
        :param json_dumps: JSON dumper
        :param timeout: Session scope request timeout
        N)api
json_loads
json_dumpstimeoutr(   
middleware)selfr.   r/   r0   r1   s        U/var/www/netwell/bot/venv/lib/python3.12/site-packages/aiogram/client/session/base.py__init__zBaseSession.__init__>   s*     $$24    c                <   	 | j                  |      }	 t        |j                     }|j                  |d|i      }t        j                  |cxk  rt        j                  k  rn n|j                  r|S t        t        |j                        }	|j                  x}
rH|
j                  rt!        ||	|
j                        |
j"                  rt%        ||	|
j"                        |t        j&                  k(  rt)        ||	      |t        j*                  k(  rt-        ||	      |t        j.                  k(  rt1        ||	      |t        j2                  k(  rt5        ||	      |t        j6                  k(  rt9        ||	      |t        j:                  k(  rt=        ||	      |t        j>                  k\  rd	|	v rtA        ||	      tC        ||	      tE        ||	      # t        $ r}t        d||      d}~ww xY w# t        $ r}t        d||      d}~ww xY w)
z'
        Check response status
        zFailed to decode objectNbot)contextzFailed to deserialize object)methodmessageretry_after)r:   r;   migrate_to_chat_id)r:   r;   restart)#r/   	Exceptionr   r   __returning__model_validater   r   OKIM_USEDokr   strdescription
parametersr<   r   r=   r   BAD_REQUESTr   	NOT_FOUNDr   CONFLICTr   UNAUTHORIZEDr   	FORBIDDENr   REQUEST_ENTITY_TOO_LARGEr   INTERNAL_SERVER_ERRORr   r   r   )r3   r8   r:   status_codecontent	json_dataeresponse_typeresponserF   rG   s              r4   check_responsezBaseSession.check_responseS   s   	K0I	R$V%9%9:M$33Is|3TH ==K=:+=+==(++O3 4 45!,,,:,%%(!;JDZDZ  ,,+!''1'D'D 
 *000$FKHH*..."&+FF*---'v{KK*111+6;OO*...(LL*===(LL*:::K'(LL%V[II
 	
[  	K $$=q'JJ		K  	R#$BAyQQ	Rs.   G" (H  "	G=+G88G= 	H	HHc                   K   yw)z&
        Close client session
        N r3   s    r4   closezBaseSession.close   s     
 	   Nc                   K   yw)z
        Make request to Telegram Bot API

        :param bot: Bot instance
        :param method: Method instance
        :param timeout: Request timeout
        :return:
        :raise TelegramApiError:
        NrW   )r3   r8   r:   r1   s       r4   make_requestzBaseSession.make_request   s       	rZ   c                  K   d yw)z
        Stream reader
        r6   NrW   )r3   urlheadersr1   
chunk_sizeraise_for_statuss         r4   stream_contentzBaseSession.stream_content   s      	s   	c           
        |yt        |t              r|S t        |t              r.|j                  |j                     }| j                  ||||      S t        |t              rt        j                  d      }|||<   d| S t        |t              rP|j                         D ci c]   \  }}| j                  |||d      x}	 ||" }}}|r| j                  |      S |S t        |t              r<|D cg c]  }| j                  |||d      x}	 | }}|r| j                  |      S |S t        |t        j                        rCt        j                  j                         }	t        t!        |	|z   j#                                     S t        |t        j                        r"t        t!        |j#                                     S t        |t$              r| j                  |j&                  ||      S t        |t(              r%| j                  |j+                  d      |||      S |r| j                  |      S |S c c}}w c c}w )z+
        Prepare value before send
        N)r8   files_dumps_json
   z	attach://F)r8   rd   )warnings)
isinstancerE   r$   defaultnameprepare_valuer!   secretstoken_urlsafedictitemsr0   listdatetime	timedeltanowround	timestampr   valuer"   
model_dump)
r3   rv   r8   rd   re   default_valuekeyitemprepared_itemrs   s
             r4   rk   zBaseSession.prepare_value   s]    =eS!LeW%KK

3M%%mEWb%cceY'''+CE#Jse$$eT" "'	C%)%7%7#U &8 & M  ]"	E 	 u--LeT" "	%)%7%7#U &8 & M  	E 	 u--LeX//0##'')CucEk446788eX../uU__./00eT"%%ekks%%HHe^,%%  % 0'	 &   ??5))W		s   &%I 7!Ic                   K   | j                   j                  | j                  |      }t        t         |||       d {         S 7 w)N)r1   )r2   wrap_middlewaresr\   r   r    )r3   r8   r:   r1   r2   s        r4   __call__zBaseSession.__call__   sB      __55d6G6GQX5Y
L
3(?"?@@"?s   >A A	
	Ac                   K   | S wNrW   rX   s    r4   
__aenter__zBaseSession.__aenter__   s     s   c                @   K   | j                          d {    y 7 wr   )rY   )r3   exc_type	exc_value	tracebacks       r4   	__aexit__zBaseSession.__aexit__  s      jjls   )
r.   r&   r/   
_JsonLoadsr0   
_JsonDumpsr1   floatreturnNone)
r8   r)   r:   TelegramMethod[TelegramType]rO   intrP   rE   r   zResponse[TelegramType])r   r   r   )r8   r)   r:   r   r1   zOptional[int]r   r    )N   i   T)r^   rE   r_   zOptional[Dict[str, Any]]r1   r   r`   r   ra   boolr   zAsyncGenerator[bytes, None])T)
rv   r   r8   r)   rd   zDict[str, Any]re   r   r   r   )r   r,   )r   zOptional[Type[BaseException]]r   zOptional[BaseException]r   zOptional[TracebackType]r   r   )__name__
__module____qualname____doc__r%   jsonloadsdumpsr*   r5   rU   abcabstractmethodrY   r\   rb   rk   r~   r   r   rW   r6   r4   r,   r,   7   s    ",!%!%(55 5 	5
 5 
5*8
8
 <8
KN8
Y\8
	8
t 	  	
 "&	 - 	
 
 " 	 -1!% * 	
   
% $ !AA A 	A
 A 
AN "&	AA -A 	A
 
A/ + +	
 
r6   r,   )<
__future__r   r   rq   r   rl   enumr   httpr   typesr   typingr   r   r	   r
   r   r   r   r   r   pydanticr   aiogram.exceptionsr   r   r   r   r   r   r   r   r   r   r   r   methodsr   r   methods.baser    r!   r"   ri   r$   telegramr%   r&   middlewares.managerr(   r8   r)   r   rE   r   r*   __annotations__ABCr,   rW   r6   r4   <module>r      s    " 
      
 
 
 %    0 ( .  4 9c3h
c3h
 $ $R#'' Rr6   