o
    QE®i‰  ã                   @   sè   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m	Z	 d dl
Z
d dlZeƒ Ze d¡Zejedgddgdgd	� g ad
d„ Ze d¡defdd„ƒZe d¡dd„ ƒZg Ze d¡defdd„ƒZedkrre
jdddd� dS dS )é    )ÚFastAPIÚRequestÚ	WebSocketÚWebSocketDisconnect)ÚCORSMiddleware)Újsonable_encoder)ÚdatetimeNzAsia/KolkataÚ*T)Úallow_originsÚallow_credentialsÚallow_methodsÚallow_headersc                 C   sR   z"t  | ¡}td| ¡ › dt  t¡ ¡ › �ƒ | ¡ t  t¡ ¡ kW S    Y dS )NzChecking date: z against current date: F)r   ÚfromisoformatÚprintÚdateÚnowÚIST)Útime_strÚdt© r   ú3/var/www/scanner.itinformatix.com/backend/server.pyÚis_today   s   
"r   z/eventsÚrequestc                 ƒ   sš   �|   ¡ I d H }t|tƒr|g}dd„ tD ƒa|D ]&‰ tˆ tƒr$dˆ vr%qˆ  dd¡ ˆ  dd¡ ‡ fdd„tD ƒat ˆ ¡ qtjd	d
„ dd� ttƒS )Nc                 S   ó    g | ]}t | d d¡ƒr|‘qS ©ÚtimeÚ ©r   Úget©Ú.0Údr   r   r   Ú
<listcomp>)   ó     z!receive_event.<locals>.<listcomp>ÚsymbolÚscorer   Ú	directionÚNEUTRALc                    s"   g | ]}|  d ¡ˆ d  kr|‘qS )r$   )r   r   ©Úitemr   r   r"   3   s   " c                 S   s    t t|  dd¡ƒƒ|  dd¡fS )Nr%   r   r   r   )ÚabsÚfloatr   )Úxr   r   r   Ú<lambda>8   r#   zreceive_event.<locals>.<lambda>T)ÚkeyÚreverse)ÚjsonÚ
isinstanceÚdictÚDATAÚ
setdefaultÚappendÚsortr   )r   Úpayloadr   r(   r   Úreceive_event    s"   €
þr8   c                  C   s   dd„ t D ƒ} t| ƒS )Nc                 S   r   r   r   r   r   r   r   r"   A   r#   zget_events.<locals>.<listcomp>)r3   r   )Ú
today_datar   r   r   Ú
get_events?   s   r:   z/wsÚwsc                 Ã   sL   �|   ¡ I d H  t | ¡ z		 |  ¡ I d H  q ty%   t | ¡ Y d S w )N)ÚacceptÚclientsr5   Úreceive_textr   Úremove)r;   r   r   r   Úwebsocket_endpointH   s   €
ÿÿr@   Ú__main__z
server:appz0.0.0.0i@  )ÚhostÚport)Úfastapir   r   r   r   Úfastapi.middleware.corsr   Úfastapi.encodersr   r   ÚuvicornÚpytzÚappÚtimezoner   Úadd_middlewarer3   r   Úpostr8   r   r:   r=   Ú	websocketr@   Ú__name__Úrunr   r   r   r   Ú<module>   s6    
û	

ÿ