refactor: ♻️ split up webhook response
This commit is contained in:
parent
e4ac0e7827
commit
d2a9686937
3 changed files with 24 additions and 28 deletions
|
@ -2,35 +2,41 @@ import { NextApiResponse } from "next";
|
|||
|
||||
import { createLogger, Logger } from "../../lib/logger";
|
||||
|
||||
class WebhookErrorResolver {
|
||||
private logger: Logger;
|
||||
constructor() {
|
||||
this.logger = createLogger({ event: "WebhookErrorResolver" });
|
||||
}
|
||||
|
||||
private resolveError(error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
this.logger.error(error.stack, "Unexpected error caught:");
|
||||
return error.message;
|
||||
}
|
||||
return "Internal server error";
|
||||
}
|
||||
|
||||
resolve(error: unknown) {
|
||||
return this.resolveError(error);
|
||||
}
|
||||
}
|
||||
|
||||
export class WebhookResponse {
|
||||
private logger: Logger;
|
||||
constructor(private res: NextApiResponse) {
|
||||
this.logger = createLogger({ event: "WebhookResponse" });
|
||||
}
|
||||
|
||||
private returnSuccess(data?: unknown) {
|
||||
this.logger.debug({ data }, "Responding to Saleor with data:");
|
||||
return this.res.status(200).json(data ?? {});
|
||||
}
|
||||
error(error: unknown) {
|
||||
const errorResolver = new WebhookErrorResolver();
|
||||
const errorMessage = errorResolver.resolve(error);
|
||||
|
||||
private returnError(errorMessage: string) {
|
||||
this.logger.debug({ errorMessage }, "Responding to Saleor with error:");
|
||||
|
||||
return this.res.status(500).json({ error: errorMessage });
|
||||
}
|
||||
|
||||
private resolveError(error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
this.logger.error(error.stack, "Unexpected error caught:");
|
||||
return this.returnError(error.message);
|
||||
}
|
||||
return this.returnError("Internal server error");
|
||||
}
|
||||
|
||||
error(error: unknown) {
|
||||
return this.resolveError(error);
|
||||
}
|
||||
|
||||
success(data?: unknown) {
|
||||
return this.returnSuccess(data);
|
||||
return this.res.status(200).json(data ?? {});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,12 +46,7 @@ export default checkoutCalculateTaxesSyncWebhook.createHandler(async (req, res,
|
|||
try {
|
||||
verifyCalculateTaxesPayload(payload);
|
||||
logger.debug("Payload validated succesfully");
|
||||
} catch (error) {
|
||||
logger.debug("Payload validation failed");
|
||||
return webhookResponse.error(error);
|
||||
}
|
||||
|
||||
try {
|
||||
const appMetadata = payload.recipient?.privateMetadata ?? [];
|
||||
const channelSlug = payload.taxBase.channel.slug;
|
||||
const activeConnectionService = getActiveConnectionService(
|
||||
|
|
|
@ -46,12 +46,7 @@ export default orderCalculateTaxesSyncWebhook.createHandler(async (req, res, ctx
|
|||
try {
|
||||
verifyCalculateTaxesPayload(payload);
|
||||
logger.debug("Payload validated succesfully");
|
||||
} catch (error) {
|
||||
logger.debug("Payload validation failed");
|
||||
return webhookResponse.error(error);
|
||||
}
|
||||
|
||||
try {
|
||||
const appMetadata = payload.recipient?.privateMetadata ?? [];
|
||||
const channelSlug = payload.taxBase.channel.slug;
|
||||
const activeConnectionService = getActiveConnectionService(
|
||||
|
|
Loading…
Reference in a new issue