summaryrefslogtreecommitdiff
path: root/patchtracker/ReqHandler.py
diff options
context:
space:
mode:
Diffstat (limited to 'patchtracker/ReqHandler.py')
-rwxr-xr-xpatchtracker/ReqHandler.py111
1 files changed, 0 insertions, 111 deletions
diff --git a/patchtracker/ReqHandler.py b/patchtracker/ReqHandler.py
deleted file mode 100755
index d978953..0000000
--- a/patchtracker/ReqHandler.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import cgi
-import os
-import sys
-
-import patchtracker.Conf as Conf
-from patchtracker.Templates import ErrorTemplate, LetterTocTemplate, FrontPageTemplate, SearchResultsTemplate
-import patchtracker.DB as DB
-from patchtracker.DB import PatchTrackerDB
-import patchtracker.SourceArchive as SourceArchive
-
-class ReqHandlerException(Exception):
- def __init__(self, msg, code="500 Oh noes"):
- Exception.__init__(self, msg)
- self.status=code
-
-class Cmd:
- def __init__(self):
- self.content_type = 'text/html'
- self.status = "200 OK"
-
-class ErrorCmd(Cmd):
- def __init__(self, msg, code="500 Oh noes"):
- Cmd.__init__(self)
- self.status = code
- self.msg = msg
-
- def output(self):
- return str(ErrorTemplate(self.msg))
-
-class IndexCmd(Cmd):
- def __init__(self, args):
- Cmd.__init__(self)
- if len(args) < 1 or not len(args[0]):
- raise ReqHandlerException("please provide a letter on which to index")
- else:
- self.db = PatchTrackerDB()
- self.letter = args[0]
- self.toc = self.db.findLetterToc(self.letter)
-
- def output(self):
- return str(LetterTocTemplate(self.letter, self.toc))
-
-class MaintCmd(Cmd):
- def __init__(self, args):
- Cmd.__init__(self)
- if len(args) < 1 or not len(args[0]):
- raise ReqHandlerException("please provide a email address on which to index")
- else:
- self.db = PatchTrackerDB()
- self.email = args[0]
- self.toc = self.db.findCollection(email=self.email)
-
- def output(self):
- return str(SearchResultsTemplate(self.email, "maintainer email", self.toc))
-
-class JumpCmd(Cmd):
- def __init__(self, env):
- Cmd.__init__(self)
- form = cgi.FieldStorage(fp=env['wsgi.input'],environ=env)
- self.name = form.getfirst("package")
- self.uri = "%s/package/%s"%(Conf.root_url, self.name)
- self.status = "302 Try this other place kthx"
-
- def output(self):
- return ""
-
-class FrontPageCmd(Cmd):
- def __init__(self):
- Cmd.__init__(self)
- self.db = PatchTrackerDB()
- self.index = self.db.findIndices()
-
- def output(self):
- return str(FrontPageTemplate(self.index))
-
-class CmdHandler:
- def __init__(self, env):
- self.headers = []
- uri = Conf.root_url+env['PATH_INFO']
- #print "Accept:",env['HTTP_ACCEPT']
-
- args = uri[len(Conf.root_url)+1:].split("/")
- cmdarg = args[0]
- if cmdarg == "index":
- self.cmd = IndexCmd(args[1:])
- elif cmdarg == "jump":
- self.cmd = JumpCmd(env)
- self.headers.append( ('Location', self.cmd.uri) )
- elif cmdarg == "email":
- self.cmd = MaintCmd(args[1:])
- elif not len(cmdarg):
- self.cmd = FrontPageCmd()
- else:
- self.cmd = ErrorCmd("invalid command/location '%s'"%(cmdarg), "404 Not found")
-
- self.headers.append( ('Content-type', self.cmd.content_type) )
- self.status = self.cmd.status
-
- def output(self):
- result = None
- result = self.cmd.output()
-
- return result
-
-if __name__ == '__main__':
- fake_env = { 'PATH_INFO': sys.argv[1] }
- cmdh = CmdHandler(fake_env)
- print "Status: %s\nHeaders: %s"%(cmdh.status, cmdh.headers)
- print cmdh.output()