* Delete index.ts * Delete emoji.ts * Update index.ts
This commit is contained in:
		
							parent
							
								
									33eb91c0f0
								
							
						
					
					
						commit
						960d4e2e7b
					
				
					 3 changed files with 0 additions and 135 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue