diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2022-02-06 16:01:54 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-06 16:01:54 +0900 |
| commit | c0ef868ad257cd88d222aa70e2093c716a9b42b8 (patch) | |
| tree | 4c1ce34c270bc07723343061d7398851463b6e8c /packages/backend/src/server/api | |
| parent | fix: v-sizeディレクティブの動作を修正 (#8249) (diff) | |
| download | sharkey-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.ts | 16 |
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}`, + }) + } } } } |