Mercurial > mamba
changeset 330:a2724d0078d8
Mamba in a flask.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Fri, 16 Sep 2011 20:40:48 +0200 |
parents | 172eac039c91 |
children | 0c25bca380de |
files | mamba/forest.py |
diffstat | 1 files changed, 54 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/forest.py Fri Sep 16 20:40:31 2011 +0200 +++ b/mamba/forest.py Fri Sep 16 20:40:48 2011 +0200 @@ -1,21 +1,62 @@ """Where mamba's hang out with each other.""" -from wsgiref.simple_server import make_server +from werkzeug.utils import secure_filename +from flask import Flask, request, abort + +import os +import sys + +app = Flask(__name__) +app.config['LEVEL_FOLDER'] = None # set later + + +@app.route("/index") +def index(): + endl = len(".txt") + files = [x[:-endl] for x in os.listdir(app.config['LEVEL_FOLDER']) + if not x.startswith('.') and x.endswith('.txt')] + return "\n".join(files) -class ForestApp(object): - """Where mamba's hang out and exchange levels.""" +@app.route("/level/<levelname>") +def level(levelname): + levelname = "%s.txt" % secure_filename(levelname) + levelpath = os.path.join(app.config['LEVEL_FOLDER'], levelname) + if not os.path.isfile(levelpath): + abort(404, "Level not found. Hsss.") + with open(levelpath) as level: + return level.read() + - def __call__(self, environ, start_response): - status = '200 OK' - headers = [('Content-type', 'text/plain')] - start_response(status, headers) - - # The returned object is going to be printed - return ["Hello World"] +@app.route("/save/<levelname>", methods=['GET', 'POST']) +def save(levelname): + levelname = "%s.txt" % secure_filename(levelname) + levelpath = os.path.join(app.config['LEVEL_FOLDER'], levelname) + if request.method == 'POST': + if os.path.exists(levelpath): + abort(409, "Mamba already resident.") + leveldata = request.form['data'].encode('ascii') + with open(levelpath, 'w') as level: + level.write(leveldata) + return "Ssss." + else: + abort(405, "Post levels here. Hsss.") if __name__ == "__main__": - forest_app = ForestApp() - httpd = make_server('', 8000, forest_app) - httpd.serve_forever() + if len(sys.argv) != 3: + print "Usage: python -m mamba.forest <port> <level folder>" + sys.exit(1) + + host = '0.0.0.0' + port = int(sys.argv[1]) + level_folder = sys.argv[2] + if not os.path.exists(level_folder): + os.makedirs(level_folder) + if not os.path.isdir(level_folder): + print "Level folder must be a folder." + sys.exit(1) + + app.config['LEVEL_FOLDER'] = level_folder + # app.debug = True + app.run(host=host, port=port)