Merge branch 'develop' of https://github.com/syuilo/misskey into develop

This commit is contained in:
syuilo 2019-01-31 17:38:24 +09:00
commit 7cb38f5525
No known key found for this signature in database
GPG Key ID: BDC4C49D06AB9D69
3 changed files with 0 additions and 135 deletions

View File

@ -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;

View File

@ -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
};
}

View File

@ -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;