U
    }_i
                     @   sD   d dl Z d dlmZmZ d dlmZ e  G dd dZe  dS )    N)ListOptional)load_dotenvc                   @   s  e Zd ZU dZeddZeed< e	eddZ
e	ed< eddZeed< edd	Zeed< d
Zeed< e	eddZe	ed< eddZeed< eddZeed< eddZeed< eddZeed< eddZeed< dZeed< eddZeed< eddZeed< eddZeed< ed d!Zeed < ed"d#Zeed"< eed$d%d&Zed'd$d(d)Zd'S )*Configz
    Configuration class that handles all application settings.
    Follows SRP by being responsible only for configuration management.
    COMPANY_NAMEzMcube Telecom pvt LimitedPORTi  MCUBE_WEBSOCKET_URLz1ws://10.0.0.109:7900/ws/testsession_1754994722754MCUBE_WEBSOCKET_BASE_URLzws://10.0.0.109:7900/ws/zaudio/x-mulawMCUBE_AUDIO_FORMATMCUBE_SAMPLE_RATEZ8000AGENT_PHONE_NUMBERZ
7780787875ELEVENLABS_API_KEYZ@9949533918874a9b32624810f7357ffc6abf6127f96adbd2648db174e79162faELEVENLABS_VOICE_IDZtyOTyLYwi6G1V4rsb6uyELEVENLABS_MODEL_IDZeleven_turbo_v2ELEVENLABS_AGENT_IDZ"agent_3301kcv44gznf2jsysaz9n8d1xm4FSHOW_TIMING_MATHDATABASE_HOSTz
10.0.0.109DATABASE_NAMEZdevvoicelabs_clusterDATABASE_USERZadminDATABASE_PASSWORDzmcube@admin123DATABASE_CHARSETZutf8mb4)returnc                 C   s
   t | jS )z0Return True if Mcube configuration is available.)boolr   )cls r   +/var/www/html/live_calls/homebook/config.pyhas_mcube_config"   s    zConfig.has_mcube_configNc                 C   sJ   dddg}g }|D ]}t | |ds|| q|rFtdd| dS )z0Validate that required configuration is present.r   r   r   Nz#Missing required config variables: z, )getattrappend
ValueErrorjoin)r   Zrequired_varsmissingvarr   r   r   validate_required_config'   s    zConfig.validate_required_config)__name__
__module____qualname____doc__osgetenvr   str__annotations__intr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   classmethodr   r#   r   r   r   r   r      s,   
r   )r(   typingr   r   Zdotenvr   r   r#   r   r   r   r   <module>   s
   2