diff options
Diffstat (limited to 'websdk/werkzeug/testsuite/multipart/collect.py')
-rw-r--r-- | websdk/werkzeug/testsuite/multipart/collect.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/websdk/werkzeug/testsuite/multipart/collect.py b/websdk/werkzeug/testsuite/multipart/collect.py new file mode 100644 index 0000000..5fce5e9 --- /dev/null +++ b/websdk/werkzeug/testsuite/multipart/collect.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +""" +Hacky helper application to collect form data. +""" +from werkzeug.serving import run_simple +from werkzeug.wrappers import Request, Response + + +def copy_stream(request): + from os import mkdir + from time import time + folder = 'request-%d' % time() + mkdir(folder) + environ = request.environ + f = file(folder + '/request.txt', 'wb+') + f.write(environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))) + f.flush() + f.seek(0) + environ['wsgi.input'] = f + request.stat_folder = folder + + +def stats(request): + copy_stream(request) + f1 = request.files['file1'] + f2 = request.files['file2'] + text = request.form['text'] + f1.save(request.stat_folder + '/file1.bin') + f2.save(request.stat_folder + '/file2.bin') + file(request.stat_folder + '/text.txt', 'w').write(text.encode('utf-8')) + return Response('Done.') + + +def upload_file(request): + return Response(''' + <h1>Upload File</h1> + <form action="" method="post" enctype="multipart/form-data"> + <input type="file" name="file1"><br> + <input type="file" name="file2"><br> + <textarea name="text"></textarea><br> + <input type="submit" value="Send"> + </form> + ''', mimetype='text/html') + + +def application(environ, start_responseonse): + request = Request(environ) + if request.method == 'POST': + response = stats(request) + else: + response = upload_file(request) + return response(environ, start_responseonse) + + +if __name__ == '__main__': + run_simple('localhost', 5000, application, use_debugger=True) |