From a7e6b766be6b30b37839beb13f31d96b141cc25a Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 2 Nov 2018 12:49:08 +0900 Subject: Resolve #2623 --- src/server/api/endpoints/app/create.ts | 50 ++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 23 deletions(-) (limited to 'src/server/api/endpoints/app/create.ts') diff --git a/src/server/api/endpoints/app/create.ts b/src/server/api/endpoints/app/create.ts index 19795f1728..40da5144f6 100644 --- a/src/server/api/endpoints/app/create.ts +++ b/src/server/api/endpoints/app/create.ts @@ -2,31 +2,35 @@ import rndstr from 'rndstr'; import $ from 'cafy'; import App, { pack } from '../../../../models/app'; import { ILocalUser } from '../../../../models/user'; +import getParams from '../../get-params'; export const meta = { - requireCredential: false + requireCredential: false, + + params: { + name: { + validator: $.str + }, + + description: { + validator: $.str + }, + + permission: { + validator: $.arr($.str).unique() + }, + + // TODO: Check it is valid url + callbackUrl: { + validator: $.str.optional.nullable, + default: null as any + }, + } }; -/** - * Create an app - */ export default async (params: any, user: ILocalUser) => new Promise(async (res, rej) => { - // Get 'name' parameter - const [name, nameErr] = $.str.get(params.name); - if (nameErr) return rej('invalid name param'); - - // Get 'description' parameter - const [description, descriptionErr] = $.str.get(params.description); - if (descriptionErr) return rej('invalid description param'); - - // Get 'permission' parameter - const [permission, permissionErr] = $.arr($.str).unique().get(params.permission); - if (permissionErr) return rej('invalid permission param'); - - // Get 'callbackUrl' parameter - // TODO: Check it is valid url - const [callbackUrl = null, callbackUrlErr] = $.str.optional.nullable.get(params.callbackUrl); - if (callbackUrlErr) return rej('invalid callbackUrl param'); + const [ps, psErr] = getParams(meta, params); + if (psErr) return rej(psErr); // Generate secret const secret = rndstr('a-zA-Z0-9', 32); @@ -36,9 +40,9 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res, createdAt: new Date(), userId: user && user._id, name: name, - description: description, - permission: permission, - callbackUrl: callbackUrl, + description: ps.description, + permission: ps.permission, + callbackUrl: ps.callbackUrl, secret: secret }); -- cgit v1.2.3-freya