170 lines
3.6 KiB
JavaScript
170 lines
3.6 KiB
JavaScript
/*
|
|
var TransSchemas = {
|
|
Mastodon: {
|
|
Account: {
|
|
"__": "Author",
|
|
"url": "Url",
|
|
"avatar": "Picture",
|
|
"header": "Banner",
|
|
},
|
|
Instance: {
|
|
"thumbnail": "Banner",
|
|
},
|
|
Status: {
|
|
"__": "Note",
|
|
"account": {"__": "Account"},
|
|
"content": "Content",
|
|
"created_at": "Time",
|
|
"url": "Url",
|
|
},
|
|
},
|
|
};
|
|
*/
|
|
|
|
var ApiSchema = {
|
|
__All__: {
|
|
//ServerId: {
|
|
// __All__: "id",
|
|
//},
|
|
// NOTE: objects that embed cross-server data (e.g. a renote), might get this value assigned wrong for our needs (???)
|
|
ServerSoftware: {
|
|
__All__: {__EvalSet__: "TypeOld"},
|
|
},
|
|
},
|
|
Note: {
|
|
Content: {
|
|
Mastodon: "content",
|
|
Misskey: "text",
|
|
},
|
|
Profile: {
|
|
__: "Profile",
|
|
Mastodon: "account",
|
|
Misskey: "user",
|
|
},
|
|
Quoting: {
|
|
__: "Note",
|
|
Mastodon: "reblog",
|
|
Misskey: "renote",
|
|
},
|
|
Time: {
|
|
Mastodon: "created_at",
|
|
Misskey: "createdAt",
|
|
},
|
|
Url: {
|
|
__All__: {__OldOr__: ["url", "uri"]},
|
|
},
|
|
},
|
|
Profile: {
|
|
Avatar: {}, // would "Character" be better?
|
|
Banner: {
|
|
Mastodon: {__OldOr__: ["header", "thumbnail"]},
|
|
Misskey: "bannerUrl",
|
|
},
|
|
Description: {
|
|
Mastodon: {__OldOr__: ["note", "description"]},
|
|
Misskey: "description",
|
|
},
|
|
Icon: {
|
|
Mastodon: "avatar",
|
|
Misskey: {__OldOr__: ["avatarUrl", "iconUrl"]},
|
|
},
|
|
Name: {
|
|
Mastodon: {__OldOr__: ["display_name", "title"]},
|
|
Misskey: "name",
|
|
},
|
|
//ServerUsername: {
|
|
// __All__: "username",
|
|
//},
|
|
Type: { // user, bot, group, channel:[normal, server]
|
|
Mastodon: {__EvalSet__: `
|
|
if (TreeOld.bot) 'Bot';
|
|
else
|
|
if (TreeOld.group) 'Group';
|
|
`},
|
|
Misskey: {__EvalSet__: `
|
|
if (TreeOld.isBot) 'Bot';
|
|
`},
|
|
},
|
|
Url: {
|
|
__All__: {__OldOr__: ["url", "uri"]},
|
|
Mastodon: "url",
|
|
},
|
|
},
|
|
};
|
|
|
|
var ApiEndpoints = {
|
|
FetchNotes: {
|
|
Mastodon(Profile) {
|
|
// Must actually get the id by calling GET api/v1/accounts/lookup?acct=USERNAME, the provided one is glitchy
|
|
return `GET api/v1/accounts/${Profile.__TreeOld__.id}/statuses`;
|
|
},
|
|
Misskey(Profile) {
|
|
return {
|
|
Method: "POST api/users/notes",
|
|
Data: {"userId": Profile.Id},
|
|
};
|
|
},
|
|
},
|
|
ServerInfo: {
|
|
Mastodon: "GET api/v1/instance",
|
|
Misskey: {
|
|
Method: "POST api/meta",
|
|
Data: {"detail": true},
|
|
},
|
|
},
|
|
ServerTimeline: {
|
|
Mastodon: "GET api/v1/timelines/public",
|
|
Misskey: "POST api/notes/local-timeline",
|
|
},
|
|
};
|
|
|
|
var WebEndpoints = {
|
|
Note: {
|
|
Misskey(Note) {
|
|
//return `SERVER_URL/notes/${Note.ServerId}`;
|
|
return `SERVER_URL/notes/${Note.__TreeOld__.id}`;
|
|
},
|
|
},
|
|
Profile: {
|
|
Misskey(Profile) {
|
|
var Host = Profile.__TreeOld__.host;
|
|
//return `SERVER_URL/@${Profile.ServerUsername}`;
|
|
return `SERVER_URL/@${Profile.__TreeOld__.username}`;
|
|
},
|
|
},
|
|
};
|
|
|
|
function ApiTransform(Data, FromSource, DestType) {
|
|
var DataFinal = JsonTransformB(Data, ApiSchema, ApiSchema[DestType], FromSource);
|
|
LogDebug([Data, DestType, FromSource, DataFinal]);
|
|
return DataFinal;
|
|
};
|
|
|
|
function GetWebUrl(Data, Type) {
|
|
return (TryStr(Data.Url)
|
|
? Data.Url
|
|
: WebEndpoints[Type][Data.ServerSoftware](Data)
|
|
);
|
|
//return Data.Url || WebEndpoints[Type][Data.ServerSoftware](Data);
|
|
};
|
|
|
|
/*
|
|
var TransParsers = {
|
|
Mastodon: {
|
|
Account(Data) {
|
|
//return JsonTransformA(Data, TransSchemas.Mastodon.Author, TransSchemas.Mastodon);
|
|
return JsonTransformB(Data, ApiSchema, ApiSchema.Profile, 'Mastodon');
|
|
},
|
|
Instance(Data) {
|
|
return JsonTransformA(Data, TransSchemas.Mastodon.Instance, TransSchemas.Mastodon);
|
|
},
|
|
Status(Data) {
|
|
//return JsonTransformA(Data, TransSchemas.Mastodon.Status, TransSchemas.Mastodon);
|
|
return JsonTransformB(Data, ApiSchema, ApiSchema.Note, 'Mastodon');
|
|
},
|
|
},
|
|
Misskey: {
|
|
},
|
|
};
|
|
*/
|