import cgi class IllegalMethodException(BaseException): pass class InvalidArgumentException(BaseException): pass class Request: def __init__(self, env = None): if env: self.fromEnv(env) def fromEnv(self, env): if env["REQUEST_METHOD"] == "POST": self.args = cgi.parse_qs(env['wsgi.input'].readline().decode(), True) elif env["REQUEST_METHOD"] == "GET": self.args = cgi.parse_qs(env['QUERY_STRING'], True) else: raise IllegalMethodException() self.conn = False self.val = False self.cfrm = None self.cto = None self.json = "json" in self.args split = env["PATH_INFO"].split("/") split = [i.strip() for i in split] while "" in split: split.remove("") if len(split) > 2: output = "

400 Bad Request

\n" output += "Only one (validate) or two (conn) arguments may be passed as path." raise InvalidArgumentException(output) if len(split) > 0: if len(split) == 1: self.val = True else: self.conn = True self.cto = split[1].encode("latin-1").decode("utf-8") self.cfrm = split[0].encode("latin-1").decode("utf-8") try: self.rtype = "conn" if self.conn else "val" if self.val else self.args["type"][0].lower() except: output = "

400 Bad Request

\n" output += "A request type must be provided." raise InvalidArgumentException(output)