a
    y{Jh                     @   s   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	 G dd deZ
G dd de
ZG d	d
 d
e
ZeddG dd dZedddZedddZdS )    )ABCabstractmethod)	dataclass)Path)AnyUnionc                   @   sT   e Zd Zeeeef eeef dddZeeeef eeef dddZdS )FilesPathWrapperpathreturnc                 C   s   d S N selfr
   r   r   I/var/www/shaz/venv/lib/python3.9/site-packages/aiogram/client/telegram.pyto_local   s    zFilesPathWrapper.to_localc                 C   s   d S r   r   r   r   r   r   	to_server   s    zFilesPathWrapper.to_serverN)	__name__
__module____qualname__r   r   r   strr   r   r   r   r   r   r      s   "r   c                   @   sL   e Zd Zeeef eeef dddZeeef eeef dddZdS )BareFilesPathWrapperr	   c                 C   s   |S r   r   r   r   r   r   r      s    zBareFilesPathWrapper.to_localc                 C   s   |S r   r   r   r   r   r   r      s    zBareFilesPathWrapper.to_serverN)r   r   r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @   s   e Zd ZeeddddZeeeef eeef eeef edddZeeef eeef dd	d
Z	eeef eeef dddZ
dS )SimpleFilesPathWrapperN)server_path
local_pathr   c                 C   s   || _ || _d S r   )r   r   )r   r   r   r   r   r   __init__   s    zSimpleFilesPathWrapper.__init__)base1base2valuer   c                 C   s   t ||}|| S r   )r   relative_to)clsr   r   r   relativer   r   r   _resolve   s    zSimpleFilesPathWrapper._resolver	   c                 C   s   | j | j| j|dS N)r   r   r   )r"   r   r   r   r   r   r   r   %   s    zSimpleFilesPathWrapper.to_localc                 C   s   | j | j| j|dS r#   )r"   r   r   r   r   r   r   r   (   s    z SimpleFilesPathWrapper.to_server)r   r   r   r   r   classmethodr   r   r"   r   r   r   r   r   r   r      s    r   T)frozenc                   @   sv   e Zd ZU dZeed< eed< dZeed< e Z	e
ed< eeeddd	Zeeed
ddZeeed dddZdS )TelegramAPIServerz'
    Base config for API Endpoints
    basefileFis_localwrap_local_file)tokenmethodr   c                 C   s   | j j||dS )z
        Generate URL for API methods

        :param token: Bot token
        :param method: API method name (case insensitive)
        :return: URL
        )r+   r,   )r'   format)r   r+   r,   r   r   r   api_url<   s    zTelegramAPIServer.api_url)r+   r
   r   c                 C   s   | j j||dS )z
        Generate URL for downloading files

        :param token: Bot token
        :param path: file path
        :return: URL
        )r+   r
   )r(   r-   )r   r+   r
   r   r   r   file_urlF   s    zTelegramAPIServer.file_url)r'   kwargsr   c                 K   s*   | d}| f | d| dd|S )z
        Use this method to auto-generate TelegramAPIServer instance from base URL

        :param base: Base URL
        :return: instance of :class:`TelegramAPIServer`
        /z/bot{token}/{method}z/file/bot{token}/{path}r'   r(   )rstrip)r    r'   r0   r   r   r   	from_baseP   s    
zTelegramAPIServer.from_baseN)r   r   r   __doc__r   __annotations__r)   boolr   r*   r   r.   r/   r$   r   r4   r   r   r   r   r&   ,   s   


r&   z,https://api.telegram.org/bot{token}/{method}z/https://api.telegram.org/file/bot{token}/{path}r2   z1https://api.telegram.org/bot{token}/test/{method}z4https://api.telegram.org/file/bot{token}/test/{path}N)abcr   r   dataclassesr   pathlibr   typingr   r   r   r   r   r&   Z
PRODUCTIONTESTr   r   r   r   <module>   s    
3