
import urllib.request
import urllib.parse
import urllib.error
from openmtc_app.onem2m import XAE
import uuid


class DataVisualization(XAE):
    remove_registration = True
    remote_cse = '/mn-cse-1/onem2m'
    period = 10

    def _on_register(self):
        # init variables
        self.sensor_register = {}
        self.sensor_register = []
        self.sensor_values = []
        self.name = uuid.uuid1()
        self.things_name = urllib.request.urlopen("https://dweet.io/follow/%s" % self.name)
        print("Thing name :", self.name)
        print("link for the current data type and values :", self.things_name.geturl())
        # start endless loop
        self.periodic_discover(self.remote_cse,
                               {'labels': ["openmtc:sensor_data"]},
                               self.period, self.handle_discovery_sensor)

    def handle_discovery_sensor(self, discovery):
        for uri in discovery:
            self.add_container_subscription(uri, self.handle_sensor_data)

    def handle_sensor_data(self, container, content):
        data = {}
        self.sensor_register.append(content[0]['n'])
        self.sensor_values.append(content[0]['v'])
        for i, k in zip(self.sensor_register, self.sensor_values):
            data.update({i: k})
            params = urllib.parse.urlencode(data)
        urllib.request.urlopen("https://dweet.io/dweet/for/%s?%s" % (self.name, params))


if __name__ == "__main__":
    from openmtc_app.flask_runner import SimpleFlaskRunner as Runner

    ep = "http://localhost:8000"
    Runner(DataVisualization(), port=6050, host='auto').run(ep)


