a
    tCwj	                     @  sj   d dl mZ d dlmZ d dlmZ ddlmZ ddlm	Z	m
Z
 eddG d	d
 d
ZG dd dZdS )    )annotations)	dataclass)Iterable   )
AlertEvent)
NtfyConfigNtfyNotifierT)frozenc                   @  s&   e Zd ZU ded< ded< ded< dS )RouteDecisionstrchanneltopicboolurgentN)__name__
__module____qualname____annotations__ r   r   C/home/opc/hanz-radar/runtime/src/hanz_server/notification_router.pyr
   
   s   
r
   c                   @  s|   e Zd ZdZh dZh dZddddddddd	d
dZdddddZdddddZdddddZ	ddddZ
dS )NotificationRouterz-Route HANZ events to dedicated ntfy channels.>   SIAGAAWALEKSEKUSI>   LEPASJUALTAHANN)tokendashboard_urlr   z
str | NoneNone)
server_url
base_topicr   r   returnc                C  s4   | d| _| | _|| _|| _| js0tdd S )N/zbase_topic is required)rstripr    stripr!   r   r   
ValueError)selfr    r!   r   r   r   r   r   __init__   s    
zNotificationRouter.__init__r   r
   )eventr"   c                 C  s   |j | jv r(td| j d|j dkdS |j | jv rPtd| j d|j dv dS |jdv rptd	| j d
ddS td| j dddS )NENTRY-ENTRYr   )r   r   r   GUARD-GUARD>   r   r   >   ZSERVERZFEEDSYSTEMr.   -SYSTEMTNEWS-NEWSF)
new_actionENTRY_ACTIONSr
   r!   GUARD_ACTIONS
event_typer'   r)   r   r   r   route'   s.    




zNotificationRouter.router   c                 C  s&   |  |}tt| j|j| j| jdS )N)r    r   r   r   )r7   r   r   r    r   r   r   )r'   r)   Zdecisionr   r   r   notifier_forC   s    
zNotificationRouter.notifier_forr   c                 C  s   |  ||S )N)r8   sendr6   r   r   r   r9   N   s    zNotificationRouter.sendzdict[str, str])r"   c                 C  s.   | j  d| j  d| j  d| j  ddS )Nr+   r-   r/   r1   )r*   r,   r.   r0   )r!   )r'   r   r   r   topicsQ   s
    



zNotificationRouter.topics)r   r   r   __doc__r3   r4   r(   r7   r8   r9   r:   r   r   r   r   r      s   r   N)
__future__r   dataclassesr   typingr   modelsr   Zntfy_notifierr   r   r
   r   r   r   r   r   <module>   s   