Add call-id via middleware

Signed-off-by: Alex Ellis <alexellis2@gmail.com>
This commit is contained in:
Alex Ellis
2017-12-10 18:17:50 -08:00
parent e6eec64c0d
commit b1e92f6b93
3 changed files with 42 additions and 2 deletions

View File

@ -0,0 +1,24 @@
package handlers
import (
"fmt"
"net/http"
"time"
"github.com/docker/distribution/uuid"
)
// MakeCallIDMiddleware middleware tags a request with a uid
func MakeCallIDMiddleware(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
callID := uuid.Generate().String()
r.Header.Add("X-Call-Id", callID)
w.Header().Add("X-Call-Id", callID)
r.Header.Add("X-Start-Time", fmt.Sprintf("%d", start.UTC().UnixNano()))
w.Header().Add("X-Start-Time", fmt.Sprintf("%d", start.UTC().UnixNano()))
next(w, r)
}
}