o
    Fh                     @   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                   @   sX   e Zd Zedeeef deeef fddZedeeef deeef fddZdS )FilesPathWrapperpathreturnc                 C      d S N selfr	   r   r   J/var/www/html/venv/lib/python3.10/site-packages/aiogram/client/telegram.pyto_local      zFilesPathWrapper.to_localc                 C   r   r   r   r   r   r   r   	to_server   r   zFilesPathWrapper.to_serverN)	__name__
__module____qualname__r   r   r   strr   r   r   r   r   r   r      s
    $(r   c                   @   sP   e Zd Zdeeef deeef fddZdeeef deeef fddZdS )BareFilesPathWrapperr	   r
   c                 C      |S r   r   r   r   r   r   r         zBareFilesPathWrapper.to_localc                 C   r   r   r   r   r   r   r   r      r   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dededdfddZedeeef deeef d	eeef defd
dZdeeef deeef fddZ	deeef deeef fddZ
dS )SimpleFilesPathWrapperserver_path
local_pathr
   Nc                 C   s   || _ || _d S r   )r   r   )r   r   r   r   r   r   __init__   s   
zSimpleFilesPathWrapper.__init__base1base2valuec                 C   s   t ||}|| S r   )r   relative_to)clsr   r    r!   relativer   r   r   _resolve   s   zSimpleFilesPathWrapper._resolver	   c                 C      | j | j| j|dS N)r   r    r!   )r%   r   r   r   r   r   r   r   %      zSimpleFilesPathWrapper.to_localc                 C   r&   r'   )r%   r   r   r   r   r   r   r   (   r(   z SimpleFilesPathWrapper.to_server)r   r   r   r   r   classmethodr   r   r%   r   r   r   r   r   r   r      s    


"&r   T)frozenc                   @   s   e Zd ZU dZeed< 	 eed< 	 dZeed< 	 e Z	e
ed< 	 deded	efd
dZdedeeef d	efddZededed	d fddZdS )TelegramAPIServerz'
    Base config for API Endpoints
    basefileFis_localwrap_local_filetokenmethodr
   c                 C      | j j||dS )z
        Generate URL for API methods

        :param token: Bot token
        :param method: API method name (case insensitive)
        :return: URL
        )r0   r1   )r,   format)r   r0   r1   r   r   r   api_url<      zTelegramAPIServer.api_urlr	   c                 C   r2   )z
        Generate URL for downloading files

        :param token: Bot token
        :param path: file path
        :return: URL
        )r0   r	   )r-   r3   )r   r0   r	   r   r   r   file_urlF   r5   zTelegramAPIServer.file_urlkwargsc                 K   s*   | d}| d| 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-   Nr   )rstrip)r#   r,   r7   r   r   r   	from_baseP   s   
zTelegramAPIServer.from_baseN)r   r   r   __doc__r   __annotations__r.   boolr   r/   r   r4   r   r   r6   r)   r   r;   r   r   r   r   r+   ,   s   
 

r+   z,https://api.telegram.org/bot{token}/{method}z/https://api.telegram.org/file/bot{token}/{path}r9   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+   
PRODUCTIONTESTr   r   r   r   <module>   s"    
3
