package queryrangebase import ( "net/http" "github.com/grafana/dskit/tenant" "github.com/weaveworks/common/middleware" ) const ( // ResultsCacheGenNumberHeaderName holds name of the header we want to set in http response ResultsCacheGenNumberHeaderName = "Results-Cache-Gen-Number" ) func CacheGenNumberHeaderSetterMiddleware(cacheGenNumbersLoader CacheGenNumberLoader) middleware.Interface { return middleware.Func(func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { userIDs, err := tenant.TenantIDs(r.Context()) if err != nil { http.Error(w, err.Error(), http.StatusUnauthorized) return } cacheGenNumber := cacheGenNumbersLoader.GetResultsCacheGenNumber(userIDs) w.Header().Set(ResultsCacheGenNumberHeaderName, cacheGenNumber) next.ServeHTTP(w, r) }) }) }