summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/api-handler.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-06-25 18:26:31 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-06-25 18:26:31 +0900
commit58e83f8e4f634bfd95a3afc847a875413120c301 (patch)
tree9882477cac227f59c904900b0271ac1bc4e6f517 /packages/backend/src/server/api/api-handler.ts
parentrefactor(client): extract tooltip logic of chart (diff)
downloadsharkey-58e83f8e4f634bfd95a3afc847a875413120c301.tar.gz
sharkey-58e83f8e4f634bfd95a3afc847a875413120c301.tar.bz2
sharkey-58e83f8e4f634bfd95a3afc847a875413120c301.zip
feat: allow GET for some endpoints
Resolve #8263
Diffstat (limited to 'packages/backend/src/server/api/api-handler.ts')
-rw-r--r--packages/backend/src/server/api/api-handler.ts9
1 files changed, 8 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/api-handler.ts b/packages/backend/src/server/api/api-handler.ts
index f97c3dd397..d2d16597e1 100644
--- a/packages/backend/src/server/api/api-handler.ts
+++ b/packages/backend/src/server/api/api-handler.ts
@@ -6,7 +6,11 @@ import call from './call.js';
import { ApiError } from './error.js';
export default (endpoint: IEndpoint, ctx: Koa.Context) => new Promise<void>((res) => {
- const body = ctx.request.body;
+ const body = ctx.is('multipart/form-data')
+ ? (ctx.req as any).body
+ : ctx.method === 'GET'
+ ? ctx.query
+ : ctx.request.body;
const reply = (x?: any, y?: ApiError) => {
if (x == null) {
@@ -33,6 +37,9 @@ export default (endpoint: IEndpoint, ctx: Koa.Context) => new Promise<void>((res
authenticate(body['i']).then(([user, app]) => {
// API invoking
call(endpoint.name, user, app, body, ctx).then((res: any) => {
+ if (ctx.method === 'GET' && endpoint.meta.cacheSec && !body['i'] && !user) {
+ ctx.set('Cache-Control', `public, max-age=${endpoint.meta.cacheSec}`);
+ }
reply(res);
}).catch((e: ApiError) => {
reply(e.httpStatusCode ? e.httpStatusCode : e.kind === 'client' ? 400 : 500, e);