1 from twisted.web import http, resource
2 from EPGRefresh import epgrefresh
3 from EPGRefreshService import EPGRefreshService
4 from enigma import eServiceReference
6 class EPGRefreshStartRefreshResource(resource.Resource):
10 if epgrefresh.forceRefresh():
11 output = "initiated refresh"
14 output = "could not initiate refresh"
16 req.setResponseCode(http.OK)
17 req.setHeader('Content-type', 'application; xhtml+xml')
18 req.setHeader('charset', 'UTF-8')
20 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
23 <e2statetext>%s</e2statetext>
25 """ % ('true' if state else 'false', output)
27 class EPGRefreshAddRemoveServiceResource(resource.Resource):
31 def __init__(self, type):
32 assert(type in (self.TYPE_ADD, self.TYPE_DEL))
35 def render(self, req):
36 do_add = self.type == self.TYPE_ADD
39 if 'sref' in req.args:
40 sref = req.args["sref"][0]
42 # strip all after last : (custom name)
47 duration = req.args.get("duration", None)
49 duration = duration and int(duration)
50 except ValueError, ve:
51 output = 'invalid value for "duration": ' + str(duration)
53 epgservice = EPGRefreshService(sref, duration)
56 ref = eServiceReference(str(sref))
58 output = 'invalid value for "sref": ' + str(sref)
59 elif (ref.flags & 7) == 7:
61 if epgservice in epgrefresh.services[1]:
63 output = "bouquet already in list"
65 epgrefresh.services[1].remove(epgservice)
66 output = "bouquet removed from list"
70 epgrefresh.services[1].add(epgservice)
71 output = "bouquet added to list"
74 output = "bouquet not in list"
77 if epgservice in epgrefresh.services[0]:
79 output = "service already in list"
81 epgrefresh.services[0].remove(epgservice)
82 output = "service removed from list"
86 epgrefresh.services[0].add(epgservice)
87 output = "service added to list"
90 output = "service not in list"
92 # save if list changed
94 epgrefresh.saveConfiguration()
96 output = 'invalid value for "sref": ' + str(sref)
98 output = 'missing argument "sref"'
100 req.setResponseCode(http.OK)
101 req.setHeader('Content-type', 'application; xhtml+xml')
102 req.setHeader('charset', 'UTF-8')
104 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
106 <e2state>%s</e2state>
107 <e2statetext>%s</e2statetext>
109 """ % ('true' if state else 'false', output)
111 class EPGRefreshListServicesResource(resource.Resource):
112 def render(self, req):
114 req.setResponseCode(http.OK)
115 req.setHeader('Content-type', 'application; xhtml+xml')
116 req.setHeader('charset', 'UTF-8')
117 return ''.join(epgrefresh.buildConfiguration(webif = True))