
    (gh                        d Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlmZmZmZ ddlZddlZddlmZ dd	lT  e            Z e              ej        d
          ZdZ ee          Z ee          fdefdZe                    d ee          g          d             Ze                    d ee          g          d             Ze                    d ee          g          d             ZdZ ej        eej        d           e                     d ee          g          defd            Z!e                    d ee          g          d             Z"e                    d ee          g          d             Z#e                    d ee          g          d              Z$ej%        &                    ej%        '                    e(          d!          Z)e                    d"          d#efd$            Z*e                    d% ee          g          d(d'            Z+dS ))z
main.py
Main API file used for handling Prestonet API reqs
Author: Vojtech Pokorny, vojtech.pokorny@prestonet.cz
Date (last edit): 6.2.2025
Note: Using framework FastAPI
    )FastAPIDependsHTTPExceptionstatusRequest)APIKeyHeader)FileResponseN)load_dotenv)r   r   r   )datetime)*API_KEYz	x-api-key)nameapi_keyc                 V   K   | t           k    rt          t          j        d          d S )NzInvalid API keystatus_codedetail)r   r   r   HTTP_403_FORBIDDEN)r   s    /var/www/api/main.pyauthenticater   &   s9      w(
	 	 	      /)dependenciesc                     K   dddS )Nz$Welcome to the Prestonet API server!   )messageauth r   r   r   	read_rootr   .   s       4
	 	 r   z/testc                     K   	 t                      S # t          $ r0} t          t          j        dt          |                      d } ~ ww xY w)NAn error occurred: r   )get_test_json	Exceptionr   r   HTTP_500_INTERNAL_SERVER_ERRORstr)es    r   get_testr'   6   sb      	   4
(A
(
(	 	 	 s    
A+AAz/qrcodec                   K   	 t          | ||          S # t          $ r-}t          t          j        t          |                    d }~wt          $ r0}t          t          j        dt          |                     d }~ww xY wNr   r!   )generate_qrcode
ValueErrorr   r   HTTP_400_BAD_REQUESTr%   r#   r$   )ssidpasswordoutput_fileveerrs        r   
get_qrcoder2   A   s      	x	5	55   *"gg	 	 	  	    ?.CHH..	 	 	 s     
B(AB+A??Bzlogs/prestonet_webhooks.logz%(asctime)s - %(message)s)filenamelevelformatz/log/prestonet-webhooksrequestc                   K   	 |                                   d {V }t          j        |d          }t          j        |           dddS # t          $ r3}t          j        dt          |                      dddcY d }~S d }~ww xY w)	N),:)
separatorsz	Log savedsuccess)r   r   zError saving log: zFailed to save logerror)jsondumpslogginginfor#   r<   r%   )r6   body	log_entryr&   s       r   add_logrC   T   s      >||~~						$j*555)	,y I	6	66 > > >	--SVV--...)W	=	=======>s   AA 
B
(B?B
B
c                   K   	 t          d|           S # t          $ r-}t          t          j        t          |                    d }~wt          $ r0}t          t          j        dt          |                     d }~ww xY w)Nz(/var/www/api/logs/prestonet_webhooks.logr   r!   )get_button_logsr+   r   r   r,   r%   r#   r$   )button_namer0   r1   s      r   get_logsrG   _   s      	C[	Q	QQ   *
b''	 	 	  	   4
*C
*
*	 	 	 s     
B(AB+A>>Bz/prestonet-webhooks/adminc                    K   	 t                      S # t          $ r-} t          t          j        t          |                     d } ~ wt          $ r0}t          t          j        dt          |                     d }~ww xY wr)   )get_admin_listr+   r   r   r,   r%   r#   r$   )r0   r1   s     r   get_admin_prestonet_webhooksrJ   o   s      			   *
b''	 	 	  	   4
*C
*
*	 	 	 s     
B(AB+A<<Bz/prestonet-webhooks/groupsc                 
  K   	 t          |           S # t          $ r-}t          t          j        t          |                    d }~wt          $ r0}t          t          j        dt          |                     d }~ww xY wr)   )get_user_group_listr+   r   r   r,   r%   r#   r$   )emailr0   r1   s      r   get_groups_prestonet_webhooksrN   ~   s      	U	#	##   *
b''	 	 	  	   4
*C
*
*	 	 	 s     
B(AB+A==Bimagesz/download/{filename}r3   c                 
   K   d S )Nr   )r3   s    r   download_filerQ      s      
Fr   z/gpt-tokensgpt-4o-minic                   K   	 dt          | |          iS # t          $ r-}t          t          j        t          |                    d }~wt          $ r0}t          t          j        dt          |                     d }~ww xY w)Nnumber_of_tokensr   zAn error occured )count_tokensr+   r   r   r,   r%   r#   r$   )promptmodelr0   r1   s       r   get_gpt_countrX      s      "\&%%@%@AA   "72ww   	    "A53s8855   	s     
B(AB+B  B)rR   ),__doc__fastapir   r   r   r   r   fastapi.securityr   fastapi.responsesr	   osdotenvr
   r=   r?   r   scriptsappgetenvr   API_KEY_NAMEapi_key_headerr%   r   getr   r'   r2   LOG_FILEbasicConfigINFOpostrC   rG   rJ   rN   pathjoindirname__file__
IMAGES_DIRrQ   rX   r   r   r   <module>rn      s    E D D D D D D D D D D D D D ) ) ) ) ) ) * * * * * * 
			       - - - - - - - - - -             gii 
")I

 <000 '.gn&=&=       GGL11233  43  5 5677  87 '',"7"7!899  :9 )  XW\B] ^ ^ ^ ^
#77<3H3H2IJJ>7 > > > KJ> 	"'',2G2G1HII  JI 	$GGL4I4I3JKK  LK 	%WW\5J5J4KLL  ML  W\\"'//(33X>>
	  #    ! " ggl&;&;%<==   >=  r   