summaryrefslogtreecommitdiff
path: root/src/server/api/api-handler.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-02-22 14:46:49 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-02-22 14:46:49 +0900
commitb7d62d09ec747610ebec724b706fa1f0dd1a41eb (patch)
tree5ae6ff00992e31df925cab56ee5f2fd0bb338b75 /src/server/api/api-handler.ts
parentMerge branch 'develop' of https://github.com/syuilo/misskey into develop (diff)
downloadsharkey-b7d62d09ec747610ebec724b706fa1f0dd1a41eb.tar.gz
sharkey-b7d62d09ec747610ebec724b706fa1f0dd1a41eb.tar.bz2
sharkey-b7d62d09ec747610ebec724b706fa1f0dd1a41eb.zip
Refactor
Diffstat (limited to 'src/server/api/api-handler.ts')
-rw-r--r--src/server/api/api-handler.ts40
1 files changed, 12 insertions, 28 deletions
diff --git a/src/server/api/api-handler.ts b/src/server/api/api-handler.ts
index 5cd8cf1e2a..fdfaea1ff2 100644
--- a/src/server/api/api-handler.ts
+++ b/src/server/api/api-handler.ts
@@ -3,11 +3,9 @@ import * as Koa from 'koa';
import { IEndpoint } from './endpoints';
import authenticate from './authenticate';
import call from './call';
-import { IUser } from '../../models/user';
-import { IApp } from '../../models/app';
import { ApiError } from './error';
-export default async (endpoint: IEndpoint, ctx: Koa.BaseContext) => {
+export default (endpoint: IEndpoint, ctx: Koa.BaseContext) => new Promise((res) => {
const body = ctx.is('multipart/form-data') ? (ctx.req as any).body : ctx.request.body;
const reply = (x?: any, y?: ApiError) => {
@@ -19,36 +17,22 @@ export default async (endpoint: IEndpoint, ctx: Koa.BaseContext) => {
} else {
ctx.body = x;
}
+ res();
};
- let user: IUser;
- let app: IApp;
-
// Authentication
- try {
- [user, app] = await authenticate(body['i']);
- } catch (e) {
+ authenticate(body['i']).then(([user, app]) => {
+ // API invoking
+ call(endpoint.name, user, app, body, (ctx.req as any).file).then(res => {
+ reply(res);
+ }).catch(e => {
+ reply(e.kind == 'client' ? 400 : 500, e);
+ });
+ }).catch(() => {
reply(403, new ApiError({
message: 'Authentication failed. Please ensure your token is correct.',
code: 'AUTHENTICATION_FAILED',
id: 'b0a7f5f8-dc2f-4171-b91f-de88ad238e14'
}));
- return;
- }
-
- let res;
-
- // API invoking
- try {
- res = await call(endpoint.name, user, app, body, (ctx.req as any).file);
- } catch (e) {
- if (e.kind == 'client') {
- reply(400, e);
- } else {
- reply(500, e);
- }
- return;
- }
-
- reply(res);
-};
+ });
+});