Files
cardio/app.py
2023-01-04 01:13:27 +11:00

63 lines
1.7 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
from flask_socketio import SocketIO
app = Flask(__name__)
# TODO CHANGE SECRET KEY TO ENVIRONMENT VARIABLE
app.config['SECRET_KEY'] = 'secret!'
jinja_partials.register_extensions(app)
htmx = HTMX(app)
socketio = SocketIO(app, cors_allowed_origins='*')
@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
@socketio.on('message')
def handle_message(data):
print('server ts: ' + datetime.datetime.now().replace(
microsecond=0).isoformat() + ', message: ' + data)
@app.route("/api/status", methods=['GET', 'POST'])
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['http'] = f"{request.method} {request.url}"
req_data['json'] = request.json
req_data['headers'] = dict(request.headers)
return req_data
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
socketio.run(app, host='127.0.0.1', port=port)