From 5e99dc4aa29a2a3ef0a926f7b337b20af1ceb64b Mon Sep 17 00:00:00 2001 From: Luca Bosin Date: Fri, 4 Aug 2023 21:51:54 +0200 Subject: [PATCH] Add route structure --- src/lib/Gallery.svelte | 11 +++++++ src/lib/Icon.svelte | 9 ++++++ src/lib/Photo.svelte | 32 +++++++++++++++++++ src/lib/albums.json | 29 +++++++++++++++++ src/lib/index.js | 1 - src/routes/+error.svelte | 6 ++++ src/routes/+page.svelte | 2 -- src/routes/g/+page.svelte | 0 src/routes/g/.gallery | 0 src/routes/g/[slug]/[[timestamp]]/+page.js | 16 ++++++++++ .../g/[slug]/[[timestamp]]/+page.svelte | 8 +++++ src/routes/g/[slug]/[[timestamp]]/.album | 0 .../g/[slug]/[[timestamp]]/d/+server.js | 17 ++++++++++ src/routes/g/[slug]/[[timestamp]]/d/.download | 0 .../g/[slug]/[[timestamp]]/i/[item]/+page.js | 0 .../[[timestamp]]/i/[item]/+page.svelte | 0 .../[[timestamp]]/i/[item]/.image-frame | 0 .../[[timestamp]]/i/[item]/d/+server.js | 26 +++++++++++++++ .../[slug]/[[timestamp]]/i/[item]/d/.download | 0 .../[[timestamp]]/i/[item]/t/+server.js | 17 ++++++++++ .../[[timestamp]]/i/[item]/t/.thumbnail | 0 .../g/[slug]/[[timestamp]]/j/+server.js | 26 +++++++++++++++ src/routes/g/[slug]/[[timestamp]]/j/.json | 0 23 files changed, 197 insertions(+), 3 deletions(-) create mode 100644 src/lib/Gallery.svelte create mode 100644 src/lib/Icon.svelte create mode 100644 src/lib/Photo.svelte create mode 100644 src/lib/albums.json delete mode 100644 src/lib/index.js create mode 100644 src/routes/+error.svelte delete mode 100644 src/routes/+page.svelte create mode 100644 src/routes/g/+page.svelte create mode 100644 src/routes/g/.gallery create mode 100644 src/routes/g/[slug]/[[timestamp]]/+page.js create mode 100644 src/routes/g/[slug]/[[timestamp]]/+page.svelte create mode 100644 src/routes/g/[slug]/[[timestamp]]/.album create mode 100644 src/routes/g/[slug]/[[timestamp]]/d/+server.js create mode 100644 src/routes/g/[slug]/[[timestamp]]/d/.download create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/+page.js create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/+page.svelte create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/.image-frame create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/d/+server.js create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/d/.download create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/t/+server.js create mode 100644 src/routes/g/[slug]/[[timestamp]]/i/[item]/t/.thumbnail create mode 100644 src/routes/g/[slug]/[[timestamp]]/j/+server.js create mode 100644 src/routes/g/[slug]/[[timestamp]]/j/.json 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