diff --git a/src/lib/Gallery.svelte b/src/lib/Gallery.svelte new file mode 100644 index 0000000..edf9b7a --- /dev/null +++ b/src/lib/Gallery.svelte @@ -0,0 +1,11 @@ + + + + + diff --git a/src/lib/Icon.svelte b/src/lib/Icon.svelte new file mode 100644 index 0000000..eb1410a --- /dev/null +++ b/src/lib/Icon.svelte @@ -0,0 +1,9 @@ + + + + + diff --git a/src/lib/Photo.svelte b/src/lib/Photo.svelte new file mode 100644 index 0000000..d16b5b3 --- /dev/null +++ b/src/lib/Photo.svelte @@ -0,0 +1,32 @@ + + + +
+ {alt} +
+
+ + diff --git a/src/lib/albums.json b/src/lib/albums.json new file mode 100644 index 0000000..df18c21 --- /dev/null +++ b/src/lib/albums.json @@ -0,0 +1,29 @@ +[ + { + "slug": "sts", + "title": "Testgalerie", + "description": "Das ist eine Testgalerie", + "timestamp": "2023-08-04T00:00:00.000Z", + "place": "Berlin", + "tags": [ + "Berlin", + "Test" + ], + "license": "CC BY-NC-ND 4.0", + "items": "img.zip", + "itemsMeta": [ + { + "item": "cover.jpg", + "title": "Cover", + "description": "Das ist das Cover", + "timestamp": "2023-08-04T00:00:00.000Z", + "place": "Berlin", + "tags": [ + "Berlin", + "Cover" + ], + "license": "CC BY-NC-ND 4.0" + } + ] + } +] \ No newline at end of file diff --git a/src/lib/index.js b/src/lib/index.js deleted file mode 100644 index 856f2b6..0000000 --- a/src/lib/index.js +++ /dev/null @@ -1 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte new file mode 100644 index 0000000..10ca54c --- /dev/null +++ b/src/routes/+error.svelte @@ -0,0 +1,6 @@ + + +

{$page.status}

+

{$page.error?.message}

diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte deleted file mode 100644 index 5982b0a..0000000 --- a/src/routes/+page.svelte +++ /dev/null @@ -1,2 +0,0 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

diff --git a/src/routes/g/+page.svelte b/src/routes/g/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/.gallery b/src/routes/g/.gallery new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/+page.js b/src/routes/g/[slug]/[[timestamp]]/+page.js new file mode 100644 index 0000000..68a532e --- /dev/null +++ b/src/routes/g/[slug]/[[timestamp]]/+page.js @@ -0,0 +1,16 @@ +import { error } from '@sveltejs/kit'; +import albums from '$lib/albums.json'; + +/** @type {import('./$types').PageLoad} */ +export function load({ params }) { + const album = albums.find((album) => album.slug === params.slug); + if (album) { + return { + title: album.title, + content: album.description, + image: '/s/lga/?i=LFB04128-Enhanced-NR.jpg' + }; + } + + throw error(404, 'Not found'); +} diff --git a/src/routes/g/[slug]/[[timestamp]]/+page.svelte b/src/routes/g/[slug]/[[timestamp]]/+page.svelte new file mode 100644 index 0000000..0aad292 --- /dev/null +++ b/src/routes/g/[slug]/[[timestamp]]/+page.svelte @@ -0,0 +1,8 @@ + + +

{data.title}

