summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2022-02-06 16:01:54 +0900
committerGitHub <noreply@github.com>2022-02-06 16:01:54 +0900
commitc0ef868ad257cd88d222aa70e2093c716a9b42b8 (patch)
tree4c1ce34c270bc07723343061d7398851463b6e8c /packages/backend/src/server/api
parentfix: v-sizeディレクティブの動作を修正 (#8249) (diff)
downloadsharkey-c0ef868ad257cd88d222aa70e2093c716a9b42b8.tar.gz
sharkey-c0ef868ad257cd88d222aa70e2093c716a9b42b8.tar.bz2
sharkey-c0ef868ad257cd88d222aa70e2093c716a9b42b8.zip
Fix cast (#8257)
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/call.ts16
1 files changed, 13 insertions, 3 deletions
diff --git a/packages/backend/src/server/api/call.ts b/packages/backend/src/server/api/call.ts
index ea9ab3ccba..18143340ae 100644
--- a/packages/backend/src/server/api/call.ts
+++ b/packages/backend/src/server/api/call.ts
@@ -79,11 +79,21 @@ export default async (endpoint: string, user: User | null | undefined, token: Ac
// Cast non JSON input
if (ep.meta.requireFile && ep.meta.params) {
- const body = (ctx!.request as any).body;
for (const k of Object.keys(ep.meta.params)) {
const param = ep.meta.params[k];
- if (['Boolean', 'Number'].includes(param.validator.name) && typeof body[k] === 'string') {
- body[k] = JSON.parse(body[k]);
+ if (['Boolean', 'Number'].includes(param.validator.name) && typeof data[k] === 'string') {
+ try {
+ data[k] = JSON.parse(data[k]);
+ } catch (e) {
+ throw new ApiError({
+ message: 'Invalid param.',
+ code: 'INVALID_PARAM',
+ id: '0b5f1631-7c1a-41a6-b399-cce335f34d85',
+ }, {
+ param: k,
+ reason: `cannot cast to ${param.validator.name}`,
+ })
+ }
}
}
}