File: test_collect.py

package info (click to toggle)
python-werkzeug 1.0.1%2Bdfsg1-2%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,888 kB
  • sloc: python: 21,897; javascript: 173; makefile: 36; xml: 16
file content (60 lines) | stat: -rw-r--r-- 1,673 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python
"""
Hacky helper application to collect form data.
"""
from werkzeug.serving import run_simple
from werkzeug.wrappers import Request
from werkzeug.wrappers import Response


def copy_stream(request):
    from os import mkdir
    from time import time

    folder = "request-%d" % time()
    mkdir(folder)
    environ = request.environ
    f = open(folder + "/request.http", "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")
    with open(request.stat_folder + "/text.txt", "w") as f:
        f.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)