Better mimetype handling, index list all routes

This commit is contained in:
Felipe Martin 2020-03-03 17:25:34 +01:00
parent b4f075ea54
commit df7ef33319
Signed by: fmartingr
GPG Key ID: 716BC147715E716F
2 changed files with 53 additions and 16 deletions

66
app.py
View File

@ -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__":

3
templates/index.j2 Normal file
View File

@ -0,0 +1,3 @@
{% for path, help in routes.items() %}
<a href="{{ path }}"> {{ help }}
{% endfor %}