mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 05:49:16 +01:00
refactor: ♻️ Store instance federation protocol in database, refactor fetcher
This commit is contained in:
parent
6dc51ab323
commit
f2b0de779b
10 changed files with 2515 additions and 73 deletions
48
cli/commands/federation/instance/fetch.ts
Normal file
48
cli/commands/federation/instance/fetch.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import EmojiAdd from "./commands/emoji/add";
|
|||
import EmojiDelete from "./commands/emoji/delete";
|
||||
import EmojiImport from "./commands/emoji/import";
|
||||
import EmojiList from "./commands/emoji/list";
|
||||
import FederationInstanceFetch from "./commands/federation/instance/fetch";
|
||||
import IndexRebuild from "./commands/index/rebuild";
|
||||
import Start from "./commands/start";
|
||||
import UserCreate from "./commands/user/create";
|
||||
|
|
@ -26,6 +27,7 @@ export const commands = {
|
|||
"emoji:list": EmojiList,
|
||||
"emoji:import": EmojiImport,
|
||||
"index:rebuild": IndexRebuild,
|
||||
"federation:instance:fetch": FederationInstanceFetch,
|
||||
start: Start,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue