from flask import Response from io import BytesIO import xml.etree.ElementTree from fHDHR.tools import sub_el class RMG_Devices_DeviceKey_Channels(): endpoints = ["/devices//channels", "/rmg/devices//channels"] endpoint_name = "rmg_devices_devicekey_channels" endpoint_methods = ["GET"] def __init__(self, fhdhr): self.fhdhr = fhdhr def __call__(self, devicekey, *args): return self.get(devicekey, *args) def get(self, devicekey, *args): """Returns the current channels.""" out = xml.etree.ElementTree.Element('MediaContainer') if devicekey == self.fhdhr.config.dict["main"]["uuid"]: out.set('size', str(len(self.fhdhr.device.channels.list))) for fhdhr_id in list(self.fhdhr.device.channels.list.keys()): channel_obj = self.fhdhr.device.channels.list[fhdhr_id] if channel_obj.enabled: sub_el(out, 'Channel', drm="0", channelIdentifier="id://%s" % channel_obj.number, name=channel_obj.dict["name"], origin=channel_obj.dict["callsign"], number=str(channel_obj.number), type="tv", # TODO param signalStrength="100", signalQuality="100", ) fakefile = BytesIO() fakefile.write(b'\n') fakefile.write(xml.etree.ElementTree.tostring(out, encoding='UTF-8')) device_xml = fakefile.getvalue() return Response(status=200, response=device_xml, mimetype='application/xml')