diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/Home/HeadTitle.svelte | 6 | ||||
| -rw-r--r-- | src/lib/Utility/appOrigin.ts | 10 | ||||
| -rw-r--r-- | src/routes/api/badges/+server.ts | 5 | ||||
| -rw-r--r-- | src/routes/api/birthdays/primary/+server.ts | 6 | ||||
| -rw-r--r-- | src/routes/api/birthdays/secondary/+server.ts | 6 | ||||
| -rw-r--r-- | src/routes/api/configuration/+server.ts | 13 | ||||
| -rw-r--r-- | src/routes/api/preferences/+server.ts | 33 | ||||
| -rw-r--r-- | src/routes/api/preferences/pin/+server.ts | 6 | ||||
| -rw-r--r-- | src/routes/api/subsplease/+server.ts | 7 | ||||
| -rw-r--r-- | src/routes/api/updates/all-novels/+server.ts | 6 | ||||
| -rw-r--r-- | src/routes/api/updates/manga/+server.ts | 5 | ||||
| -rw-r--r-- | src/routes/api/updates/novels/+server.ts | 5 | ||||
| -rw-r--r-- | src/routes/feeds/activity-notifications/+server.ts | 13 |
13 files changed, 58 insertions, 63 deletions
diff --git a/src/lib/Home/HeadTitle.svelte b/src/lib/Home/HeadTitle.svelte index 9ac1ea71..0759943f 100644 --- a/src/lib/Home/HeadTitle.svelte +++ b/src/lib/Home/HeadTitle.svelte @@ -1,4 +1,6 @@ <script lang="ts"> +import { siteUrl } from "$lib/Utility/appOrigin"; + let { route = undefined, path = "/" }: { route?: string; path?: string } = $props(); const title = $derived((route ? `${route} • ` : "") + "due.moe"); @@ -6,11 +8,11 @@ const title = $derived((route ? `${route} • ` : "") + "due.moe"); <svelte:head> <!-- Facebook --> - <meta name="og:url" property="og:url" content={`https://due.moe${path}`} /> + <meta name="og:url" property="og:url" content={siteUrl(path)} /> <meta name="og:title" property="og:title" content={title} /> <!-- Twitter --> - <meta name="twitter:url" property="twitter:url" content={`https://due.moe${path}`} /> + <meta name="twitter:url" property="twitter:url" content={siteUrl(path)} /> <meta name="twitter:title" property="twitter:title" content={title} /> <title>{title}</title> diff --git a/src/lib/Utility/appOrigin.ts b/src/lib/Utility/appOrigin.ts index 8d534d81..cdc53995 100644 --- a/src/lib/Utility/appOrigin.ts +++ b/src/lib/Utility/appOrigin.ts @@ -23,10 +23,20 @@ export const appOrigin = () => { return dev ? LOCAL_ORIGIN : PRODUCTION_ORIGIN; }; +export const siteUrl = (path = "/") => + `${appOrigin()}${path.startsWith("/") ? path : `/${path}`}`; + export const isLocalApp = () => { const { hostname } = new URL(appOrigin()); return dev || isPrivateHostname(hostname); }; +export const appOriginHeaders = ( + headers: Record<string, string> = {}, +): Record<string, string> => ({ + ...headers, + "Access-Control-Allow-Origin": appOrigin(), +}); + export { LOCAL_ORIGIN, PRODUCTION_ORIGIN }; diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index 912782dd..8a86b468 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -15,6 +15,7 @@ import { incrementClickCount, } from "$lib/Database/SB/User/badges"; import { Schema } from "effect"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; import privilegedUser from "$lib/Utility/privilegedUser"; const unauthorised = new Response("Unauthorised", { status: 401 }); @@ -22,9 +23,7 @@ const importedBadgeSchema = Schema.Record(Schema.String, Schema.Unknown); const badges = async (id: number) => Response.json(await getUserBadges(id), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }); export const GET = async ({ url }) => { diff --git a/src/routes/api/birthdays/primary/+server.ts b/src/routes/api/birthdays/primary/+server.ts index 888baa60..109961f8 100644 --- a/src/routes/api/birthdays/primary/+server.ts +++ b/src/routes/api/birthdays/primary/+server.ts @@ -1,4 +1,5 @@ import { JSDOM } from "jsdom"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; export const GET = async ({ url }: { url: URL }) => { const document = new JSDOM( @@ -31,10 +32,9 @@ export const GET = async ({ url }: { url: URL }) => { }; }), { - headers: { + headers: appOriginHeaders({ "Cache-Control": "max-age=10800, s-maxage=10800", - "Access-Control-Allow-Origin": "https://due.moe", - }, + }), }, ); }; diff --git a/src/routes/api/birthdays/secondary/+server.ts b/src/routes/api/birthdays/secondary/+server.ts index b471a32b..4619828f 100644 --- a/src/routes/api/birthdays/secondary/+server.ts +++ b/src/routes/api/birthdays/secondary/+server.ts @@ -1,4 +1,5 @@ import { env } from "$env/dynamic/private"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; export const GET = async ({ url }: { url: URL }) => { return Response.json( @@ -20,10 +21,9 @@ export const GET = async ({ url }: { url: URL }) => { ) ).json(), { - headers: { + headers: appOriginHeaders({ "Cache-Control": "max-age=10800, s-maxage=10800", - "Access-Control-Allow-Origin": "https://due.moe", - }, + }), }, ); }; diff --git a/src/routes/api/configuration/+server.ts b/src/routes/api/configuration/+server.ts index 14c49766..aa1b0bcf 100644 --- a/src/routes/api/configuration/+server.ts +++ b/src/routes/api/configuration/+server.ts @@ -6,6 +6,7 @@ import { getUserConfiguration, setUserConfiguration, } from "$lib/Database/SB/User/configuration"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; import { Schema } from "effect"; const unauthorised = new Response("Unauthorised", { status: 401 }); @@ -14,9 +15,7 @@ export const GET = async ({ url }) => Response.json( await getUserConfiguration(Number(url.searchParams.get("id") || 0)), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); @@ -35,9 +34,7 @@ export const PUT = async ({ cookies, request }) => { ), }), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); }; @@ -52,9 +49,7 @@ export const DELETE = async ({ cookies }) => { return Response.json( await deleteUserConfiguration((await userIdentity(user)).id), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); }; diff --git a/src/routes/api/preferences/+server.ts b/src/routes/api/preferences/+server.ts index 0f62fb76..d6db364f 100644 --- a/src/routes/api/preferences/+server.ts +++ b/src/routes/api/preferences/+server.ts @@ -10,6 +10,7 @@ import { togglePinnedBadgeWallCategory, setPinnedBadgeWallCategories, } from "$lib/Database/SB/User/preferences"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; import { Schema } from "effect"; const unauthorised = new Response("Unauthorised", { status: 401 }); @@ -20,9 +21,7 @@ export const GET = async ({ url }) => { ); return Response.json(preferences ? preferences : {}, { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }); }; @@ -36,23 +35,17 @@ export const PUT = async ({ url, cookies, request }) => { if (url.searchParams.get("toggleHideMissingBadges") !== null) return Response.json(await toggleHideMissingBadges(userId), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }); if (url.searchParams.get("toggleHideAWCBadges") !== null) return Response.json(await toggleHideAWCBadges(userId), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }); if (url.searchParams.get("badgeWallCSS") !== null) return Response.json(await setCSS(userId, await request.text()), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }); if (url.searchParams.get("toggleCategory") !== null) @@ -62,9 +55,7 @@ export const PUT = async ({ url, cookies, request }) => { url.searchParams.get("toggleCategory") || "", ), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); @@ -77,9 +68,7 @@ export const PUT = async ({ url, cookies, request }) => { )), ]), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); @@ -87,18 +76,14 @@ export const PUT = async ({ url, cookies, request }) => { return Response.json( await setBiography(userId, (await request.text()).slice(0, 3000)), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); return Response.json( await getUserPreferences(Number(url.searchParams.get("id") || 0)), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); }; diff --git a/src/routes/api/preferences/pin/+server.ts b/src/routes/api/preferences/pin/+server.ts index 045d0187..45a231fd 100644 --- a/src/routes/api/preferences/pin/+server.ts +++ b/src/routes/api/preferences/pin/+server.ts @@ -1,6 +1,7 @@ import { userIdentity } from "$lib/Data/AniList/identity"; import { decodeAuthCookieOrThrow } from "$lib/Effect/authCookie"; import { toggleHololiveStreamPinning } from "$lib/Database/SB/User/preferences"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; const unauthorised = new Response("Unauthorised", { status: 401 }); @@ -17,10 +18,9 @@ export const PUT = async ({ cookies, url }) => { url.searchParams.get("stream") || "", ), { - headers: { + headers: appOriginHeaders({ method: "PUT", - "Access-Control-Allow-Origin": "https://due.moe", - }, + }), }, ); }; diff --git a/src/routes/api/subsplease/+server.ts b/src/routes/api/subsplease/+server.ts index 93b91609..6ef2d832 100644 --- a/src/routes/api/subsplease/+server.ts +++ b/src/routes/api/subsplease/+server.ts @@ -1,3 +1,5 @@ +import { appOriginHeaders } from "$lib/Utility/appOrigin"; + export const GET = async ({ url }) => Response.json( await ( @@ -8,9 +10,8 @@ export const GET = async ({ url }) => ) ).json(), { - headers: { + headers: appOriginHeaders({ "Cache-Control": "max-age=86400, s-maxage=86400", - "Access-Control-Allow-Origin": "https://due.moe", - }, + }), }, ); diff --git a/src/routes/api/updates/all-novels/+server.ts b/src/routes/api/updates/all-novels/+server.ts index f90656bf..10a0a436 100644 --- a/src/routes/api/updates/all-novels/+server.ts +++ b/src/routes/api/updates/all-novels/+server.ts @@ -1,3 +1,5 @@ +import { appOriginHeaders } from "$lib/Utility/appOrigin"; + export const GET = async ({ setHeaders }) => { setHeaders({ "Cache-Control": "public, max-age=600, s-maxage=600", @@ -9,12 +11,14 @@ export const GET = async ({ setHeaders }) => { method: "POST", headers: { "Content-Type": "application/json", - "Access-Control-Allow-Origin": "https://due.moe", }, body: JSON.stringify({ mode: "get-releases", }), }) ).json(), + { + headers: appOriginHeaders(), + }, ); }; diff --git a/src/routes/api/updates/manga/+server.ts b/src/routes/api/updates/manga/+server.ts index c794d7b3..f8f90c91 100644 --- a/src/routes/api/updates/manga/+server.ts +++ b/src/routes/api/updates/manga/+server.ts @@ -1,4 +1,5 @@ import Parser from "rss-parser"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; export const GET = async ({ setHeaders }) => { setHeaders({ @@ -10,9 +11,7 @@ export const GET = async ({ setHeaders }) => { await (await fetch("https://www.mangaupdates.com/rss.php")).text(), ), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); }; diff --git a/src/routes/api/updates/novels/+server.ts b/src/routes/api/updates/novels/+server.ts index 7258b966..5e33a2ff 100644 --- a/src/routes/api/updates/novels/+server.ts +++ b/src/routes/api/updates/novels/+server.ts @@ -1,4 +1,5 @@ import Parser from "rss-parser"; +import { appOriginHeaders } from "$lib/Utility/appOrigin"; export const GET = async ({ setHeaders }) => { setHeaders({ @@ -10,9 +11,7 @@ export const GET = async ({ setHeaders }) => { await (await fetch("https://api.syosetu.com/allnovel.Atom")).text(), ), { - headers: { - "Access-Control-Allow-Origin": "https://due.moe", - }, + headers: appOriginHeaders(), }, ); }; diff --git a/src/routes/feeds/activity-notifications/+server.ts b/src/routes/feeds/activity-notifications/+server.ts index e4725a5b..70b24a20 100644 --- a/src/routes/feeds/activity-notifications/+server.ts +++ b/src/routes/feeds/activity-notifications/+server.ts @@ -2,6 +2,7 @@ import { notifications, type Notification, } from "$lib/Data/AniList/notifications"; +import { siteUrl } from "$lib/Utility/appOrigin"; import root from "$lib/Utility/root"; const htmlEncode = (input: string) => { @@ -17,18 +18,18 @@ const render = ( <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" - xmlns:content="http://purl.org/rss/1.0/modules/content/" - xmlns:snf="http://www.smartnews.be/snf" - xmlns:media="http://search.yahoo.com/mrss/"> +xmlns:content="http://purl.org/rss/1.0/modules/content/" +xmlns:snf="http://www.smartnews.be/snf" +xmlns:media="http://search.yahoo.com/mrss/"> <channel> - <atom:link href="https://due.moe/feeds/activity-notifications" rel="self" type="application/rss+xml" /> + <atom:link href="${siteUrl("/feeds/activity-notifications")}" rel="self" type="application/rss+xml" /> <title>AniList Notifications • due.moe</title> - <link>https://due.moe</link> + <link>${siteUrl("/")}</link> <description>Instantly view your AniList notifications via RSS!</description> <pubDate>${new Date().toUTCString()}</pubDate> <lastBuildDate>${new Date().toUTCString()}</lastBuildDate> <language>en-US</language> - <snf:logo><url>https://due.moe/favicon-196x196.png</url></snf:logo> + <snf:logo><url>${siteUrl("/favicon-196x196.png")}</url></snf:logo> ${posts .filter((notification: Notification) => notification.type !== undefined) .map((notification: Notification) => { |