This commit is contained in:
tamaina 2023-06-20 07:20:55 +00:00
parent 019199168e
commit bad25a804c
2 changed files with 35 additions and 31 deletions

View file

@ -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<typeof meta, typeof paramDef> {
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);
});
}

View file

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