import os
import re
from typing import Optional
from urllib.parse import urljoin
from flask import (
jsonify,
request,
Response,
send_from_directory as send_from_directory_,
render_template,
)
from .app import app
from .config import config
from ._sorters import PagesSortByTimeGroupedByFolder
def send_from_directory(
path: str, file: str, alternative_path: Optional[str] = None, *args, **kwargs
):
if not os.path.exists(os.path.join(path, file)) and alternative_path:
path = alternative_path
return send_from_directory_(path, file, *args, **kwargs)
@app.route("/", methods=["GET"])
def home_route():
return render_template(
"index.html",
pages=app.get_pages(sorter=PagesSortByTimeGroupedByFolder),
config=config,
)
@app.route("/img/", methods=["GET"])
def img_route(img: str):
return send_from_directory(app.img_dir, img, config.default_img_dir)
@app.route("/favicon.ico", methods=["GET"])
def favicon_route():
return img_route("favicon.ico")
@app.route("/js/", methods=["GET"])
def js_route(file: str):
return send_from_directory(app.js_dir, file, config.default_js_dir)
@app.route("/pwabuilder-sw.js", methods=["GET"])
def pwa_builder_route():
return send_from_directory(app.js_dir, "pwabuilder-sw.js", config.default_js_dir)
@app.route("/pwabuilder-sw-register.js", methods=["GET"])
def pwa_builder_register_route():
return send_from_directory(
app.js_dir, "pwabuilder-sw-register.js", config.default_js_dir
)
@app.route("/css/