From ad9ed2598cb2e2fa346eebf2984d09603282d9cf Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Fri, 26 Jul 2024 18:07:11 +0200 Subject: [PATCH] refactor(federation): :arrow_up: Refactor code to use v2.2 of federation SDK --- bun.lockb | Bin 278980 -> 278996 bytes classes/functions/status.ts | 11 +-- cli/commands/federation/user/fetch.ts | 7 +- cli/commands/federation/user/finger.ts | 7 +- package.json | 2 +- packages/database-interface/instance.ts | 89 +++++++++++---------- packages/database-interface/note.ts | 2 +- packages/database-interface/user.ts | 7 +- server/api/api/v1/accounts/lookup/index.ts | 7 +- server/api/api/v1/accounts/search/index.ts | 7 +- server/api/api/v2/search/index.ts | 7 +- server/api/well-known/webfinger/index.ts | 6 +- 12 files changed, 73 insertions(+), 79 deletions(-) diff --git a/bun.lockb b/bun.lockb index 41e8c4bacb6956d0178fcebe0b3d78006bc3b9fd..342bcdb879fa1a7bbbb8e5fa5bda3f0810a2ba11 100755 GIT binary patch delta 37658 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 delta 37811 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 diff --git a/classes/functions/status.ts b/classes/functions/status.ts index 88dbbdd7..e5f60da4 100644 --- a/classes/functions/status.ts +++ b/classes/functions/status.ts @@ -320,12 +320,13 @@ export const parseTextMentions = async ( author.data.privateKey ?? "", author.getUri(), ); - const manager = new FederationRequester( - new URL(`https://${person?.[2] ?? ""}`), - signatureConstructor, - ); + const manager = new FederationRequester(signatureConstructor); - const uri = await User.webFinger(manager, person?.[1] ?? ""); + const uri = await User.webFinger( + manager, + person?.[1] ?? "", + person?.[2] ?? "", + ); const user = await User.resolve(uri); diff --git a/cli/commands/federation/user/fetch.ts b/cli/commands/federation/user/fetch.ts index 3cf5e93e..c254ac0a 100644 --- a/cli/commands/federation/user/fetch.ts +++ b/cli/commands/federation/user/fetch.ts @@ -51,12 +51,9 @@ export default class FederationUserFetch extends BaseCommand< requester.data.privateKey ?? "", requester.getUri(), ); - const manager = new FederationRequester( - new URL(`https://${host}`), - signatureConstructor, - ); + const manager = new FederationRequester(signatureConstructor); - const uri = await User.webFinger(manager, username); + const uri = await User.webFinger(manager, username, host); const newUser = await User.resolve(uri); diff --git a/cli/commands/federation/user/finger.ts b/cli/commands/federation/user/finger.ts index 37dfc4eb..51cffc0f 100644 --- a/cli/commands/federation/user/finger.ts +++ b/cli/commands/federation/user/finger.ts @@ -51,12 +51,9 @@ export default class FederationUserFinger extends BaseCommand< requester.data.privateKey ?? "", requester.getUri(), ); - const manager = new FederationRequester( - new URL(`https://${host}`), - signatureConstructor, - ); + const manager = new FederationRequester(signatureConstructor); - const uri = await User.webFinger(manager, username); + const uri = await User.webFinger(manager, username, host); spinner.succeed("Fetched user URI"); diff --git a/package.json b/package.json index 51477623..289d1381 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "@json2csv/plainjs": "^7.0.6", "@logtape/logtape": "npm:@jsr/logtape__logtape@0.4.2", "@lysand-org/client": "^0.2.5", - "@lysand-org/federation": "^2.1.10", + "@lysand-org/federation": "^2.2.0-rc.2", "@oclif/core": "^4.0.14", "@sentry/bun": "^8.20.0", "@tufjs/canonical-json": "^2.0.0", diff --git a/packages/database-interface/instance.ts b/packages/database-interface/instance.ts index 100b9620..f4107d13 100644 --- a/packages/database-interface/instance.ts +++ b/packages/database-interface/instance.ts @@ -140,15 +140,14 @@ export class Instance extends BaseInterface { const logger = getLogger("federation"); try { - const { ok, raw, data } = await FederationRequester.get( - wellKnownUrl, - { + const { ok, raw, data } = await new FederationRequester() + .get(wellKnownUrl, { // @ts-expect-error Bun extension proxy: config.http.proxy.address, - }, - ).catch((e) => ({ - ...(e as ResponseError).response, - })); + }) + .catch((e) => ({ + ...(e as ResponseError).response, + })); if (!(ok && raw.headers.get("content-type")?.includes("json"))) { // If the server doesn't have a Lysand well-known endpoint, it's not a Lysand instance @@ -200,18 +199,20 @@ export class Instance extends BaseInterface { raw: response, ok, data: wellKnown, - } = await FederationRequester.get<{ - links: { rel: string; href: string }[]; - }>(wellKnownUrl, { - // @ts-expect-error Bun extension - proxy: config.http.proxy.address, - }).catch((e) => ({ - ...( - e as ResponseError<{ - links: { rel: string; href: string }[]; - }> - ).response, - })); + } = await new FederationRequester() + .get<{ + links: { rel: string; href: string }[]; + }>(wellKnownUrl, { + // @ts-expect-error Bun extension + proxy: config.http.proxy.address, + }) + .catch((e) => ({ + ...( + e as ResponseError<{ + links: { rel: string; href: string }[]; + }> + ).response, + })); if (!ok) { logger.error`Failed to fetch ActivityPub metadata for instance ${chalk.bold( @@ -244,30 +245,32 @@ export class Instance extends BaseInterface { raw: metadataResponse, ok: ok2, data: metadata, - } = await FederationRequester.get<{ - metadata: { - nodeName?: string; - title?: string; - nodeDescription?: string; - description?: string; - }; - software: { version: string }; - }>(metadataUrl.href, { - // @ts-expect-error Bun extension - proxy: config.http.proxy.address, - }).catch((e) => ({ - ...( - e as ResponseError<{ - metadata: { - nodeName?: string; - title?: string; - nodeDescription?: string; - description?: string; - }; - software: { version: string }; - }> - ).response, - })); + } = await new FederationRequester() + .get<{ + metadata: { + nodeName?: string; + title?: string; + nodeDescription?: string; + description?: string; + }; + software: { version: string }; + }>(metadataUrl.href, { + // @ts-expect-error Bun extension + proxy: config.http.proxy.address, + }) + .catch((e) => ({ + ...( + e as ResponseError<{ + metadata: { + nodeName?: string; + title?: string; + nodeDescription?: string; + description?: string; + }; + software: { version: string }; + }> + ).response, + })); if (!ok2) { logger.error`Failed to fetch ActivityPub metadata for instance ${chalk.bold( diff --git a/packages/database-interface/note.ts b/packages/database-interface/note.ts index bd76daf3..11a8a3be 100644 --- a/packages/database-interface/note.ts +++ b/packages/database-interface/note.ts @@ -592,7 +592,7 @@ export class Note extends BaseInterface { throw new Error(`Invalid URI to parse ${uri}`); } - const { data } = await FederationRequester.get(uri, { + const { data } = await new FederationRequester().get(uri, { // @ts-expect-error Bun extension proxy: config.http.proxy.address, }); diff --git a/packages/database-interface/user.ts b/packages/database-interface/user.ts index c94fe972..10ddd2ab 100644 --- a/packages/database-interface/user.ts +++ b/packages/database-interface/user.ts @@ -201,12 +201,13 @@ export class User extends BaseInterface { static async webFinger( manager: FederationRequester, username: string, + hostname: string, ): Promise { return ( - (await manager.webFinger(username).catch(() => null)) ?? + (await manager.webFinger(username, hostname).catch(() => null)) ?? (await manager.webFinger( username, - manager.url.hostname, + hostname, "application/activity+json", )) ); @@ -340,7 +341,7 @@ export class User extends BaseInterface { uri: string, instance: Instance, ): Promise { - const { data: json } = await FederationRequester.get< + const { data: json } = await new FederationRequester().get< Partial >(uri, { // @ts-expect-error Bun extension diff --git a/server/api/api/v1/accounts/lookup/index.ts b/server/api/api/v1/accounts/lookup/index.ts index c58c52ba..819a0a02 100644 --- a/server/api/api/v1/accounts/lookup/index.ts +++ b/server/api/api/v1/accounts/lookup/index.ts @@ -89,12 +89,9 @@ export default (app: Hono) => requester.data.privateKey ?? "", requester.getUri(), ); - const manager = new FederationRequester( - new URL(`https://${domain}`), - signatureConstructor, - ); + const manager = new FederationRequester(signatureConstructor); - const uri = await User.webFinger(manager, username); + const uri = await User.webFinger(manager, username, domain); const foundAccount = await User.resolve(uri); diff --git a/server/api/api/v1/accounts/search/index.ts b/server/api/api/v1/accounts/search/index.ts index 9b300c53..62bbfe9a 100644 --- a/server/api/api/v1/accounts/search/index.ts +++ b/server/api/api/v1/accounts/search/index.ts @@ -100,12 +100,9 @@ export default (app: Hono) => requester.data.privateKey ?? "", requester.getUri(), ); - const manager = new FederationRequester( - new URL(`https://${host}`), - signatureConstructor, - ); + const manager = new FederationRequester(signatureConstructor); - const uri = await User.webFinger(manager, username); + const uri = await User.webFinger(manager, username, host); const resolvedUser = await User.resolve(uri); diff --git a/server/api/api/v2/search/index.ts b/server/api/api/v2/search/index.ts index d32922f6..92cb2825 100644 --- a/server/api/api/v2/search/index.ts +++ b/server/api/api/v2/search/index.ts @@ -139,11 +139,14 @@ export default (app: Hono) => requester.getUri(), ); const manager = new FederationRequester( - new URL(`https://${domain}`), signatureConstructor, ); - const uri = await User.webFinger(manager, username); + const uri = await User.webFinger( + manager, + username, + domain, + ); const newUser = await User.resolve(uri); diff --git a/server/api/well-known/webfinger/index.ts b/server/api/well-known/webfinger/index.ts index d45cc285..909d1796 100644 --- a/server/api/well-known/webfinger/index.ts +++ b/server/api/well-known/webfinger/index.ts @@ -90,16 +90,14 @@ export default (app: Hono) => requester.getUri(), ); - const manager = new FederationRequester( - new URL(config.federation.bridge.url ?? ""), - signatureConstructor, - ); + const manager = new FederationRequester(signatureConstructor); try { activityPubUrl = await manager.webFinger( user.data.username, new URL(config.http.base_url).host, "application/activity+json", + config.federation.bridge.url, ); } catch (e) { const error = e as ResponseError;