2023-04-20 22:08:38 +02:00
|
|
|
/*
|
2023-04-19 18:06:08 +02:00
|
|
|
var TransSchemas = {
|
|
|
|
Mastodon: {
|
|
|
|
Account: {
|
|
|
|
"__": "Author",
|
|
|
|
"url": "Url",
|
2023-04-20 00:19:19 +02:00
|
|
|
"avatar": "Picture",
|
|
|
|
"header": "Banner",
|
|
|
|
},
|
|
|
|
Instance: {
|
|
|
|
"thumbnail": "Banner",
|
2023-04-19 18:06:08 +02:00
|
|
|
},
|
|
|
|
Status: {
|
|
|
|
"__": "Note",
|
|
|
|
"account": {"__": "Account"},
|
|
|
|
"content": "Content",
|
|
|
|
"created_at": "Time",
|
|
|
|
"url": "Url",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
2023-04-20 22:08:38 +02:00
|
|
|
*/
|
2023-04-20 18:13:47 +02:00
|
|
|
|
|
|
|
var ApiSchema = {
|
2023-04-27 23:48:15 +02:00
|
|
|
__All__: {
|
|
|
|
ServerSoftware: { //TODO: Handle this in JsonTransform
|
2023-04-28 17:25:42 +02:00
|
|
|
//Mastodon: {__Set__: "Mastodon"},
|
|
|
|
//Misskey: {__Set__: "Misskey"},
|
|
|
|
__All__: {__EvalSet__: "TypeOld"},
|
2023-04-27 23:48:15 +02:00
|
|
|
},
|
|
|
|
},
|
2023-04-23 19:46:01 +02:00
|
|
|
Note: {
|
2023-04-22 17:09:59 +02:00
|
|
|
Content: {
|
|
|
|
Mastodon: "content",
|
|
|
|
Misskey: "text",
|
|
|
|
},
|
|
|
|
Profile: {
|
2023-04-28 17:25:42 +02:00
|
|
|
__: "Profile",
|
2023-04-22 17:09:59 +02:00
|
|
|
Mastodon: "account",
|
|
|
|
Misskey: "user",
|
|
|
|
},
|
2023-04-23 00:48:14 +02:00
|
|
|
Quoting: {
|
2023-04-28 17:25:42 +02:00
|
|
|
__: "Note",
|
2023-04-23 00:48:14 +02:00
|
|
|
Mastodon: "reblog",
|
2023-04-25 00:55:20 +02:00
|
|
|
Misskey: "renote",
|
2023-04-23 00:48:14 +02:00
|
|
|
},
|
2023-04-22 17:09:59 +02:00
|
|
|
Time: {
|
|
|
|
Mastodon: "created_at",
|
|
|
|
Misskey: "createdAt",
|
|
|
|
},
|
|
|
|
Url: {
|
2023-04-29 00:06:16 +02:00
|
|
|
__All__: {__OldOr__: ["url", "uri"]},
|
2023-04-22 17:09:59 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
Profile: {
|
|
|
|
Avatar: {}, // would "Character" be better?
|
2023-04-20 18:13:47 +02:00
|
|
|
Banner: {
|
2023-04-26 15:33:51 +02:00
|
|
|
Mastodon: {__OldOr__: ["header", "thumbnail"]},
|
2023-04-20 22:08:38 +02:00
|
|
|
Misskey: "bannerUrl",
|
|
|
|
},
|
|
|
|
Description: {
|
2023-04-26 15:33:51 +02:00
|
|
|
Mastodon: {__OldOr__: ["note", "description"]},
|
2023-04-20 22:08:38 +02:00
|
|
|
Misskey: "description",
|
2023-04-20 18:13:47 +02:00
|
|
|
},
|
|
|
|
Icon: {
|
|
|
|
Mastodon: "avatar",
|
2023-04-27 00:13:31 +02:00
|
|
|
Misskey: {__OldOr__: ["avatarUrl", "iconUrl"]},
|
2023-04-20 15:17:00 +02:00
|
|
|
},
|
2023-04-20 18:13:47 +02:00
|
|
|
Name: {
|
2023-04-26 15:33:51 +02:00
|
|
|
Mastodon: {__OldOr__: ["display_name", "title"]},
|
2023-04-20 22:08:38 +02:00
|
|
|
Misskey: "name",
|
2023-04-20 15:17:00 +02:00
|
|
|
},
|
2023-04-26 15:33:51 +02:00
|
|
|
Type: { // user, bot, group, channel:[normal, server]
|
2023-04-23 19:46:01 +02:00
|
|
|
Mastodon: {__EvalSet__: `
|
|
|
|
if (TreeOld.bot) 'Bot';
|
|
|
|
else
|
|
|
|
if (TreeOld.group) 'Group';
|
2023-04-23 00:48:14 +02:00
|
|
|
`},
|
2023-04-28 17:25:42 +02:00
|
|
|
Misskey: {__EvalSet__: `
|
|
|
|
if (TreeOld.isBot) 'Bot';
|
|
|
|
`},
|
2023-04-23 00:48:14 +02:00
|
|
|
},
|
2023-04-20 18:13:47 +02:00
|
|
|
Url: {
|
2023-04-29 00:06:16 +02:00
|
|
|
__All__: {__OldOr__: ["url", "uri"]},
|
2023-04-20 18:13:47 +02:00
|
|
|
Mastodon: "url",
|
2023-04-20 00:19:19 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
2023-04-19 18:06:08 +02:00
|
|
|
|
2023-04-25 00:55:20 +02:00
|
|
|
var ApiEndpoints = {
|
|
|
|
FetchNotes: {
|
|
|
|
Mastodon(Profile) {
|
2023-04-27 00:13:31 +02:00
|
|
|
return `GET api/v1/accounts/${Profile.Id}/statuses`;
|
2023-04-25 00:55:20 +02:00
|
|
|
},
|
2023-04-28 17:25:42 +02:00
|
|
|
Misskey(Profile) {
|
2023-04-29 00:06:16 +02:00
|
|
|
return {
|
|
|
|
Method: "POST api/users/show",
|
|
|
|
Data: {"username": Profile.Id},
|
|
|
|
};
|
2023-04-28 17:25:42 +02:00
|
|
|
},
|
2023-04-25 00:55:20 +02:00
|
|
|
},
|
2023-04-26 15:33:51 +02:00
|
|
|
ServerInfo: {
|
2023-04-27 00:13:31 +02:00
|
|
|
Mastodon: "GET api/v1/instance",
|
|
|
|
Misskey: {
|
|
|
|
Method: "POST api/meta",
|
|
|
|
Data: {"detail": true},
|
|
|
|
},
|
2023-04-26 15:33:51 +02:00
|
|
|
},
|
|
|
|
ServerTimeline: {
|
2023-04-27 00:13:31 +02:00
|
|
|
Mastodon: "GET api/v1/timelines/public",
|
2023-04-28 17:25:42 +02:00
|
|
|
Misskey: "POST api/notes/local-timeline",
|
2023-04-26 15:33:51 +02:00
|
|
|
},
|
2023-04-25 00:55:20 +02:00
|
|
|
};
|
|
|
|
|
2023-04-23 00:48:14 +02:00
|
|
|
function ApiTransform(Data, FromSource, DestType) {
|
2023-04-26 15:33:51 +02:00
|
|
|
var DataFinal = JsonTransformB(Data, ApiSchema, ApiSchema[DestType], FromSource);
|
|
|
|
LogDebug([Data, DestType, FromSource, DataFinal]);
|
|
|
|
return DataFinal;
|
2023-04-23 00:48:14 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2023-04-19 18:06:08 +02:00
|
|
|
var TransParsers = {
|
|
|
|
Mastodon: {
|
|
|
|
Account(Data) {
|
2023-04-22 10:06:31 +02:00
|
|
|
//return JsonTransformA(Data, TransSchemas.Mastodon.Author, TransSchemas.Mastodon);
|
2023-04-22 17:09:59 +02:00
|
|
|
return JsonTransformB(Data, ApiSchema, ApiSchema.Profile, 'Mastodon');
|
2023-04-20 00:19:19 +02:00
|
|
|
},
|
|
|
|
Instance(Data) {
|
|
|
|
return JsonTransformA(Data, TransSchemas.Mastodon.Instance, TransSchemas.Mastodon);
|
2023-04-19 18:06:08 +02:00
|
|
|
},
|
|
|
|
Status(Data) {
|
2023-04-20 18:13:47 +02:00
|
|
|
//return JsonTransformA(Data, TransSchemas.Mastodon.Status, TransSchemas.Mastodon);
|
|
|
|
return JsonTransformB(Data, ApiSchema, ApiSchema.Note, 'Mastodon');
|
2023-04-19 18:06:08 +02:00
|
|
|
},
|
|
|
|
},
|
2023-04-20 22:08:38 +02:00
|
|
|
Misskey: {
|
|
|
|
},
|
2023-04-19 18:06:08 +02:00
|
|
|
};
|
2023-04-23 00:48:14 +02:00
|
|
|
*/
|