Skip to content

Commit fd7a8a9

Browse files
zacscodingaldas
authored andcommitted
Adds RequestIDHandler function to RequestID middleware
1 parent f20820c commit fd7a8a9

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

middleware/request_id.go

+6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ type (
1414
// Generator defines a function to generate an ID.
1515
// Optional. Default value random.String(32).
1616
Generator func() string
17+
18+
// RequestIDHandler defines a function which is executed for a request id.
19+
RequestIDHandler func(echo.Context, string)
1720
}
1821
)
1922

@@ -53,6 +56,9 @@ func RequestIDWithConfig(config RequestIDConfig) echo.MiddlewareFunc {
5356
rid = config.Generator()
5457
}
5558
res.Header().Set(echo.HeaderXRequestID, rid)
59+
if config.RequestIDHandler != nil {
60+
config.RequestIDHandler(c, rid)
61+
}
5662

5763
return next(c)
5864
}

middleware/request_id_test.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,20 @@ func TestRequestID(t *testing.T) {
2323
h(c)
2424
assert.Len(t, rec.Header().Get(echo.HeaderXRequestID), 32)
2525

26-
// Custom generator
26+
// Custom generator and handler
27+
customID := "customGenerator"
28+
calledHandler := false
2729
rid = RequestIDWithConfig(RequestIDConfig{
28-
Generator: func() string { return "customGenerator" },
30+
Generator: func() string { return customID },
31+
RequestIDHandler: func(_ echo.Context, id string) {
32+
calledHandler = true
33+
assert.Equal(t, customID, id)
34+
},
2935
})
3036
h = rid(handler)
3137
h(c)
3238
assert.Equal(t, rec.Header().Get(echo.HeaderXRequestID), "customGenerator")
39+
assert.True(t, calledHandler)
3340
}
3441

3542
func TestRequestID_IDNotAltered(t *testing.T) {

0 commit comments

Comments
 (0)