o
    brh“  ã                   @   s|   d dl mZmZ d dlZd dlZd dlmZmZ eeƒZdd„ Z	e	ƒ  ej
ddgdd	d
„ ƒZedkr<ejddd dS dS )é    )ÚFlaskÚrequestN)ÚdatetimeÚ	timedeltac                  C   s0   t  d¡} |  ¡ }| d¡ |  ¡  |  ¡  d S )Nú"/var/www/html/webhook/locations.dbzCREATE TABLE IF NOT EXISTS locations
                 (device_id TEXT, latitude REAL, longitude REAL, time TEXT, pressure TEXT, wearState TEXT))Úsqlite3ÚconnectÚcursorÚexecuteÚcommitÚclose)ÚconnÚc© r   ú /var/www/html/webhook/webhook.pyÚinit_db	   s
   

r   z/webhookÚPOST)Úmethodsc               
   C   s  zft  ¡ } |  di ¡ dd¡}|  di ¡ di ¡}d}d}d}d}d}d}t|tƒr£i }	t d	|¡}
|
D ]\}}z|d
v rBt|ƒn||	|< W q5 tyT   ||	|< Y q5w |	}| d¡dkr¢| dd¡dkr¢| dd¡dkr¢d}| dd¡}| dd¡}| dd¡ 	d¡rŒt
 ¡  d¡n	| dd¡ dd¡}| dd¡}| dd¡}n‘t|tƒr4| d¡dkrå| dd¡dkrå| dd¡dkråd}| dd¡}| dd¡}| dd¡ dd¡}| dd¡}| dd¡}nO| d¡dkr4| dd¡dkr4| dd¡dkr4d}| dd¡}| dd¡}| dd¡ 	d¡rt
 ¡  d¡n	| dd¡ dd¡}| dd¡}| dd¡}|ret d¡}| ¡ }| d||||||f¡ | dt
 ¡ td d!  d¡f¡ | ¡  | ¡  W d"S  ty‚ } ztd#|› ƒ W Y d }~d$S d }~ww )%NÚend_device_idsÚ	device_idÚunknownÚuplink_messageÚdecoded_payloadg        zN/AFz(\w+)"([^"]*)")ÚlatitudeÚ	longitudeÚgpsStatezgps location successr   r   r   TÚtimeÚ z"1970z%Y-%m-%dT%H:%M:%S.000Zú"ÚpressureÚ	wearStatezMessage typeÚGNSSPositionÚLatitudeÚ	LongitudeÚTimer   z„INSERT INTO locations (device_id, latitude, longitude, time, pressure, wearState)
                         VALUES (?, ?, ?, ?, ?, ?)z$DELETE FROM locations WHERE time < ?é   )Údays)r   éÈ   zError: )r   iô  )r   Úget_jsonÚgetÚ
isinstanceÚstrÚreÚfindallÚfloatÚ
ValueErrorÚ
startswithr   ÚnowÚstrftimeÚreplaceÚdictr   r   r	   r
   r   r   r   Ú	ExceptionÚprint)Údatar   Úpayloadr   r   Ú
time_valuer   r    Úis_validÚpayload_dictÚmatchesÚkeyÚvaluer   r   Úer   r   r   Úwebhook   s€   
ÿ4€6
þ"€þr@   Ú__main__z0.0.0.0i  )ÚhostÚport)Úflaskr   r   r   r,   r   r   Ú__name__Úappr   Úrouter@   Úrunr   r   r   r   Ú<module>   s    
Hÿ