mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 16:38:19 +01:00
Preliminary multi-protocol support work
This commit is contained in:
parent
e227522c55
commit
626b2cb311
48
packages/protocol-translator/index.ts
Normal file
48
packages/protocol-translator/index.ts
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
import type { APActor, APNote } from "activitypub-types";
|
||||||
|
import { ActivityPubTranslator } from "./protocols/activitypub";
|
||||||
|
|
||||||
|
export enum SupportedProtocols {
|
||||||
|
ACTIVITYPUB = "activitypub",
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ProtocolTranslator
|
||||||
|
* @summary Translates between federation protocols such as ActivityPub to Lysand and back
|
||||||
|
* @description This class is responsible for translating between federation protocols such as ActivityPub to Lysand and back.
|
||||||
|
* This class is not meant to be instantiated directly, but rather for its children to be used.
|
||||||
|
*/
|
||||||
|
export class ProtocolTranslator {
|
||||||
|
static auto(object: any) {
|
||||||
|
const protocol = this.recognizeProtocol(object);
|
||||||
|
switch (protocol) {
|
||||||
|
case SupportedProtocols.ACTIVITYPUB:
|
||||||
|
return new ActivityPubTranslator();
|
||||||
|
default:
|
||||||
|
throw new Error("Unknown protocol");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translates an ActivityPub actor to a Lysand user
|
||||||
|
* @param data Raw JSON-LD data from an ActivityPub actor
|
||||||
|
*/
|
||||||
|
user(data: APActor) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translates an ActivityPub note to a Lysand status
|
||||||
|
* @param data Raw JSON-LD data from an ActivityPub note
|
||||||
|
*/
|
||||||
|
status(data: APNote) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically recognizes the protocol of a given object
|
||||||
|
*/
|
||||||
|
private static recognizeProtocol(object: any) {
|
||||||
|
// Temporary stub
|
||||||
|
return SupportedProtocols.ACTIVITYPUB;
|
||||||
|
}
|
||||||
|
}
|
||||||
6
packages/protocol-translator/package.json
Normal file
6
packages/protocol-translator/package.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "protocol-translator",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"main": "index.ts",
|
||||||
|
"dependencies": {}
|
||||||
|
}
|
||||||
11
packages/protocol-translator/protocols/activitypub.ts
Normal file
11
packages/protocol-translator/protocols/activitypub.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { ProtocolTranslator } from "..";
|
||||||
|
|
||||||
|
export class ActivityPubTranslator extends ProtocolTranslator {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
user() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue