Merge branch 'develop' of https://github.com/syuilo/misskey into develop
This commit is contained in:
commit
7cb38f5525
|
@ -56,8 +56,6 @@ router.use(require('./service/discord').routes());
|
||||||
router.use(require('./service/github').routes());
|
router.use(require('./service/github').routes());
|
||||||
router.use(require('./service/twitter').routes());
|
router.use(require('./service/twitter').routes());
|
||||||
|
|
||||||
router.use(require('./mastodon').routes());
|
|
||||||
|
|
||||||
// Return 404 for unknown API
|
// Return 404 for unknown API
|
||||||
router.all('*', async ctx => {
|
router.all('*', async ctx => {
|
||||||
ctx.status = 404;
|
ctx.status = 404;
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
export type IMastodonEmoji = {
|
|
||||||
shortcode: string,
|
|
||||||
url: string,
|
|
||||||
static_url: string,
|
|
||||||
visible_in_picker: boolean
|
|
||||||
};
|
|
||||||
|
|
||||||
export async function toMastodonEmojis(emoji: any): Promise<IMastodonEmoji[]> {
|
|
||||||
return [{
|
|
||||||
shortcode: emoji.name,
|
|
||||||
url: emoji.url,
|
|
||||||
static_url: emoji.url, // TODO: Implement ensuring static emoji
|
|
||||||
visible_in_picker: true
|
|
||||||
}, ...(emoji.aliases as string[] || []).map(x => ({
|
|
||||||
shortcode: x,
|
|
||||||
url: emoji.url,
|
|
||||||
static_url: emoji.url,
|
|
||||||
visible_in_picker: true
|
|
||||||
}))];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toMisskeyEmojiSync(emoji: IMastodonEmoji) {
|
|
||||||
return {
|
|
||||||
name: emoji.shortcode,
|
|
||||||
url: emoji.url
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toMisskeyEmojiWithAliasesSync(emoji: IMastodonEmoji, ...aliases: string[]) {
|
|
||||||
return {
|
|
||||||
name: emoji.shortcode,
|
|
||||||
aliases,
|
|
||||||
url: emoji.url
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
import * as Router from 'koa-router';
|
|
||||||
import User from '../../../models/user';
|
|
||||||
import { toASCII } from 'punycode';
|
|
||||||
import config from '../../../config';
|
|
||||||
import { ObjectID } from 'bson';
|
|
||||||
import Emoji from '../../../models/emoji';
|
|
||||||
import { toMastodonEmojis } from './emoji';
|
|
||||||
import fetchMeta from '../../../misc/fetch-meta';
|
|
||||||
import * as pkg from '../../../../package.json';
|
|
||||||
|
|
||||||
// Init router
|
|
||||||
const router = new Router();
|
|
||||||
|
|
||||||
router.get('/v1/custom_emojis', async ctx => ctx.body =
|
|
||||||
(await Emoji.find({ host: null }, {
|
|
||||||
fields: {
|
|
||||||
_id: false
|
|
||||||
}
|
|
||||||
})).map(x => toMastodonEmojis(x)));
|
|
||||||
|
|
||||||
router.get('/v1/instance', async ctx => { // TODO: This is a temporary implementation. Consider creating helper methods!
|
|
||||||
const meta = await fetchMeta();
|
|
||||||
const { originalNotesCount, originalUsersCount } = meta.stats;
|
|
||||||
const domains = await User.distinct('host', { host: { $ne: null } }) as any as [] || [];
|
|
||||||
const maintainer = await User.findOne({ isAdmin: true }) || {
|
|
||||||
_id: ObjectID.createFromTime(0),
|
|
||||||
username: '', // TODO: Consider making this better!
|
|
||||||
host: config.host,
|
|
||||||
name: '',
|
|
||||||
isLocked: false,
|
|
||||||
isBot: false,
|
|
||||||
createdAt: new Date(0),
|
|
||||||
description: '',
|
|
||||||
avatarUrl: '',
|
|
||||||
bannerUrl: '',
|
|
||||||
followersCount: 0,
|
|
||||||
followingCount: 0,
|
|
||||||
notesCount: 0
|
|
||||||
};
|
|
||||||
const acct = maintainer.host ? `${maintainer.username}@${maintainer.host}` : maintainer.username;
|
|
||||||
const emojis = (await Emoji.find({ host: null }, {
|
|
||||||
fields: {
|
|
||||||
_id: false
|
|
||||||
}
|
|
||||||
})).map(toMastodonEmojis);
|
|
||||||
|
|
||||||
ctx.body = {
|
|
||||||
uri: config.hostname,
|
|
||||||
title: meta.name || 'Misskey',
|
|
||||||
description: meta.description || '',
|
|
||||||
email: meta.maintainer.email,
|
|
||||||
version: `0.0.0 (compatible; Misskey ${pkg.version})`, // TODO: commit hash
|
|
||||||
thumbnail: meta.bannerUrl,
|
|
||||||
/*
|
|
||||||
urls: {
|
|
||||||
streaming_api: config.ws_url + '/mastodon' // TODO: Implement compatible streaming API
|
|
||||||
}, */
|
|
||||||
stats: {
|
|
||||||
user_count: originalUsersCount,
|
|
||||||
status_count: originalNotesCount,
|
|
||||||
domain_count: domains.length
|
|
||||||
},
|
|
||||||
languages: meta.langs || [ 'ja' ],
|
|
||||||
contact_account: {
|
|
||||||
id: maintainer._id,
|
|
||||||
username: maintainer.username,
|
|
||||||
acct: acct,
|
|
||||||
display_name: maintainer.name || '',
|
|
||||||
locked: maintainer.isLocked,
|
|
||||||
bot: maintainer.isBot,
|
|
||||||
created_at: maintainer.createdAt,
|
|
||||||
note: maintainer.description,
|
|
||||||
url: `${config.url}/@${acct}`,
|
|
||||||
avatar: maintainer.avatarUrl || '',
|
|
||||||
/*
|
|
||||||
avatar_static: maintainer.avatarUrl || '', // TODO: Implement static avatar url (ensure non-animated GIF)
|
|
||||||
*/
|
|
||||||
header: maintainer.bannerUrl || '',
|
|
||||||
/*
|
|
||||||
header_static: maintainer.bannerUrl || '', // TODO: Implement static header url (ensure non-animated GIF)
|
|
||||||
*/
|
|
||||||
followers_count: maintainer.followersCount,
|
|
||||||
following_count: maintainer.followingCount,
|
|
||||||
statuses_count: maintainer.notesCount,
|
|
||||||
emojis: emojis,
|
|
||||||
moved: null,
|
|
||||||
fields: null
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/v1/instance/peers', async ctx => {
|
|
||||||
const peers = await User.distinct('host', { host: { $ne: null } }) as any as string[];
|
|
||||||
const punyCodes = peers.map(peer => toASCII(peer));
|
|
||||||
ctx.body = punyCodes;
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = router;
|
|
Loading…
Reference in New Issue