o
    )ãijý  ã                   @   sF   d dl mZ d dlZd dlmZ G dd„ deƒZeG dd„ dƒƒZdS )é    )Ú	dataclassN)ÚMappingc                   @   s   e Zd ZdZdS )ÚAroFloConfigErroru)   Error de configuraciÃ³n de la app Aroflo.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r	   r	   ú>/var/www/html/flask_server/apps/aroflo_connector_app/config.pyr      s    r   c                   @   s~   e Zd ZU eed< eed< eed< eed< eed< eed< eed< dZeed	< ed
eeef dd fdd„ƒZ	eddd„ƒZ
dS )ÚAroFloSettingsÚbase_urlÚ	u_encodedÚ	p_encodedÚ
api_secretÚorg_encodedÚacceptÚhost_ipé   ÚtimeoutÚcredentialsÚreturnc                    sà   d}‡ fdd„|D ƒ}|rt dƒ‚ztˆ  d¡pdƒ}W n ttfy/ } zt dƒ|‚d}~ww | tˆ d	 ƒ ¡ tˆ d
 ƒ ¡ tˆ d ƒ ¡ tˆ d ƒtˆ d ƒ ¡ tˆ  d¡pYdƒ ¡ tˆ  d¡pcdƒ ¡ tdt|dƒƒdS )zHBuild tenant-scoped settings from values resolved by the platform vault.)Úaroflo_base_urlÚaroflo_u_encodedÚaroflo_p_encodedÚaroflo_api_secretÚaroflo_org_encodedc                    s&   g | ]}t ˆ  |¡pd ƒ ¡ s|‘qS )Ú )ÚstrÚgetÚstrip)Ú.0Úname©r   r	   r
   Ú
<listcomp>    s   & z3AroFloSettings.from_credentials.<locals>.<listcomp>z3Required AroFlo API credentials are not configured.Úaroflo_timeouté   z"AroFlo timeout must be an integer.Nr   r   r   r   r   Úaroflo_acceptú	text/jsonÚaroflo_host_ipr   é   é<   ©r   r   r   r   r   r   r   r   )	r   Úintr   Ú	TypeErrorÚ
ValueErrorr   r   ÚmaxÚmin)Úclsr   ÚrequiredÚmissingr   Úexcr	   r"   r
   Úfrom_credentials   s(   
€ÿ
øzAroFloSettings.from_credentialsc                 C   s€   g d¢}dd„ |D ƒ}|rt dd |¡› ƒ‚| t d¡t d¡t d¡t d	¡t d
¡t dd¡t dd¡tt dd¡ƒdS )ui  
        Carga la configuraciÃ³n desde variables de entorno.

        Obligatorias:
          - AROFLO_BASE_URL
          - AROFLO_UENCODED
          - AROFLO_PENCODED
          - AROFLO_API_SECRET
          - AROFLO_ORG_ENCODED
        Opcionales:
          - AROFLO_ACCEPT (text/json por defecto)
          - AROFLO_HOST_IP
          - AROFLO_TIMEOUT
        )ÚAROFLO_BASE_URLÚAROFLO_UENCODEDÚAROFLO_PENCODEDÚAROFLO_API_SECRETÚAROFLO_ORG_ENCODEDc                 S   s   g | ]}t  |¡d u r|‘qS )N)ÚosÚgetenv)r    Úvr	   r	   r
   r#   K   s    z+AroFloSettings.from_env.<locals>.<listcomp>z)Faltan variables de entorno para AroFlo: z, r6   r7   r8   r9   r:   ÚAROFLO_ACCEPTr'   ÚAROFLO_HOST_IPr   ÚAROFLO_TIMEOUTÚ30r+   )r   Újoinr;   r<   r,   )r1   r2   r3   r	   r	   r
   Úfrom_env4   s    ÿ

øzAroFloSettings.from_envN)r   r   )r   r   r   r   Ú__annotations__r   r,   Úclassmethodr   r5   rC   r	   r	   r	   r
   r      s   
 r   )Údataclassesr   r;   Útypingr   ÚRuntimeErrorr   r   r	   r	   r	   r
   Ú<module>   s   