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/twitter').routes());
|
||||
|
||||
router.use(require('./mastodon').routes());
|
||||
|
||||
// Return 404 for unknown API
|
||||
router.all('*', async ctx => {
|
||||
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
Block a user