Skip to content

Commit 950b252

Browse files
Merge pull request #151 from basecamp/request-start-format
Use `t=<ms>` format for `X-Request-Start` header
2 parents 1ce6d9a + b8662ef commit 950b252

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

internal/server/request_start_middleware.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package server
22

33
import (
4+
"fmt"
45
"net/http"
5-
"strconv"
66
"time"
77
)
88

@@ -22,7 +22,7 @@ func WithRequestStartMiddleware(next http.Handler) http.Handler {
2222

2323
func (h *RequestStartMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request) {
2424
if r.Header.Get(requestStartHeader) == "" {
25-
r.Header.Set(requestStartHeader, strconv.FormatInt(time.Now().UnixMilli(), 10))
25+
r.Header.Set(requestStartHeader, fmt.Sprintf("t=%d", time.Now().UnixMilli()))
2626
}
2727
h.next.ServeHTTP(w, r)
2828
}

internal/server/request_start_middleware_test.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import (
1212

1313
func TestRequestStartMiddleware_AddsUnixMilliWhenNotPresent(t *testing.T) {
1414
handler := WithRequestStartMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
15-
requestStartMilli, _ := strconv.ParseInt(r.Header.Get("X-Request-Start"), 10, 64)
16-
requestStart := time.UnixMilli(requestStartMilli)
15+
headerValue := r.Header.Get("X-Request-Start")
16+
17+
assert.Regexp(t, `^t=\d+$`, headerValue, "Value should be formatted as `t=<timestamp>`")
1718

19+
requestStartMilli, _ := strconv.ParseInt(headerValue[2:], 10, 64)
20+
requestStart := time.UnixMilli(requestStartMilli)
1821
assert.WithinDuration(t, time.Now(), requestStart, time.Second)
1922
}))
2023

@@ -27,11 +30,11 @@ func TestRequestStartMiddleware_AddsUnixMilliWhenNotPresent(t *testing.T) {
2730

2831
func TestRequestStartMiddleware_PreservesExistingHeaderWhenPresent(t *testing.T) {
2932
handler := WithRequestStartMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
30-
assert.Equal(t, "1234", r.Header.Get("X-Request-Start"))
33+
assert.Equal(t, "t=1234", r.Header.Get("X-Request-Start"))
3134
}))
3235

3336
r := httptest.NewRequest("GET", "/", nil)
34-
r.Header.Set(requestStartHeader, "1234")
37+
r.Header.Set(requestStartHeader, "t=1234")
3538

3639
w := httptest.NewRecorder()
3740
handler.ServeHTTP(w, r)

0 commit comments

Comments
 (0)