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