From: Chris Fulljames Date: Fri, 21 Feb 2025 12:45:13 +0000 (-0500) Subject: Use XML instead of JSON (broken) X-Git-Url: https://littlesong.place/gitweb/?a=commitdiff_plain;h=cefd0246690ae1fea94f31a2b8f33b52c614e71d;p=littlesongplace.git Use XML instead of JSON (broken) --- diff --git a/main.py b/main.py index ea9d7a6..3aebd3d 100644 --- a/main.py +++ b/main.py @@ -13,6 +13,7 @@ from datetime import datetime, timezone from logging.handlers import RotatingFileHandler from pathlib import Path, PosixPath from typing import Optional +from xml.sax.saxutils import escape import bcrypt import bleach @@ -930,12 +931,12 @@ def get_current_user_playlists(): @app.context_processor def inject_global_vars(): - use_json = request.headers["Accept"] == "application/json" + use_xml = request.headers["Accept"] == "application/xml" return dict( gif_data=get_gif_data(), current_user_playlists=get_current_user_playlists(), - use_json=use_json, - dumps=json.dumps, + use_xml=use_xml, + escape=escape, bgcolor="#e8e6b5", fgcolor="#695c73", accolor="#9373a9", diff --git a/templates/activity.html b/templates/activity.html index 05ba9bf..3aa0938 100644 --- a/templates/activity.html +++ b/templates/activity.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Activity{% endblock %} diff --git a/templates/base.html b/templates/base.html index 080182a..65fe481 100644 --- a/templates/base.html +++ b/templates/base.html @@ -19,7 +19,7 @@ var targetUrl = new URL(event.target.href); if (urlIsOnSameSite(targetUrl)) { event.preventDefault(); - fetch(targetUrl, {redirect: "follow", headers: {"Accept": "application/json"}}).then(handleAjaxResponse); + fetch(targetUrl, {redirect: "follow", headers: {"Accept": "application/xml"}}).then(handleAjaxResponse); } }); @@ -30,7 +30,7 @@ if (urlIsOnSameSite(targetUrl)) { event.preventDefault(); var formData = new FormData(event.target); - fetch(targetUrl, {redirect: "follow", body: formData, method: event.target.method, headers: {"Accept": "application/json"}}) + fetch(targetUrl, {redirect: "follow", body: formData, method: event.target.method, headers: {"Accept": "application/xml"}}) .then(handleAjaxResponse); } }); @@ -47,8 +47,11 @@ var url = new URL(response.url); url.searchParams.delete("request-type"); - // Get page content from JSON response - var data = await response.json(); + // Get page content from XML response + var text = await response.text(); + console.log(text); + var parser = new DOMParser(); + var data = parser.parseFromString(text, "application/xml"); window.history.pushState(data, "", url); updatePageState(data); @@ -56,7 +59,7 @@ function updatePageState(data) { if (!data) { - fetch(window.location.href, {redirect: "follow", headers: {"Accept": "application/json"}}).then(handleAjaxResponse); + fetch(window.location.href, {redirect: "follow", headers: {"Accept": "application/xml"}}).then(handleAjaxResponse); return; } document.getElementById("main").innerHTML = data.body; diff --git a/templates/comment.html b/templates/comment.html index 7800798..3ded208 100644 --- a/templates/comment.html +++ b/templates/comment.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Write a Comment{% endblock %} diff --git a/templates/edit-song.html b/templates/edit-song.html index 969fa7b..8990e13 100644 --- a/templates/edit-song.html +++ b/templates/edit-song.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}{% if song %}Edit Song{% else %}Upload Song{% endif %}{% endblock %} diff --git a/templates/index.html b/templates/index.html index 64e53c9..58a70fc 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Little Song Place{% endblock %} diff --git a/templates/login.html b/templates/login.html index c1af499..c7b19f9 100644 --- a/templates/login.html +++ b/templates/login.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Sign In{% endblock %} diff --git a/templates/news.html b/templates/news.html index 90d11d8..f8cdad8 100644 --- a/templates/news.html +++ b/templates/news.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Site News{% endblock %} diff --git a/templates/playlist.html b/templates/playlist.html index 453f54d..2d2a1ed 100644 --- a/templates/playlist.html +++ b/templates/playlist.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}{{ name }}{% endblock %} diff --git a/templates/profile.html b/templates/profile.html index b8c9da1..ee649ce 100644 --- a/templates/profile.html +++ b/templates/profile.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}{{ name }}'s profile{% endblock %} diff --git a/templates/signup.html b/templates/signup.html index 4b474bd..3dd4970 100644 --- a/templates/signup.html +++ b/templates/signup.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Create Account{% endblock %} diff --git a/templates/song.html b/templates/song.html index 4407ace..411aae0 100644 --- a/templates/song.html +++ b/templates/song.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block head %} diff --git a/templates/songs-by-tag.html b/templates/songs-by-tag.html index 12fc50b..7d22e33 100644 --- a/templates/songs-by-tag.html +++ b/templates/songs-by-tag.html @@ -1,4 +1,4 @@ -{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %} +{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %} {% block title %}Songs{% endblock %} diff --git a/todo.txt b/todo.txt index 1f76470..f3b6167 100644 --- a/todo.txt +++ b/todo.txt @@ -1,6 +1,5 @@ NOW - AJAX pages so songs can play during navigation - - Back (history stack) - Use correct content type header for response - HTTP Error handling - Break up main.py, test_offline.py