Better mimetype handling, index list all routes
This commit is contained in:
parent
b4f075ea54
commit
df7ef33319
66
app.py
66
app.py
|
@ -1,35 +1,69 @@
|
|||
import os
|
||||
|
||||
from flask import Flask, request, Response
|
||||
from flask import Flask, request, Response, render_template, jsonify
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def index():
|
||||
return f"TODO"
|
||||
"""List all available routes"""
|
||||
routes = {}
|
||||
for rule in app.url_map.iter_rules():
|
||||
if rule.endpoint != "static":
|
||||
routes[rule.rule] = app.view_functions[rule.endpoint].__doc__
|
||||
|
||||
if request.accept_mimetypes.accept_json:
|
||||
return jsonify(routes)
|
||||
|
||||
@app.route("/headers")
|
||||
def headers():
|
||||
content = "\n".join(
|
||||
[
|
||||
"{key}={value}".format(key=key, value=value)
|
||||
for key, value in request.headers.items()
|
||||
]
|
||||
if request.accept_mimetypes.accept_html:
|
||||
return render_template("index.j2", routes=routes)
|
||||
|
||||
return Response(
|
||||
"\n".join(
|
||||
[
|
||||
"{path:32s}: {doc}".format(path=path, doc=doc)
|
||||
for path, doc in routes.items()
|
||||
]
|
||||
),
|
||||
content_type="text/plain",
|
||||
)
|
||||
return Response(content, content_type="text/plain")
|
||||
|
||||
|
||||
@app.route("/environment")
|
||||
def environment():
|
||||
content = "\n".join(
|
||||
[
|
||||
"{key}={value}".format(key=key, value=value)
|
||||
for key, value in os.environ.items()
|
||||
]
|
||||
"""Return defined environment"""
|
||||
|
||||
if request.accept_mimetypes.accept_json:
|
||||
return jsonify(os.environ.copy())
|
||||
|
||||
return Response(
|
||||
"\n".join(
|
||||
[
|
||||
"{key}={value}".format(key=key, value=value)
|
||||
for key, value in os.environ.items()
|
||||
]
|
||||
),
|
||||
content_type="text/plain",
|
||||
)
|
||||
|
||||
|
||||
@app.route("/headers")
|
||||
def headers():
|
||||
"""Return request headers"""
|
||||
|
||||
if request.accept_mimetypes.accept_json:
|
||||
return jsonify(dict(request.headers))
|
||||
|
||||
return Response(
|
||||
"\n".join(
|
||||
[
|
||||
"{key}={value}".format(key=key, value=value)
|
||||
for key, value in request.headers
|
||||
]
|
||||
),
|
||||
content_type="text/plain",
|
||||
)
|
||||
return Response(content, content_type="text/plain")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
{% for path, help in routes.items() %}
|
||||
<a href="{{ path }}"> {{ help }}
|
||||
{% endfor %}
|
Loading…
Reference in New Issue