+
{@html data.content}
+{data.title} diff --git a/src/routes/g/[slug]/[[timestamp]]/.album b/src/routes/g/[slug]/[[timestamp]]/.album new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/d/+server.js b/src/routes/g/[slug]/[[timestamp]]/d/+server.js new file mode 100644 index 0000000..56529e6 --- /dev/null +++ b/src/routes/g/[slug]/[[timestamp]]/d/+server.js @@ -0,0 +1,17 @@ +import { error } from '@sveltejs/kit'; + +/** @type {import('./$types').RequestHandler} */ +export function GET({ url }) { + const min = Number(url.searchParams.get('min') ?? '0'); + const max = Number(url.searchParams.get('max') ?? '1'); + + const d = max - min; + + if (isNaN(d) || d < 0) { + throw error(400, 'min and max must be numbers, and min must be less than max'); + } + + const random = min + Math.random() * d; + + return new Response(String(random)); +} diff --git a/src/routes/g/[slug]/[[timestamp]]/d/.download b/src/routes/g/[slug]/[[timestamp]]/d/.download new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/+page.js b/src/routes/g/[slug]/[[timestamp]]/i/[item]/+page.js new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/+page.svelte b/src/routes/g/[slug]/[[timestamp]]/i/[item]/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/.image-frame b/src/routes/g/[slug]/[[timestamp]]/i/[item]/.image-frame new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/d/+server.js b/src/routes/g/[slug]/[[timestamp]]/i/[item]/d/+server.js new file mode 100644 index 0000000..88aad42 --- /dev/null +++ b/src/routes/g/[slug]/[[timestamp]]/i/[item]/d/+server.js @@ -0,0 +1,26 @@ +import { error } from '@sveltejs/kit'; + +/** @type {import('./$types').RequestHandler} */ +export function GET({ url }) { + const noAttachment = url.searchParams.has('r'); + + + + const min = Number(url.searchParams.get('min') ?? '0'); + const max = Number(url.searchParams.get('max') ?? '1'); + + const d = max - min; + + if (isNaN(d) || d < 0) { + throw error(400, 'min and max must be numbers, and min must be less than max'); + } + + const random = min + Math.random() * d; + + return new Response(String(random), { + headers: { + 'Content-Type': 'text/plain', + 'Content-Disposition': noAttachment ? 'inline' : 'attachment' + } + }); +} diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/d/.download b/src/routes/g/[slug]/[[timestamp]]/i/[item]/d/.download new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/t/+server.js b/src/routes/g/[slug]/[[timestamp]]/i/[item]/t/+server.js new file mode 100644 index 0000000..56529e6 --- /dev/null +++ b/src/routes/g/[slug]/[[timestamp]]/i/[item]/t/+server.js @@ -0,0 +1,17 @@ +import { error } from '@sveltejs/kit'; + +/** @type {import('./$types').RequestHandler} */ +export function GET({ url }) { + const min = Number(url.searchParams.get('min') ?? '0'); + const max = Number(url.searchParams.get('max') ?? '1'); + + const d = max - min; + + if (isNaN(d) || d < 0) { + throw error(400, 'min and max must be numbers, and min must be less than max'); + } + + const random = min + Math.random() * d; + + return new Response(String(random)); +} diff --git a/src/routes/g/[slug]/[[timestamp]]/i/[item]/t/.thumbnail b/src/routes/g/[slug]/[[timestamp]]/i/[item]/t/.thumbnail new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/g/[slug]/[[timestamp]]/j/+server.js b/src/routes/g/[slug]/[[timestamp]]/j/+server.js new file mode 100644 index 0000000..88aad42 --- /dev/null +++ b/src/routes/g/[slug]/[[timestamp]]/j/+server.js @@ -0,0 +1,26 @@ +import { error } from '@sveltejs/kit'; + +/** @type {import('./$types').RequestHandler} */ +export function GET({ url }) { + const noAttachment = url.searchParams.has('r'); + + + + const min = Number(url.searchParams.get('min') ?? '0'); + const max = Number(url.searchParams.get('max') ?? '1'); + + const d = max - min; + + if (isNaN(d) || d < 0) { + throw error(400, 'min and max must be numbers, and min must be less than max'); + } + + const random = min + Math.random() * d; + + return new Response(String(random), { + headers: { + 'Content-Type': 'text/plain', + 'Content-Disposition': noAttachment ? 'inline' : 'attachment' + } + }); +} diff --git a/src/routes/g/[slug]/[[timestamp]]/j/.json b/src/routes/g/[slug]/[[timestamp]]/j/.json new file mode 100644 index 0000000..e69de29