From bad25a804c193485af7be1a804b8e8a3ec6d670f Mon Sep 17 00:00:00 2001 From: tamaina Date: Tue, 20 Jun 2023 07:20:55 +0000 Subject: [PATCH] wip --- .../api/endpoints/email-address/available.ts | 34 ++----------------- packages/misskey-js/src/endpoints.ts | 32 +++++++++++++++++ 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/email-address/available.ts b/packages/backend/src/server/api/endpoints/email-address/available.ts index 0f13b14d01..786a16a29f 100644 --- a/packages/backend/src/server/api/endpoints/email-address/available.ts +++ b/packages/backend/src/server/api/endpoints/email-address/available.ts @@ -2,42 +2,14 @@ import { Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { EmailService } from '@/core/EmailService.js'; -export const meta = { - tags: ['users'], - - requireCredential: false, - - res: { - type: 'object', - optional: false, nullable: false, - properties: { - available: { - type: 'boolean', - optional: false, nullable: false, - }, - reason: { - type: 'string', - optional: false, nullable: true, - }, - }, - }, -} as const; - -export const paramDef = { - type: 'object', - properties: { - emailAddress: { type: 'string' }, - }, - required: ['emailAddress'], -} as const; - // eslint-disable-next-line import/no-default-export @Injectable() -export default class extends Endpoint { +export default class extends Endpoint<'email-address/available'> { + name = 'email-address/available' as const; constructor( private emailService: EmailService, ) { - super(meta, paramDef, async (ps, me) => { + super(async (ps, me) => { return await this.emailService.validateEmailForAccount(ps.emailAddress); }); } diff --git a/packages/misskey-js/src/endpoints.ts b/packages/misskey-js/src/endpoints.ts index f6fe40fa73..236ff8bb09 100644 --- a/packages/misskey-js/src/endpoints.ts +++ b/packages/misskey-js/src/endpoints.ts @@ -4171,6 +4171,38 @@ export const endpoints = { }], }, //#endregion + + 'email-address/available': { + tags: ['users'], + + requireCredential: false, + + defines: [{ + req: { + type: 'object', + properties: { + emailAddress: { type: 'string' }, + }, + required: ['emailAddress'], + }, + res: { + type: 'object', + properties: { + available: { type: 'boolean' }, + reason: { + oneOf: [ + { type: 'string', enum: ['used', 'format', 'disposable', 'mx', 'smtp'] }, + { type: 'null' }, + ], + }, + }, + required: [ + 'available', + 'reason', + ], + }, + }], + }, } as const satisfies { [x: string]: IEndpointMeta; }; /**