o
    f2i	                     @  sV  d dl mZ d dlZd dlZd dlZd dlmZmZmZm	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mZ eeje d	 ejejd
d edZd)ddZe
 e
jddddd*ddZe  d+ddZ!d,ddZ"e  d+dd Z#e d!e
jd"dd#dd-d%d&Z$dd'l%m&Z' e(e' e)d(kre  dS dS ).    )annotationsN)DictAnyListTuple)load_dotenv)	urlencode   )AroFloClientAroFloError)AroFloConfigErrorAroFloSettingsz.envz"%(levelname)s:%(name)s:%(message)s)levelformat
aroflo_clireturnr
   c                   C  s   t  S )zN
    Helper central para crear el cliente AroFlo para comandos generales.
    )r
    r   r   ;/var/www/html/flask_server/apps/aroflo_connector_app/cli.pymake_client   s   r   z--debugTzActiva logs en modo DEBUG.)is_flaghelpdebugboolNonec                 C  s&   | rt  t j td dS dS )z!CLI para la AroFlo Connector App.zModo DEBUG activado.N)logging	getLoggersetLevelDEBUGlogr   )r   r   r   r   cli"   s   r   c               
   C  s   zt  } W n ty" } ztd tt| tdd}~ww td | j| jdd d | j	dd d | j
dd d | jdd d | j| j| jd}ttj|dd	 dS )
uB   Verifica que las variables de entorno necesarias estén presentes.u   ❌ Configuración incompleta:r	   Nu'   ✅ Configuración OK. Valores leídos:   z...)base_url	u_encoded	p_encoded
api_secretorg_encodedaccepthost_iptimeout   indent)r   from_envr   clickechostr
SystemExitr!   r"   r#   r$   r%   r&   r'   r(   jsondumps)settingsexcmaskedr   r   r   envcheck.   s&   


r6   Tuple[Dict[str, Any], str]c                  C  s    g d} t | }t| }||fS )zH
    Replica el urlVarString del script de Postman para zone=users.
    ))zoneusers)wherezand|createdutc|>|2001-01-01)page1)r   dict)params_list
var_stringparamsr   r   r   build_users_queryI   s   rA   c               
   C  s   zt  } W n ty! } ztd tt| tdd}~ww t \}}z| jdd||d}W n tyN } ztd tt| tdd}~ww td tt	j
|d	d
 dS )z?
    Ping simple a AroFlo usando base_url + ?zone=users...
       ❌ Error de configuración:r	   N GETmethodr@   r?   u!   ❌ Error al conectar con AroFlo:u2   ✅ Conexión OK a zone=users. Respuesta resumida:r)   r*   )r   r   r-   r.   r/   r0   rA   requestr   r1   r2   )clientr4   r@   r?   datar   r   r   pingW   s0   





rJ   z	users-rawz--include-rawz&Imprime la respuesta completa en JSON.include_rawc              
   C  s~  zt  }W n ty! } ztd tt| tdd}~ww t \}}z|jdd||d}W n tyN } ztd tt| tdd}~ww | r]tt	j
|dd	 dS |d
i }|dps|dps|dpsg }tdt|  |D ]<}|dp|dp|d}	|dp|dp|dp|dd d|dd  }
td|	 d|
  qdS )uW   
    Lista usuarios desde AroFlo usando zone=users en base_url (versión antigua).
    rB   r	   NrC   rD   rE   u   ❌ Error al obtener usuarios:r)   r*   zoneresponser9   itemsrecordszUsuarios recibidos: useridUserIDidnameUserNameusername
givennames surnamez- z: )r   r   r-   r.   r/   r0   rA   rG   r   r1   r2   getlenstrip)rK   rH   r4   r@   r?   rI   r8   rN   uuidrR   r   r   r   	users_rawu   sN   




"
 r]   )r9   __main__)r   r
   )r   r   r   r   )r   r   )r   r7   )rK   r   r   r   )*
__future__r   r1   r   ostypingr   r   r   r   r-   dotenvr   urllib.parser   rH   r
   r   configr   r   pathjoingetcwdbasicConfigINFOr   r   r   groupoptionr   commandr6   rA   rJ   r]   zones.users.clir9   users_groupadd_command__name__r   r   r   r   <module>   sB   



/

