Make /api/v1/instance and /api/v1/custom_emojis better (#3118)
* Separate commits From commitdca110ebaa. * Re-separate commits From commit9719387bee.
This commit is contained in:
		
							parent
							
								
									712802e682
								
							
						
					
					
						commit
						0d23ce3d45
					
				
					 2 changed files with 44 additions and 3 deletions
				
			
		
							
								
								
									
										35
									
								
								src/models/mastodon/emoji.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/models/mastodon/emoji.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -5,17 +5,18 @@ import config from '../../config';
 | 
				
			||||||
import Meta from '../../models/meta';
 | 
					import Meta from '../../models/meta';
 | 
				
			||||||
import { ObjectID } from 'bson';
 | 
					import { ObjectID } from 'bson';
 | 
				
			||||||
import Emoji from '../../models/emoji';
 | 
					import Emoji from '../../models/emoji';
 | 
				
			||||||
 | 
					import { toMastodonEmojis } from '../../models/mastodon/emoji';
 | 
				
			||||||
const pkg = require('../../../package.json');
 | 
					const pkg = require('../../../package.json');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Init router
 | 
					// Init router
 | 
				
			||||||
const router = new Router();
 | 
					const router = new Router();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
router.get('/v1/custom_emojis', async ctx => ctx.body =
 | 
					router.get('/v1/custom_emojis', async ctx => ctx.body =
 | 
				
			||||||
	await Emoji.find({ host: null }, {
 | 
						(await Emoji.find({ host: null }, {
 | 
				
			||||||
		fields: {
 | 
							fields: {
 | 
				
			||||||
			_id: false
 | 
								_id: false
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}));
 | 
						})).map(toMastodonEmojis));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
router.get('/v1/instance', async ctx => { // TODO: This is a temporary implementation. Consider creating helper methods!
 | 
					router.get('/v1/instance', async ctx => { // TODO: This is a temporary implementation. Consider creating helper methods!
 | 
				
			||||||
	const meta = await Meta.findOne() || {};
 | 
						const meta = await Meta.findOne() || {};
 | 
				
			||||||
| 
						 | 
					@ -40,6 +41,11 @@ router.get('/v1/instance', async ctx => { // TODO: This is a temporary implement
 | 
				
			||||||
		notesCount: 0
 | 
							notesCount: 0
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	const acct = maintainer.host ? `${maintainer.username}@${maintainer.host}` : maintainer.username;
 | 
						const acct = maintainer.host ? `${maintainer.username}@${maintainer.host}` : maintainer.username;
 | 
				
			||||||
 | 
						const emojis = (await Emoji.find({ host: null }, {
 | 
				
			||||||
 | 
							fields: {
 | 
				
			||||||
 | 
								_id: false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						})).map(toMastodonEmojis);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.body = {
 | 
						ctx.body = {
 | 
				
			||||||
		uri: config.hostname,
 | 
							uri: config.hostname,
 | 
				
			||||||
| 
						 | 
					@ -79,7 +85,7 @@ router.get('/v1/instance', async ctx => { // TODO: This is a temporary implement
 | 
				
			||||||
			followers_count: maintainer.followersCount,
 | 
								followers_count: maintainer.followersCount,
 | 
				
			||||||
			following_count: maintainer.followingCount,
 | 
								following_count: maintainer.followingCount,
 | 
				
			||||||
			statuses_count: maintainer.notesCount,
 | 
								statuses_count: maintainer.notesCount,
 | 
				
			||||||
			emojis: [],
 | 
								emojis: emojis,
 | 
				
			||||||
			moved: null,
 | 
								moved: null,
 | 
				
			||||||
			fields: null
 | 
								fields: null
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue