diff --git a/ycast.py b/ycast.py index e31abab..38761d3 100755 --- a/ycast.py +++ b/ycast.py @@ -9,7 +9,6 @@ import xml.etree.cElementTree as etree import yaml VTUNER_INITURL = '/setupapp/Yamaha/asp/BrowseXML/loginXML.asp' -XMLHEADER = '' YCAST_LOCATION = 'ycast' stations = {} @@ -39,19 +38,13 @@ class YCastServer(BaseHTTPRequestHandler): get_stations() self.address = 'http://' + self.headers['Host'] if self.path.startswith(VTUNER_INITURL + '?token='): - self.send_response(200) - self.send_header('Content-type', 'text/html') - self.end_headers() - self.wfile.write(bytes(XMLHEADER, 'utf-8')) + self.send_xml_header() self.wfile.write(bytes('stub', 'utf-8')) elif self.path == '/' \ or self.path == '/' + YCAST_LOCATION \ or self.path == '/' + YCAST_LOCATION + '/'\ or self.path.startswith(VTUNER_INITURL): - self.send_response(200) - self.send_header('Content-type', 'text/html') - self.end_headers() - self.wfile.write(bytes(XMLHEADER, 'utf-8')) + self.send_xml_header() xml = self.create_root() for category in sorted(stations, key=str.lower): self.add_dir(xml, category, @@ -65,14 +58,17 @@ class YCastServer(BaseHTTPRequestHandler): xml = self.create_root() for station in sorted(stations[category], key=str.lower): self.add_station(xml, station, stations[category][station]) - self.send_response(200) - self.send_header('Content-type', 'text/html') - self.end_headers() - self.wfile.write(bytes(XMLHEADER, 'utf-8')) + self.send_xml_header() self.wfile.write(bytes(etree.tostring(xml).decode('utf-8'), 'utf-8')) else: self.send_error(404) + def send_xml_header(self): + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(bytes('', 'utf-8')) + def create_root(self): return etree.Element('ListOfItems')