#!/usr/bin/env python3

import ssl
import websocket
import json
import os
import psycopg2
import lorautil

class Loriot():
    def __init__(self):
        ws = websocket.WebSocket()

    def connect(self):
        tokenurl = os.environ['LORIOT_URL']
        self.ws = websocket.create_connection(tokenurl, sslopt={"cert_reqs": ssl.CERT_NONE})

    def listen(self):
        while True:
            result = self.ws.recv()
            print(result)

            jdata = lorautil.jsonToDict(result)
            eui = self.devEUI(jdata)

            try:
                payload = get_payload(jdata)
            except Exception:
                payload = ""

            lorautil.db_insert_json("loriot", result, payload=payload, deveui=eui)
            lorautil.db_notify("loriot", payload=payload, deveui=eui)

    def devEUI(self, data):
        return data['EUI']

    def get_payload(self, data):
        return bytes.fromhex(data['payload']).decode('utf-8')

if __name__ == '__main__':
    l = Loriot()
    l.connect()
    l.listen()