o
    ìcj                     @  sX   d Z ddlmZ ddlZddlmZmZ ddlmZ e	e
Zdd
dZddddZdS )u(   Factory del cliente CRM según Settings.    )annotationsN)Settingsget_settings)CrmApiClientsettingsr   returnstrc                 C  sx   | j pd }|r|dS | jpd }| jpd }|s"tdd|vr3|r-|dS d| dS |j|ddS )z:Prioriza URL absoluta; si no, arma con base_id + template. /u>   Definí CRM_API_BASE_URL o CRM_API_BASE_ID para la API externaz	{base_id}zhttps://z.mockapi.io/api/v1)base_id)crm_api_base_urlstriprstripcrm_api_base_idcrm_api_base_template
ValueErrorformat)r   explicitr   template r   5/var/www/html/bot-asterisk-ari/backend/crm/factory.pyresolve_crm_base_url   s   
r   Settings | Noner   c           	      C  s   | pt  }|jrt|nd}|j|j|jd}|jpd }|rVdd l}z!|	|}t
|trD| D ]\}}|rC|rCt||t|< q3W n |jyU   td| Y nw t|||j|j|jdS )Nzhttp://localhost/)clientes	productospolizasr	   r   u*   CRM_ENDPOINTS_EXTRA no es JSON válido: %r)base_url	endpointsapi_keytimeoutenabled)r   crm_api_enabledr   crm_endpoint_clientescrm_endpoint_productoscrm_endpoint_polizascrm_endpoints_extrar   jsonloads
isinstancedictitemsr   JSONDecodeErrorloggerwarningr   crm_api_keycrm_api_timeout)	r   cfgr   r   extrar&   parsedkeyvaluer   r   r   create_crm_client   s4   


r5   )r   r   r   r   )N)r   r   r   r   )__doc__
__future__r   loggingconfigr   r   
crm.clientr   	getLogger__name__r,   r   r5   r   r   r   r   <module>   s    

