Mercurial > mamba
view mamba/forest.py @ 330:a2724d0078d8
Mamba in a flask.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Fri, 16 Sep 2011 20:40:48 +0200 |
parents | af947a20c212 |
children | 5456db312f7f |
line wrap: on
line source
"""Where mamba's hang out with each other.""" 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) @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() @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__": 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)