aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'libpathod/app.py')
-rw-r--r--libpathod/app.py116
1 files changed, 44 insertions, 72 deletions
diff --git a/libpathod/app.py b/libpathod/app.py
index 2a738b58..c0555422 100644
--- a/libpathod/app.py
+++ b/libpathod/app.py
@@ -1,6 +1,6 @@
-import logging
-from flask import Flask, jsonify, render_template
-import version
+import logging, pprint, cStringIO
+from flask import Flask, jsonify, render_template, request
+import version, rparse
logging.basicConfig(level="DEBUG")
app = Flask(__name__)
@@ -29,75 +29,47 @@ def api_clear_log():
@app.route('/')
@app.route('/index.html')
def index():
- return render_template("index.html", name="index", section="main")
+ return render_template("index.html", section="main")
+
+
+@app.route('/help')
+def help():
+ return render_template("help.html", section="help")
+
+
+@app.route('/log')
+def log():
+ return render_template("log.html", section="log", log=app.config["pathod"].get_log())
+@app.route('/log/<int:lid>')
+def onelog(lid):
+ l = pprint.pformat(app.config["pathod"].log_by_id(int(lid)))
+ return render_template("onelog.html", section="log", alog=l, lid=lid)
-"""
-class _Page(tornado.web.RequestHandler):
- def render(self, name, **kwargs):
- tornado.web.RequestHandler.render(self, name + ".html", **kwargs)
-
-
-class Index(_Page):
- name = "index"
- section = "main"
- def get(self):
- self.render(self.name, section=self.section, spec="")
-
-
-class Preview(_Page):
- name = "preview"
- section = "main"
- SANITY = 1024*1024
- def get(self):
- spec = self.get_argument("spec", None)
- args = dict(
- spec = spec,
- section = self.section,
- syntaxerror = None,
- error = None
- )
- try:
- r = rparse.parse(self.application.settings, spec)
- except rparse.ParseException, v:
- args["syntaxerror"] = str(v)
- args["marked"] = v.marked()
- return self.render(self.name, **args)
- if r.length() > self.SANITY:
- error = "Refusing to preview a response of %s bytes. This is for your own good."%r.length()
- args["error"] = error
- else:
- d = utils.DummyRequest()
- r.serve(d)
- args["output"] = d.getvalue()
- self.render(self.name, **args)
-
-
-class Help(_Page):
- name = "help"
- section = "help"
- def get(self):
- self.render(self.name, section=self.section)
-
-
-class Log(_Page):
- name = "log"
- section = "log"
- def get(self):
- self.render(self.name, section=self.section, log=self.application.log)
-
-
-class OneLog(_Page):
- name = "onelog"
- section = "log"
- def get(self, lid):
- l = pprint.pformat(self.application.log_by_id(int(lid)))
- self.render(self.name, section=self.section, alog=l, lid=lid)
-
-
-class ClearLog(_Page):
- def post(self):
- self.application.clear_logs()
- self.redirect("/log")
-"""
+
+
+SANITY = 1024*1024
+@app.route('/preview')
+def preview():
+ spec = request.args["spec"]
+ args = dict(
+ spec = spec,
+ section = "main",
+ syntaxerror = None,
+ error = None
+ )
+ try:
+ r = rparse.parse(app.config["pathod"].request_settings, spec)
+ except rparse.ParseException, v:
+ args["syntaxerror"] = str(v)
+ args["marked"] = v.marked()
+ return render_template("preview.html", **args)
+ if r.length() > SANITY:
+ error = "Refusing to preview a response of %s bytes. This is for your own good."%r.length()
+ args["error"] = error
+ else:
+ s = cStringIO.StringIO()
+ r.serve(s)
+ args["output"] = s.getvalue()
+ return render_template("preview.html", **args)