diff --git a/src/routes/[slug]/[[timestamp]]/+page.server.ts b/src/routes/[slug]/[[timestamp]]/+page.server.ts index 7f2ced1..73fd500 100644 --- a/src/routes/[slug]/[[timestamp]]/+page.server.ts +++ b/src/routes/[slug]/[[timestamp]]/+page.server.ts @@ -1,9 +1,16 @@ import { getMetadata } from '$lib/util/album'; import { getAlbumUri, getZipName } from '$lib/util/links'; +import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ params }) => { - const album = await getMetadata(getZipName(params)); + let album; + try { + album = await getMetadata(getZipName(params)); + } catch (e) { + throw error(404, 'Album not found'); + } + const base = getAlbumUri(params); return { diff --git a/src/routes/[slug]/[[timestamp]]/i/+page.server.ts b/src/routes/[slug]/[[timestamp]]/i/+page.server.ts new file mode 100644 index 0000000..8f04cd7 --- /dev/null +++ b/src/routes/[slug]/[[timestamp]]/i/+page.server.ts @@ -0,0 +1,13 @@ +import { error } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; +import { getZipName } from '$lib/util/links'; +import { getMetadata } from '$lib/util/album'; + +export const load: PageServerLoad = async ({ params }) => { + try { + await getMetadata(getZipName(params)); + } catch (e) { + throw error(404, 'Album not found'); + } + throw error(400, 'No item specified'); +}; diff --git a/src/routes/[slug]/[[timestamp]]/i/[...item]/+page.server.ts b/src/routes/[slug]/[[timestamp]]/i/[...item]/+page.server.ts index a1a3020..b037a4b 100644 --- a/src/routes/[slug]/[[timestamp]]/i/[...item]/+page.server.ts +++ b/src/routes/[slug]/[[timestamp]]/i/[...item]/+page.server.ts @@ -1,14 +1,26 @@ import { getMetadata } from '$lib/util/album'; -import { getFileName, getFilePath, getZipName } from '$lib/util/links'; +import { getAlbumUri, getFileName, getFilePath, getZipName } from '$lib/util/links'; +import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ params }) => { - const album = await getMetadata(getZipName(params)); + let album; + try { + album = await getMetadata(getZipName(params)); + } catch (e) { + throw error(404, 'Album not found'); + } + + const base = getAlbumUri(params); + const filePath = getFilePath(params.item); const item = album.items.find(item => item.item === filePath); + if (!item) + throw error(404, `Item not found.`); return { item, + base, filename: getFileName(params.item) } };