refactor: ♻️ Store instance federation protocol in database, refactor fetcher

This commit is contained in:
Jesse Wierzbinski 2024-06-29 20:58:39 -10:00
parent 6dc51ab323
commit f2b0de779b
No known key found for this signature in database
10 changed files with 2515 additions and 73 deletions

View file

@ -0,0 +1,48 @@
import { Args } from "@oclif/core";
import ora from "ora";
import { BaseCommand } from "~/cli/base";
import { formatArray } from "~/cli/utils/format";
import { Instance } from "~/packages/database-interface/instance";
export default class FederationInstanceFetch extends BaseCommand<
typeof FederationInstanceFetch
> {
static override args = {
url: Args.string({
description: "URL of the remote instance",
required: true,
}),
};
static override description = "Fetch metadata from remote instances";
static override examples = ["<%= config.bin %> <%= command.id %>"];
static override flags = {};
public async run(): Promise<void> {
const { args } = await this.parse(FederationInstanceFetch);
const spinner = ora("Fetching instance metadata").start();
const data = await Instance.fetchMetadata(args.url);
if (!data) {
spinner.fail("Failed to fetch instance metadata");
this.exit(1);
}
spinner.succeed("Fetched instance metadata");
const { metadata, protocol } = data;
this.log(
formatArray(
[{ ...metadata, protocol }],
["name", "description", "version", "protocol"],
),
);
this.exit(0);
}
}