59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
from datetime import datetime, date, timedelta
|
|
import json
|
|
from urllib import response
|
|
from dateutil.relativedelta import relativedelta
|
|
import os
|
|
from flask import Flask, render_template, redirect, request, url_for, jsonify, Response
|
|
import jinja_partials
|
|
from flask_htmx import HTMX
|
|
import minify_html
|
|
from urllib.parse import urlparse
|
|
|
|
app = Flask(__name__)
|
|
jinja_partials.register_extensions(app)
|
|
htmx = HTMX(app)
|
|
|
|
|
|
@app.after_request
|
|
def response_minify(response):
|
|
"""
|
|
minify html response to decrease site traffic
|
|
"""
|
|
if response.content_type == u'text/html; charset=utf-8':
|
|
response.set_data(
|
|
minify_html.minify(response.get_data(
|
|
as_text=True), minify_js=True, remove_processing_instructions=True)
|
|
)
|
|
|
|
return response
|
|
return response
|
|
|
|
|
|
@app.route("/api/status")
|
|
def status():
|
|
req_data = save_request(request)
|
|
resp = Response(json.dumps(req_data, indent=4, default=str),
|
|
mimetype='application/json')
|
|
return resp
|
|
|
|
|
|
def save_request(request):
|
|
req_data = {}
|
|
req_data['endpoint'] = request.endpoint
|
|
req_data['method'] = request.method
|
|
req_data['url'] = request.url
|
|
req_data['cookies'] = request.cookies
|
|
req_data['data'] = request.data
|
|
req_data['headers'] = dict(request.headers)
|
|
req_data['headers'].pop('Cookie', None)
|
|
req_data['args'] = request.args
|
|
req_data['form'] = request.form
|
|
|
|
return req_data
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Bind to PORT if defined, otherwise default to 5000.
|
|
port = int(os.environ.get('PORT', 5000))
|
|
app.run(host='127.0.0.1', port=port)
|