From be6aa89c39fea51a5bace7950702f30ef41bbba6 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 9 Jul 2023 18:26:33 -0500 Subject: [PATCH] Rename Conf.url() to Conf.local(), replace it with a URL of localDomain --- src/config.ts | 5 ++++- src/controllers/api/instance.ts | 2 +- src/controllers/well-known/webfinger.ts | 6 +++--- src/middleware/auth98.ts | 2 +- src/note.ts | 4 ++-- src/schema.ts | 2 +- src/transmute.ts | 10 ++++------ 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/config.ts b/src/config.ts index 42d6ecb..4183d96 100644 --- a/src/config.ts +++ b/src/config.ts @@ -21,8 +21,11 @@ const Conf = { get publishRelays() { return ['wss://relay.mostr.pub']; }, + get url() { + return new URL(Conf.localDomain); + }, /** Merges the path with the localDomain. */ - url(path: string): string { + local(path: string): string { if (path.startsWith('/')) { // Path is a path. return new URL(path, Conf.localDomain).toString(); diff --git a/src/controllers/api/instance.ts b/src/controllers/api/instance.ts index 6394faa..d0235f5 100644 --- a/src/controllers/api/instance.ts +++ b/src/controllers/api/instance.ts @@ -3,7 +3,7 @@ import { Conf } from '@/config.ts'; import type { Context } from '@/deps.ts'; function instanceController(c: Context) { - const { host, protocol } = new URL(Conf.localDomain); + const { host, protocol } = Conf.url; return c.json({ uri: host, diff --git a/src/controllers/well-known/webfinger.ts b/src/controllers/well-known/webfinger.ts index b313299..b8c38da 100644 --- a/src/controllers/well-known/webfinger.ts +++ b/src/controllers/well-known/webfinger.ts @@ -31,7 +31,7 @@ const acctSchema = z.custom((value) => value instanceof URL) .transform((uri) => uri.pathname) .pipe(z.string().email('Invalid acct')) .transform((acct) => acct.split('@') as [username: string, host: string]) - .refine(([_username, host]) => host === new URL(Conf.localDomain).hostname, { + .refine(([_username, host]) => host === Conf.url.hostname, { message: 'Host must be local', path: ['resource', 'acct'], }); @@ -66,7 +66,7 @@ interface RenderWebfingerOpts { /** Present Nostr user on Webfinger. */ function renderWebfinger({ pubkey, username, subject }: RenderWebfingerOpts): Webfinger { - const apId = Conf.url(`/users/${username}`); + const apId = Conf.local(`/users/${username}`); return { subject, @@ -92,7 +92,7 @@ function renderWebfinger({ pubkey, username, subject }: RenderWebfingerOpts): We } const hostMetaController: AppController = (c) => { - const template = Conf.url('/.well-known/webfinger?resource={uri}'); + const template = Conf.local('/.well-known/webfinger?resource={uri}'); c.header('content-type', 'application/xrd+xml'); return c.body( diff --git a/src/middleware/auth98.ts b/src/middleware/auth98.ts index 99865a2..9086182 100644 --- a/src/middleware/auth98.ts +++ b/src/middleware/auth98.ts @@ -28,7 +28,7 @@ function auth98(opts: Auth98Opts = {}): AppMiddleware { .refine((event) => { const url = findTag(event.tags, 'u')?.[1]; try { - return url === Conf.url(c.req.url); + return url === Conf.local(c.req.url); } catch (_e) { return false; } diff --git a/src/note.ts b/src/note.ts index 514044f..82688b6 100644 --- a/src/note.ts +++ b/src/note.ts @@ -8,7 +8,7 @@ const linkifyOpts: linkify.Opts = { render: { hashtag: ({ content }) => { const tag = content.replace(/^#/, ''); - const href = Conf.url(`/tags/${tag}`); + const href = Conf.local(`/tags/${tag}`); return `#${tag}`; }, url: ({ content }) => { @@ -17,7 +17,7 @@ const linkifyOpts: linkify.Opts = { const pubkey = getDecodedPubkey(decoded); if (pubkey) { const name = pubkey.substring(0, 8); - const href = Conf.url(`/users/${pubkey}`); + const href = Conf.local(`/users/${pubkey}`); return `@${name}`; } else { return ''; diff --git a/src/schema.ts b/src/schema.ts index 63aaffb..8027023 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -1,4 +1,4 @@ -import { nip19, verifySignature, z } from '@/deps.ts'; +import { verifySignature, z } from '@/deps.ts'; import type { Event } from './event.ts'; diff --git a/src/transmute.ts b/src/transmute.ts index 7faf6f3..c157af2 100644 --- a/src/transmute.ts +++ b/src/transmute.ts @@ -21,7 +21,6 @@ async function toAccount(event: Event<0>, opts: ToAccountOpts = {}) { const { pubkey } = event; const { name, nip05, picture, banner, about }: MetaContent = parseMetaContent(event); - const { origin } = new URL(Conf.localDomain); const npub = nip19.npubEncode(pubkey); let parsed05: Nip05 | undefined; @@ -65,7 +64,7 @@ async function toAccount(event: Event<0>, opts: ToAccountOpts = {}) { } : undefined, statuses_count: 0, - url: `${origin}/users/${pubkey}`, + url: Conf.local(`/users/${pubkey}`), username: parsed05?.nickname || npub.substring(0, 8), }; } @@ -82,13 +81,12 @@ async function toMention(pubkey: string) { url: account.url, }; } else { - const { origin } = new URL(Conf.localDomain); const npub = nip19.npubEncode(pubkey); return { id: pubkey, acct: npub, username: npub.substring(0, 8), - url: `${origin}/users/${pubkey}`, + url: Conf.local(`/users/${pubkey}`), }; } } @@ -147,8 +145,8 @@ async function toStatus(event: Event<1>) { tags: [], emojis: toEmojis(event), poll: null, - uri: `${Conf.localDomain}/posts/${event.id}`, - url: `${Conf.localDomain}/posts/${event.id}`, + uri: Conf.local(`/posts/${event.id}`), + url: Conf.local(`/posts/${event.id}`), }; }