package middlewares

import (
	"context"
	"net/http"
)

type RequestIdMiddleware struct{}

func NewRequestMiddleware() *RequestIdMiddleware {
	return &RequestIdMiddleware{}
}

func (m *RequestIdMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		ctx := r.Context()
		requestId := r.Header.Get("X-Request-Id")
		if requestId != "" {
			ctx = context.WithValue(ctx, "request_id", requestId)
		}
		next(w, r.WithContext(ctx))
	}
}
