mirror of
https://iceshrimp.dev/iceshrimp/iceshrimp
synced 2024-12-12 05:38:10 +09:00
Refactor
This commit is contained in:
parent
ae90705492
commit
9ac255699f
@ -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);
|
||||
};
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user