replace failureRetry/failureNoRetry webhook response with failure (#462)
* refactor: ♻️ replace failureRetry/failureNoRetry webhook response with failure * build: 👷 add changeset * refactor: ♻️ address feedback
This commit is contained in:
parent
842b7b9cdb
commit
72adeb3b13
6 changed files with 21 additions and 21 deletions
5
.changeset/hot-numbers-hide.md
Normal file
5
.changeset/hot-numbers-hide.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
"saleor-app-taxes": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Changed behavior of failed webhooks. The app will now return status 500 if the operation failed. Previously, it returned status 200 with an error message in the response body.
|
|
@ -13,14 +13,9 @@ export class WebhookResponse {
|
||||||
this.logger = createLogger({ event: "WebhookResponse" });
|
this.logger = createLogger({ event: "WebhookResponse" });
|
||||||
}
|
}
|
||||||
|
|
||||||
failureNoRetry(error: string) {
|
failure(error: string) {
|
||||||
this.logger.debug({ error }, "failureNoRetry called with:");
|
this.logger.debug({ error }, "failure called with:");
|
||||||
return this.res.status(200).json({ success: false, error });
|
return this.res.status(500).json({ error });
|
||||||
}
|
|
||||||
|
|
||||||
failureRetry(error: string) {
|
|
||||||
this.logger.error({ error }, "failureRetry called with:");
|
|
||||||
return this.res.status(500).json({ success: false, error });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
success(data?: any) {
|
success(data?: any) {
|
||||||
|
|
|
@ -48,7 +48,7 @@ export default checkoutCalculateTaxesSyncWebhook.createHandler(async (req, res,
|
||||||
logger.info("Payload validated succesfully");
|
logger.info("Payload validated succesfully");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.info("Returning no data");
|
logger.info("Returning no data");
|
||||||
return webhookResponse.failureNoRetry("Payload is invalid");
|
return webhookResponse.failure("Payload is invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -58,7 +58,7 @@ export default checkoutCalculateTaxesSyncWebhook.createHandler(async (req, res,
|
||||||
|
|
||||||
if (!activeTaxProvider.ok) {
|
if (!activeTaxProvider.ok) {
|
||||||
logger.info("Returning no data");
|
logger.info("Returning no data");
|
||||||
return webhookResponse.failureNoRetry(activeTaxProvider.error);
|
return webhookResponse.failure(activeTaxProvider.error);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
||||||
|
@ -69,6 +69,6 @@ export default checkoutCalculateTaxesSyncWebhook.createHandler(async (req, res,
|
||||||
return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
|
return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error({ error });
|
logger.error({ error });
|
||||||
return webhookResponse.failureRetry("Error while calculating taxes");
|
return webhookResponse.failure("Error while calculating taxes");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -48,7 +48,7 @@ export default orderCalculateTaxesSyncWebhook.createHandler(async (req, res, ctx
|
||||||
logger.info("Payload validated succesfully");
|
logger.info("Payload validated succesfully");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.info("Returning no data");
|
logger.info("Returning no data");
|
||||||
return webhookResponse.failureNoRetry("Payload is invalid");
|
return webhookResponse.failure("Payload is invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -58,7 +58,7 @@ export default orderCalculateTaxesSyncWebhook.createHandler(async (req, res, ctx
|
||||||
|
|
||||||
if (!activeTaxProvider.ok) {
|
if (!activeTaxProvider.ok) {
|
||||||
logger.info("Returning no data");
|
logger.info("Returning no data");
|
||||||
return webhookResponse.failureNoRetry(activeTaxProvider.error);
|
return webhookResponse.failure(activeTaxProvider.error);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
||||||
|
@ -69,6 +69,6 @@ export default orderCalculateTaxesSyncWebhook.createHandler(async (req, res, ctx
|
||||||
return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
|
return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error({ error });
|
logger.error({ error });
|
||||||
return webhookResponse.failureRetry("Error while calculating taxes");
|
return webhookResponse.failure("Error while calculating taxes");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -78,7 +78,7 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => {
|
||||||
|
|
||||||
if (!activeTaxProvider.ok) {
|
if (!activeTaxProvider.ok) {
|
||||||
logger.info("Returning no data");
|
logger.info("Returning no data");
|
||||||
return webhookResponse.failureNoRetry(activeTaxProvider.error);
|
return webhookResponse.failure(activeTaxProvider.error);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
||||||
|
@ -86,11 +86,11 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => {
|
||||||
|
|
||||||
// todo: figure out what fields are needed and add validation
|
// todo: figure out what fields are needed and add validation
|
||||||
if (!payload.order) {
|
if (!payload.order) {
|
||||||
return webhookResponse.failureNoRetry("Insufficient order data");
|
return webhookResponse.failure("Insufficient order data");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (payload.order.status === OrderStatus.Fulfilled) {
|
if (payload.order.status === OrderStatus.Fulfilled) {
|
||||||
return webhookResponse.failureNoRetry("Skipping fulfilled order to prevent duplication");
|
return webhookResponse.failure("Skipping fulfilled order to prevent duplication");
|
||||||
}
|
}
|
||||||
|
|
||||||
const createdOrder = await taxProvider.createOrder(payload.order);
|
const createdOrder = await taxProvider.createOrder(payload.order);
|
||||||
|
@ -104,6 +104,6 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => {
|
||||||
return webhookResponse.success();
|
return webhookResponse.success();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error({ error });
|
logger.error({ error });
|
||||||
return webhookResponse.failureRetry("Error while creating order in tax provider");
|
return webhookResponse.failure("Error while creating order in tax provider");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -40,7 +40,7 @@ export default orderFulfilledAsyncWebhook.createHandler(async (req, res, ctx) =>
|
||||||
|
|
||||||
if (!activeTaxProvider.ok) {
|
if (!activeTaxProvider.ok) {
|
||||||
logger.info("Returning no data");
|
logger.info("Returning no data");
|
||||||
return webhookResponse.failureNoRetry(activeTaxProvider.error);
|
return webhookResponse.failure(activeTaxProvider.error);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
logger.info({ activeTaxProvider }, "Fetched activeTaxProvider");
|
||||||
|
@ -48,7 +48,7 @@ export default orderFulfilledAsyncWebhook.createHandler(async (req, res, ctx) =>
|
||||||
|
|
||||||
// todo: figure out what fields are needed and add validation
|
// todo: figure out what fields are needed and add validation
|
||||||
if (!payload.order) {
|
if (!payload.order) {
|
||||||
return webhookResponse.failureNoRetry("Insufficient order data");
|
return webhookResponse.failure("Insufficient order data");
|
||||||
}
|
}
|
||||||
const fulfilledOrder = await taxProvider.fulfillOrder(payload.order);
|
const fulfilledOrder = await taxProvider.fulfillOrder(payload.order);
|
||||||
|
|
||||||
|
@ -56,6 +56,6 @@ export default orderFulfilledAsyncWebhook.createHandler(async (req, res, ctx) =>
|
||||||
|
|
||||||
return webhookResponse.success();
|
return webhookResponse.success();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return webhookResponse.failureRetry("Error while fulfilling tax provider order");
|
return webhookResponse.failure("Error while fulfilling tax provider order");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue