diff --git a/api/proxy.php b/api/query.php similarity index 70% rename from api/proxy.php rename to api/query.php index 090e65a..2b2a65a 100644 --- a/api/proxy.php +++ b/api/query.php @@ -5,7 +5,7 @@ use App\Classes\BaseHandler; require __DIR__ . '/../server/utils/init.php'; require __DIR__ . "/Classes/BaseHandler.php"; -class ProxyHandler extends BaseHandler +class QueryHandler extends BaseHandler { public function __construct() { @@ -55,23 +55,13 @@ class ProxyHandler extends BaseHandler try { $response = $this->fetchFromApi($data, $query); - $markdownFields = $_GET['markdown'] ?? []; - $markdownFields = is_array($markdownFields) - ? $markdownFields - : explode(',', $markdownFields); - $markdownFields = array_map('trim', array_filter($markdownFields)); + $markdownFields = $this->getMarkdownFieldsFromQuery(); - if (!empty($response) && !empty($markdownFields)) { - foreach ($markdownFields as $field) { - if (!empty($response[0][$field])) $response[0]["{$field}_html"] = parseMarkdown($response[0][$field]); - } - } + if (!empty($response) && !empty($markdownFields)) $response = $this->parseMarkdownFields($response, $markdownFields); $json = json_encode($response); - if ($this->cache) { - $this->cache->setex($cacheKey, $cacheDuration, $json); - } + if ($this->cache) $this->cache->setex($cacheKey, $cacheDuration, $json); header('Content-Type: application/json'); echo $json; @@ -84,7 +74,25 @@ class ProxyHandler extends BaseHandler { return "proxy_{$data}" . ($id ? "_{$id}" : ""); } + + private function getMarkdownFieldsFromQuery(): array { + $fields = $_GET['markdown'] ?? []; + + if (!is_array($fields)) $fields = explode(',', $fields); + + return array_map('trim', array_filter($fields)); + } + + private function parseMarkdownFields(array $data, array $fields): array { + foreach ($data as &$item) { + foreach ($fields as $field) { + if (!empty($item[$field])) $item["{$field}_html"] = parseMarkdown($item[$field]); + } + } + + return $data; + } } -$handler = new ProxyHandler(); +$handler = new QueryHandler(); $handler->handleRequest(); diff --git a/package-lock.json b/package-lock.json index 3ed01a0..e2057b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "coryd.dev", - "version": "3.4.2", + "version": "3.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "coryd.dev", - "version": "3.4.2", + "version": "3.4.3", "license": "MIT", "dependencies": { "html-minifier-terser": "7.2.0", @@ -378,9 +378,9 @@ } }, "node_modules/@asamuzakjp/css-color": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.5.tgz", - "integrity": "sha512-w7AmVyTTiU41fNLsFDf+gA2Dwtbx2EJtn2pbJNAGSRAg50loXy1uLXA3hEpD8+eydcomTurw09tq5/AyceCaGg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.7.tgz", + "integrity": "sha512-Ok5fYhtwdyJQmU1PpEv6Si7Y+A4cYb8yNM9oiIJC9TzXPMuN9fvdonKJqcnz9TbFqV6bQ8z0giRq0iaOpGZV2g==", "dev": true, "license": "MIT", "dependencies": { @@ -983,9 +983,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", "dev": true, "funding": [ { @@ -1003,10 +1003,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -1805,9 +1805,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.148", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.148.tgz", - "integrity": "sha512-8uc1QXwwqayD4mblcsQYZqoi+cOc97A2XmKSBOIRbEAvbp6vrqmSYs4dHD2qVygUgn7Mi0qdKgPaJ9WC8cv63A==", + "version": "1.5.149", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.149.tgz", + "integrity": "sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==", "dev": true, "license": "ISC" }, @@ -4975,9 +4975,9 @@ } }, "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 7e2915c..68be959 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coryd.dev", - "version": "3.4.2", + "version": "3.4.3", "description": "The source for my personal site. Built using 11ty (and other tools).", "type": "module", "engines": { diff --git a/src/assets/scripts/index.js b/src/assets/scripts/index.js index 2b9f379..89054ba 100644 --- a/src/assets/scripts/index.js +++ b/src/assets/scripts/index.js @@ -18,7 +18,7 @@ window.addEventListener("load", () => { if (isDynamic && !isLoaded) { const markdownFields = dialog.dataset.markdown || ""; try { - const res = await fetch(`/api/proxy.php?data=${isDynamic}&id=${dialogId}&markdown=${encodeURIComponent(markdownFields)}`); + const res = await fetch(`/api/query.php?data=${isDynamic}&id=${dialogId}&markdown=${encodeURIComponent(markdownFields)}`); const [data] = await res.json(); const firstField = markdownFields.split(",")[0]?.trim(); const html = data?.[`${firstField}_html`] || "

No notes available.

";