o
    #1 i­  ã                   @   sÚ   d dl 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
mZ ddlmZ e d¡ZG dd	„ d	eƒZd
eddfdd„Zddd„Zdee fdd„Zdee fdd„Zdedefdd„Zdefdd„ZdS )é    N)ÚOptional)Ú	BaseModel)Úmodel_dump_jsonÚmodel_validate_jsoné   )Úget_auth_pathZfastapi_clic                   @   s   e Zd ZU eed< dS )Ú
AuthConfigÚaccess_tokenN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© r   r   úh/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/fastapi_cloud_cli/utils/auth.pyr      s   
 r   Ú	auth_dataÚreturnc                 C   s2   t ƒ }t d|¡ |jt| ƒdd t d¡ d S )NzWriting auth config to: %súutf-8©Úencodingz Auth config written successfully)r   ÚloggerÚdebugÚ
write_textr   )r   Ú	auth_pathr   r   r   Úwrite_auth_config   s   r   c                  C   s>   t ƒ } t d| ¡ |  ¡ r|  ¡  t d¡ d S t d¡ d S )NzDeleting auth config at: %sz Auth config deleted successfullyz1Auth config file doesn't exist, nothing to delete)r   r   r   ÚexistsÚunlink©r   r   r   r   Údelete_auth_config   s   r   c                  C   sD   t ƒ } t d| ¡ |  ¡ st d¡ d S t d¡ tt| jddƒS )NzReading auth config from: %szAuth config file doesn't existzAuth config loaded successfullyr   r   )r   r   r   r   r   r   Ú	read_textr   r   r   r   Úread_auth_config(   s   

r    c                  C   s6   t  d¡ tƒ } | d u rt  d¡ d S t  d¡ | jS )NzGetting auth tokenzNo auth data foundz!Auth token retrieved successfully)r   r   r    r	   )r   r   r   r   Úget_auth_token4   s   


r!   Útokenc           
   
   C   s   zr|   d¡}t|ƒdkrt dt|ƒ¡ W dS |d }t|ƒd  }r+|dd|  7 }| dd	¡ d
d¡}t |¡}t |¡}| 	d¡}|d u rPt d¡ W dS t
|tƒs`t dt|ƒ¡ W dS t ¡ }||k}t d|||¡ |W S  tjtjfy }	 zt d|	¡ W Y d }	~	dS d }	~	ww )NÚ.é   z,Invalid JWT format: expected 3 parts, got %dTr   é   ú=ú-ú+Ú_ú/ÚexpzNo 'exp' claim found in tokenFz)Invalid 'exp' claim: expected int, got %sz6Token expiration check: current=%d, exp=%d, expired=%szError parsing JWT token: %s)ÚsplitÚlenr   r   ÚreplaceÚbase64Ú	b64decodeÚjsonÚloadsÚgetÚ
isinstanceÚintÚtypeÚtimeÚbinasciiÚErrorÚJSONDecodeError)
r"   ÚpartsÚpayloadÚpaddingZdecoded_bytesZpayload_datar+   Úcurrent_timeÚ
is_expiredÚer   r   r   Úis_token_expired@   s@   





ü€ýrA   c                  C   s@   t ƒ } | d u rt d¡ dS t| ƒrt d¡ dS t d¡ dS )NzLogin status: False (no token)Fz#Login status: False (token expired)zLogin status: TrueT)r!   r   r   rA   )r"   r   r   r   Úis_logged_inp   s   


rB   )r   N)r/   r8   r1   Úloggingr7   Útypingr   Zpydanticr   Z'fastapi_cloud_cli.utils.pydantic_compatr   r   Úconfigr   Ú	getLoggerr   r   r   r   r    r   r!   ÚboolrA   rB   r   r   r   r   Ú<module>   s"    

0