package filters

import (
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
	"net/http"
)

const (
	UsernameHeader = "X-API-Username"
	UsernameKey    = "username"
)

func WithAPIUsername(handler http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
		// no real logic here, just add the username to context
		username, _ := req.Header[UsernameHeader]
		req.Header.Del(UsernameHeader)
		req = req.WithContext(genericapirequest.WithValue(req.Context(), UsernameKey, username))
		handler.ServeHTTP(w, req)
	})
}

func AddAPIUsernameHeader(req *http.Request, username string) {
	req.Header.Set(UsernameHeader, username)
}
