fix: handles error in json input parsing in the management endpoints (#2634)

This commit is contained in:
Anshuman Pandey
2024-05-16 21:06:46 +05:30
committed by GitHub
parent b5287f7f01
commit 9849a96f32
8 changed files with 71 additions and 9 deletions

View File

@@ -48,8 +48,16 @@ export const PUT = async (
if (!actionClass) {
return responses.notFoundResponse("Action Class", params.actionClassId);
}
const actionCLassUpdate = await request.json();
const inputValidation = ZActionClassInput.safeParse(actionCLassUpdate);
let actionClassUpdate;
try {
actionClassUpdate = await request.json();
} catch (error) {
console.error(`Error parsing JSON: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const inputValidation = ZActionClassInput.safeParse(actionClassUpdate);
if (!inputValidation.success) {
return responses.badRequestResponse(
"Fields are missing or incorrectly formatted",

View File

@@ -24,7 +24,15 @@ export const POST = async (request: Request): Promise<Response> => {
try {
const authentication = await authenticateRequest(request);
if (!authentication) return responses.notAuthenticatedResponse();
const actionClassInput = await request.json();
let actionClassInput;
try {
actionClassInput = await request.json();
} catch (error) {
console.error(`Error parsing JSON input: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const inputValidation = ZActionClassInput.safeParse(actionClassInput);
if (!inputValidation.success) {

View File

@@ -73,7 +73,15 @@ export const PUT = async (
if (!attributeClass) {
return responses.notFoundResponse("Attribute Class", params.attributeClassId);
}
const attributeClassUpdate = await request.json();
let attributeClassUpdate;
try {
attributeClassUpdate = await request.json();
} catch (error) {
console.error(`Error parsing JSON input: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const inputValidation = ZAttributeClassUpdateInput.safeParse(attributeClassUpdate);
if (!inputValidation.success) {
return responses.badRequestResponse(

View File

@@ -24,7 +24,15 @@ export const POST = async (request: Request): Promise<Response> => {
try {
const authentication = await authenticateRequest(request);
if (!authentication) return responses.notAuthenticatedResponse();
const attributeClassInput = await request.json();
let attributeClassInput;
try {
attributeClassInput = await request.json();
} catch (error) {
console.error(`Error parsing JSON input: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const inputValidation = ZAttributeClassInput.safeParse(attributeClassInput);
if (!inputValidation.success) {

View File

@@ -72,7 +72,14 @@ export const PUT = async (
const authentication = await authenticateRequest(request);
if (!authentication) return responses.notAuthenticatedResponse();
await fetchAndValidateResponse(authentication, params.responseId);
const responseUpdate = await request.json();
let responseUpdate;
try {
responseUpdate = await request.json();
} catch (error) {
console.error(`Error parsing JSON: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const inputValidation = ZResponseUpdateInput.safeParse(responseUpdate);
if (!inputValidation.success) {
return responses.badRequestResponse(

View File

@@ -14,7 +14,16 @@ import { getSignedUrlForPublicFile } from "./lib/getSignedUrl";
// this api endpoint will return a signed url for uploading the file to s3 and another url for uploading file to the local storage
export const POST = async (req: NextRequest): Promise<Response> => {
const { fileName, fileType, environmentId, allowedFileExtensions } = await req.json();
let storageInput;
try {
storageInput = await req.json();
} catch (error) {
console.error(`Error parsing JSON input: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const { fileName, fileType, environmentId, allowedFileExtensions } = storageInput;
if (!fileName) {
return responses.badRequestResponse("fileName is required");

View File

@@ -62,7 +62,13 @@ export const PUT = async (
if (!survey) {
return responses.notFoundResponse("Survey", params.surveyId);
}
const surveyUpdate = await request.json();
let surveyUpdate;
try {
surveyUpdate = await request.json();
} catch (error) {
console.error(`Error parsing JSON input: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
const inputValidation = ZSurvey.safeParse({
...survey,
...surveyUpdate,

View File

@@ -30,7 +30,15 @@ export const POST = async (request: Request): Promise<Response> => {
try {
const authentication = await authenticateRequest(request);
if (!authentication) return responses.notAuthenticatedResponse();
let surveyInput = await request.json();
let surveyInput;
try {
surveyInput = await request.json();
} catch (error) {
console.error(`Error parsing JSON: ${error}`);
return responses.badRequestResponse("Malformed JSON input, please check your request body");
}
if (surveyInput?.questions && surveyInput.questions[0].headline) {
const questionHeadline = surveyInput.questions[0].headline;
if (typeof questionHeadline === "string") {