@@ -44,14 +44,11 @@ async function filterAlreadyDeliveredWebhook(req: Request) {
4444}
4545
4646/**
47- * Filters for requests and sends back corresponding error.
48- * @param req The incoming request.
47+ * Filters for requests and, if required sends corresponding error.
4948 * @param secret The Webhook secret.
50- * @returns Status code and error message.
5149 */
52- function filterHook ( secret : string ) : ( req : Request , res : Response , next : NextFunction ) => void {
53- return ( req : Request , res : Response , next : NextFunction ) => {
54- // TODO: Check for duplicate delivery ID
50+ function filterHook ( secret : string ) : ( req : Request , res : Response , next : NextFunction ) => Promise < void > {
51+ return async ( req : Request , res : Response , next : NextFunction ) => {
5552 let filter ;
5653 if ( ! req . is ( "application/json" ) ) {
5754 filter = { code : 400 , msg : "Content-Type is not application/json" } ;
@@ -65,6 +62,9 @@ function filterHook(secret: string): (req: Request, res: Response, next: NextFun
6562 if ( req . headers [ "x-secret" ] !== secret ) {
6663 filter = { code : 412 , msg : "X-Secret header incorrect" } ;
6764 }
65+ if ( await filterAlreadyDeliveredWebhook ( req ) ) {
66+ filter = { code : 200 , msg : "Webhook already delivered" } ;
67+ }
6868
6969 if ( filter ) {
7070 Logger . log ( `Webhook filtered: ${ filter } ` ) ;
0 commit comments