@@ -2,7 +2,11 @@ import { createRouter, Response } from "fets";
2
2
import { App } from "uWebSockets.js" ;
3
3
import { isAddress } from "viem" ;
4
4
import { sendWebhook } from "./send-webhook.mjs" ;
5
- import { registry } from "./prometheus.mjs" ;
5
+ import {
6
+ invalidHttpRequests ,
7
+ registry ,
8
+ successfulHttpRequests ,
9
+ } from "./prometheus.mjs" ;
6
10
7
11
// Creating a new router
8
12
const router = createRouter ( {
@@ -59,36 +63,50 @@ const router = createRouter({
59
63
} ,
60
64
} ,
61
65
async handler ( req ) {
66
+ const json = await req . json ( ) . catch ( ( ) => null ) ;
67
+
68
+ if ( ! json ) {
69
+ invalidHttpRequests . inc ( ) ;
70
+ return Response . json (
71
+ { message : "Invalid JSON payload" } ,
72
+ { status : 400 } ,
73
+ ) ;
74
+ }
75
+
62
76
// Extracting the appId and startBlock from the request
63
- const { appId, startBlock, contractAddress, substreamsToken } =
64
- await req . json ( ) ;
77
+ const { appId, startBlock, contractAddress, substreamsToken } = json ;
65
78
66
79
if ( ! appId ) {
80
+ invalidHttpRequests . inc ( ) ;
67
81
return Response . json ( { message : "appId is required" } , { status : 400 } ) ;
68
82
}
69
83
70
84
if ( startBlock == null ) {
85
+ invalidHttpRequests . inc ( ) ;
71
86
return Response . json (
72
87
{ message : "startBlock is required" } ,
73
88
{ status : 400 } ,
74
89
) ;
75
90
}
76
91
77
92
if ( ! contractAddress ) {
93
+ invalidHttpRequests . inc ( ) ;
78
94
return Response . json (
79
95
{ message : "contractAddress is required" } ,
80
96
{ status : 400 } ,
81
97
) ;
82
98
}
83
99
84
100
if ( ! substreamsToken ) {
101
+ invalidHttpRequests . inc ( ) ;
85
102
return Response . json (
86
103
{ message : "substreamsToken is required" } ,
87
104
{ status : 400 } ,
88
105
) ;
89
106
}
90
107
91
108
if ( ! isAddress ( contractAddress ) ) {
109
+ invalidHttpRequests . inc ( ) ;
92
110
return Response . json (
93
111
{ message : "contractAddress is invalid" } ,
94
112
{ status : 400 } ,
@@ -105,6 +123,8 @@ const router = createRouter({
105
123
} ) ,
106
124
] ) ;
107
125
126
+ successfulHttpRequests . inc ( ) ;
127
+
108
128
// If the status code is not specified, it defaults to 200
109
129
return Response . json ( {
110
130
message : "Webhook registered" ,
0 commit comments