Files
asset-tracker/internal/api/requestid.go

26 lines
418 B
Go

package api
import (
"crypto/rand"
"encoding/hex"
"github.com/gin-gonic/gin"
)
func RequestID() gin.HandlerFunc {
return func(c *gin.Context) {
id := c.GetHeader("X-Request-Id")
if id == "" {
b := make([]byte, 8)
if _, err := rand.Read(b); err == nil {
id = hex.EncodeToString(b)
} else {
id = "req-unknown"
}
}
c.Set("request_id", id)
c.Header("X-Request-Id", id)
c.Next()
}
}