summaryrefslogtreecommitdiff
path: root/bridge.py
blob: 9af583fd90b7df2eea66a4e5ff577e74e3a78ab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import requests
import boto3

from datetime import datetime
from os import environ
from time import sleep

class AlarmpyBridge():
    URL = "https://www.oref.org.il/WarningMessages/alert/alerts.json"

    HEADERS = {
        "Referer": "https://www.oref.org.il/11226-he/pakar.aspx",
        "X-Requested-With": "XMLHttpRequest",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
    }

    def __init__(self):
        self.sess = requests.Session()
        self.sess.headers.update(self.HEADERS)
        self.last = None
        self.s3 = boto3.client("s3")
        self.bucket_name = environ.get("S3_BUCKET_NAME")

    def loop(self):
        ts = datetime.now().isoformat()
        print(f"{ts} Starting Alarmpy Bridge loop...")
        while True:
            try:
                self.fetch()
            except Exception as e:
                print(e)
                pass
            finally:
                sleep(0.5)
    
    def fetch(self):
        res = self.sess.get(self.URL).content
        if res != self.last:
            self.last = res
            self.update()
        
    
    def update(self):
        res = self.last
        ts = datetime.now().isoformat()
        print(f"{ts} Updating {res}")
        self.s3.put_object(
            Bucket=self.bucket_name,
            Body=res,
            Key="alerts.json",
            CacheControl="max-age=1, public",
            StorageClass='STANDARD',
        )

if __name__== "__main__":
    ab = AlarmpyBridge()
    ab.loop()