--- /dev/null
+from Components.Sources.Source import Source
+
+class RequestData(Source):
+ """
+ a source for requestinformations like the adress that the client requested to reache the box
+ """
+ HOST = 0
+ PORT = 1
+ METHOD = 2
+ PATH = 3
+ REMOTEADRESS = 4
+ REMOTEPORT = 5
+ REMOTETYPE = 6
+ URI = 7
+
+ def __init__(self,request, what = None):
+ Source.__init__(self)
+ self.request = request
+ self.what = what
+
+ def handleCommand(self, cmd):
+ pass
+
+ def getHTML(self, id):
+ if self.what is self.HOST:
+ return self.request.host
+ elif self.what is self.PORT:
+ return self.request.port
+ elif self.what is self.METHOD:
+ return self.request.method
+ elif self.what is self.PATH:
+ return self.request.path
+ elif self.what is self.REMOTEADRESS:
+ return self.request.remoteAddr.host
+ elif self.what is self.REMOTEPORT:
+ return self.request.remoteAddr.port
+ elif self.what is self.REMOTETYPE:
+ return self.request.remoteAddr.type
+ elif self.what is self.URI:
+ return self.request.uri
+ else:
+ return "N/A"
\ No newline at end of file
from WebComponents.Sources.Timer import Timer
from WebComponents.Sources.Movie import Movie
from WebComponents.Sources.Message import Message
+from WebComponents.Sources.RequestData import RequestData
from Components.Sources.FrontendStatus import FrontendStatus
from Components.Converter.Converter import Converter
# prototype of the new web frontend template system.
class WebScreen(Screen):
- def __init__(self, session):
+ def __init__(self, session,request):
Screen.__init__(self, session)
self.stand_alone = True
-
+ self.request = request
# a test screen
class TestScreen(InfoBarServiceName, InfoBarEvent,InfoBarTuner, WebScreen):
- def __init__(self, session):
- WebScreen.__init__(self, session)
+ def __init__(self, session,request):
+ WebScreen.__init__(self, session,request)
InfoBarServiceName.__init__(self)
InfoBarEvent.__init__(self)
InfoBarTuner.__init__(self)
# TODO: (really.) put screens into own files.
class Streaming(WebScreen):
- def __init__(self, session):
- WebScreen.__init__(self, session)
+ def __init__(self, session,request):
+ WebScreen.__init__(self, session,request)
from Components.Sources.StreamService import StreamService
self["StreamService"] = StreamService(self.session.nav)
class StreamingM3U(WebScreen):
- def __init__(self, session):
- WebScreen.__init__(self, session)
+ def __init__(self, session,request):
+ WebScreen.__init__(self, session,request)
from Components.Sources.StaticText import StaticText
from Components.Sources.Config import Config
from Components.config import config
-
self["ref"] = StaticText()
- self["localip"] = Config(config.network.ip)
+ self["localip"] = RequestData(request,what=RequestData.HOST)
# implements the 'render'-call.
# this will act as a downstream_element, like a renderer.
def __init__(self, name, filternum):
self.name = name
self.filternum = filternum
-
+
class TextToHTML(Converter):
def __init__(self, arg):
Converter.__init__(self, arg)
text = property(getText)
class webifHandler(ContentHandler):
- def __init__(self, session):
+ def __init__(self, session,request):
self.res = [ ]
self.mode = 0
self.screen = None
self.session = session
self.screens = [ ]
+ self.request = request
def startElement(self, name, attrs):
if name == "e2:screen":
- self.screen = eval(attrs["name"])(self.session) # fixme
+ self.screen = eval(attrs["name"])(self.session,self.request) # fixme
self.screens.append(self.screen)
return
# read in the template, create required screens
# we don't have persistense yet.
# if we had, this first part would only be done once.
- handler = webifHandler(session)
+ handler = webifHandler(session,req)
parser = make_parser()
parser.setFeature(feature_namespaces, 0)
parser.setContentHandler(handler)