o
    @Mh                     @   s   d Z dZzddlZddlmZ ddlmZ ddlmZm	Z	 W n e
y)   dZY nw ddlZddlmZ dd	lmZ G d
d dZdS )z
This file is used by AsyncTeleBot.run_webhooks() function.

Fastapi and starlette(0.20.2+) libraries are required to run this script.
T    N)JSONResponse)Request)ServerConfigF)Update)Optionalc                   @   sr   e Zd Z				ddedee dee dee dee d	dfd
dZdd Zdd Z	de
defddZdd ZdS )AsyncWebhookListener	127.0.0.1  Nsecret_tokenhostportssl_contexturl_pathreturnc                 C   sB   |    t | _|| _|| _|| _|| _|| _|| _	| 
  dS )a(  
        Aynchronous implementation of webhook listener
        for asynchronous version of telebot.
        Not supposed to be used manually by user.
        Use AsyncTeleBot.run_webhooks() instead.

        :param bot: AsyncTeleBot instance.
        :type bot: telebot.async_telebot.AsyncTeleBot

        :param secret_token: Telegram secret token
        :type secret_token: str

        :param host: Webhook host
        :type host: str

        :param port: Webhook port
        :type port: int

        :param ssl_context: SSL context
        :type ssl_context: tuple

        :param url_path: Webhook url path
        :type url_path: str

        :raises ImportError: If FastAPI or uvicorn is not installed.
        :raises ImportError: If Starlette version is too old.

        :return: None
        N)_check_dependenciesfastapiFastAPIapp_secret_token_bot_port_host_ssl_context	_url_path_prepare_endpoint_urls)selfbotr   r   r   r   r    r   K/var/www/html/venv/lib/python3.10/site-packages/telebot/ext/aio/webhooks.py__init__   s   $
zAsyncWebhookListener.__init__c                 C   s*   t stddd l}|jdk rtdd S )Nz?Fastapi or uvicorn is not installed. Please install it via pip.r   z0.20.2zLStarlette version is too old. Please upgrade it: `pip3 install starlette -U`)fastapi_installedImportError	starlette__version__)r   r#   r   r   r   r   K   s   
z(AsyncWebhookListener._check_dependenciesc                 C   s   | j j| j| jdgd d S )NPOST)endpointpathmethods)r   add_api_routeprocess_updater   )r   r   r   r   r   U   s   z+AsyncWebhookListener._prepare_endpoint_urlsrequestupdatec                    sn   |j d| jkrtdddidS |j ddkr/|}t| jt	|g tdd	d
S tdddidS )z<
        Processes updates.

        :meta private:
        zX-Telegram-Bot-Api-Secret-Tokeni  error	Forbidden)status_codecontentzcontent-typezapplication/json    )r/   )
headersgetr   r   asynciocreate_taskr   process_new_updatesr   de_json)r   r+   r,   json_stringr   r   r   r*   Y   s   z#AsyncWebhookListener.process_updatec                    sP   t | j| j| j| jd | jd d}t|}| I dH  | j I dH  dS )z
        Run app with the given parameters to init.
        Not supposed to be used manually by user.

        :return: None
        r      )r   r   r   ssl_certfilessl_keyfileN)	r   r   r   r   r   r   server   close_session)r   configserverr   r   r   run_appk   s   zAsyncWebhookListener.run_app)r	   r
   NN)__name__
__module____qualname__strr   inttupler    r   r   r   dictr*   rA   r   r   r   r   r      s,    
0
r   )__doc__r!   r   fastapi.responsesr   fastapi.requestsr   uvicornr   r   r"   r5   telebot.typesr   typingr   r   r   r   r   r   <module>   s    