summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-25 13:25:10 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-25 13:25:10 +0900
commit6721d27e3f085a2335485eed0eb90409240539c1 (patch)
tree9cfebab85e7cd4651f2d2dac9929a21d7d21e6da /src/server/api
parentImprove API definition (diff)
downloadmisskey-6721d27e3f085a2335485eed0eb90409240539c1.tar.gz
misskey-6721d27e3f085a2335485eed0eb90409240539c1.tar.bz2
misskey-6721d27e3f085a2335485eed0eb90409240539c1.zip
Improve hashtag API
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/endpoints/hashtags/list.ts2
-rw-r--r--src/server/api/endpoints/hashtags/show.ts48
-rw-r--r--src/server/api/openapi/schemas.ts46
3 files changed, 51 insertions, 45 deletions
diff --git a/src/server/api/endpoints/hashtags/list.ts b/src/server/api/endpoints/hashtags/list.ts
index 89cc926422..9023f11913 100644
--- a/src/server/api/endpoints/hashtags/list.ts
+++ b/src/server/api/endpoints/hashtags/list.ts
@@ -92,5 +92,5 @@ export default define(meta, async (ps, me) => {
const tags = await query.take(ps.limit!).getMany();
- return tags;
+ return Hashtags.packMany(tags);
});
diff --git a/src/server/api/endpoints/hashtags/show.ts b/src/server/api/endpoints/hashtags/show.ts
new file mode 100644
index 0000000000..72a4cc7c87
--- /dev/null
+++ b/src/server/api/endpoints/hashtags/show.ts
@@ -0,0 +1,48 @@
+import $ from 'cafy';
+import define from '../../define';
+import { ApiError } from '../../error';
+import { Hashtags } from '../../../../models';
+import { types, bool } from '../../../../misc/schema';
+
+export const meta = {
+ desc: {
+ 'ja-JP': '指定したハッシュタグの情報を取得します。',
+ },
+
+ tags: ['hashtags'],
+
+ requireCredential: false,
+
+ params: {
+ tag: {
+ validator: $.str,
+ desc: {
+ 'ja-JP': '対象のハッシュタグ(#なし)',
+ 'en-US': 'Target hashtag. (no # prefixed)'
+ }
+ }
+ },
+
+ res: {
+ type: types.object,
+ optional: bool.false, nullable: bool.false,
+ ref: 'Hashtag',
+ },
+
+ errors: {
+ noSuchHashtag: {
+ message: 'No such hashtag.',
+ code: 'NO_SUCH_HASHTAG',
+ id: '110ee688-193e-4a3a-9ecf-c167b2e6981e'
+ }
+ }
+};
+
+export default define(meta, async (ps, user) => {
+ const hashtag = await Hashtags.findOne({ name: ps.tag.toLowerCase() });
+ if (hashtag == null) {
+ throw new ApiError(meta.errors.noSuchHashtag);
+ }
+
+ return await Hashtags.pack(hashtag);
+});
diff --git a/src/server/api/openapi/schemas.ts b/src/server/api/openapi/schemas.ts
index e54f989e74..34e6f8947d 100644
--- a/src/server/api/openapi/schemas.ts
+++ b/src/server/api/openapi/schemas.ts
@@ -11,6 +11,7 @@ import { packedFollowingSchema } from '../../../models/repositories/following';
import { packedMutingSchema } from '../../../models/repositories/muting';
import { packedBlockingSchema } from '../../../models/repositories/blocking';
import { packedNoteReactionSchema } from '../../../models/repositories/note-reaction';
+import { packedHashtagSchema } from '../../../models/repositories/hashtag';
export function convertSchemaToOpenApiSchema(schema: Schema) {
const res: any = schema;
@@ -74,48 +75,5 @@ export const schemas = {
Muting: convertSchemaToOpenApiSchema(packedMutingSchema),
Blocking: convertSchemaToOpenApiSchema(packedBlockingSchema),
NoteReaction: convertSchemaToOpenApiSchema(packedNoteReactionSchema),
-
- Hashtag: {
- type: 'object',
- properties: {
- tag: {
- type: 'string',
- description: 'The hashtag name. No # prefixed.',
- example: 'misskey',
- },
- mentionedUsersCount: {
- type: 'number',
- description: 'Number of all users using this hashtag.'
- },
- mentionedLocalUsersCount: {
- type: 'number',
- description: 'Number of local users using this hashtag.'
- },
- mentionedRemoteUsersCount: {
- type: 'number',
- description: 'Number of remote users using this hashtag.'
- },
- attachedUsersCount: {
- type: 'number',
- description: 'Number of all users who attached this hashtag to profile.'
- },
- attachedLocalUsersCount: {
- type: 'number',
- description: 'Number of local users who attached this hashtag to profile.'
- },
- attachedRemoteUsersCount: {
- type: 'number',
- description: 'Number of remote users who attached this hashtag to profile.'
- },
- },
- required: [
- 'tag',
- 'mentionedUsersCount',
- 'mentionedLocalUsersCount',
- 'mentionedRemoteUsersCount',
- 'attachedUsersCount',
- 'attachedLocalUsersCount',
- 'attachedRemoteUsersCount',
- ]
- },
+ Hashtag: convertSchemaToOpenApiSchema(packedHashtagSchema),
};