2022-08-25 10:52:19 +00:00
|
|
|
import { Middleware } from "retes";
|
|
|
|
import { Response } from "retes/response";
|
|
|
|
|
|
|
|
import { getSaleorHeaders } from "../headers";
|
2022-09-01 13:17:48 +00:00
|
|
|
import { createMiddlewareDebug } from "./middleware-debug";
|
|
|
|
|
|
|
|
const debug = createMiddlewareDebug("withSaleorEventMatch");
|
2022-08-25 10:52:19 +00:00
|
|
|
|
|
|
|
export const withSaleorEventMatch =
|
|
|
|
<E extends string>(expectedEvent: `${Lowercase<E>}`): Middleware =>
|
|
|
|
(handler) =>
|
|
|
|
async (request) => {
|
|
|
|
const { event } = getSaleorHeaders(request.headers);
|
|
|
|
|
2022-09-01 13:17:48 +00:00
|
|
|
debug("Middleware called with even header: \"%s\"", event);
|
|
|
|
|
2022-08-25 10:52:19 +00:00
|
|
|
if (event !== expectedEvent) {
|
2022-09-01 13:17:48 +00:00
|
|
|
debug(
|
|
|
|
"Event from header (%s) doesnt match expected (%s). Will respond with Bad Request",
|
|
|
|
event,
|
|
|
|
expectedEvent
|
|
|
|
);
|
|
|
|
|
2022-08-25 10:52:19 +00:00
|
|
|
return Response.BadRequest({
|
|
|
|
success: false,
|
|
|
|
message: `Invalid Saleor event. Expecting ${expectedEvent}.`,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return handler(request);
|
|
|
|
};
|