mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
26 lines
671 B
Go
26 lines
671 B
Go
|
|
package capabilities
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"net/http"
|
||
|
|
|
||
|
|
"github.com/fleetdm/fleet/v4/server/fleet"
|
||
|
|
)
|
||
|
|
|
||
|
|
type key int
|
||
|
|
|
||
|
|
const capabilitiesKey key = 0
|
||
|
|
|
||
|
|
// NewContext creates a new context with the given capabilities.
|
||
|
|
func NewContext(ctx context.Context, r *http.Request) context.Context {
|
||
|
|
capabilities := fleet.CapabilityMap{}
|
||
|
|
capabilities.PopulateFromString(r.Header.Get(fleet.CapabilitiesHeader))
|
||
|
|
return context.WithValue(ctx, capabilitiesKey, capabilities)
|
||
|
|
}
|
||
|
|
|
||
|
|
// FromContext returns the capabilities in the request if present.
|
||
|
|
func FromContext(ctx context.Context) (fleet.CapabilityMap, bool) {
|
||
|
|
v, ok := ctx.Value(capabilitiesKey).(fleet.CapabilityMap)
|
||
|
|
return v, ok
|
||
|
|
}
|