http-add-on/pkg/util/context.go

56 lines
1.3 KiB
Go

package util
import (
"context"
"net/url"
"github.com/go-logr/logr"
httpv1alpha1 "github.com/kedacore/http-add-on/operator/apis/http/v1alpha1"
)
type contextKey int
const (
ckLogger contextKey = iota
ckHTTPSO
ckStream
ckFailoverStream
)
func ContextWithLogger(ctx context.Context, logger logr.Logger) context.Context {
return context.WithValue(ctx, ckLogger, logger)
}
func LoggerFromContext(ctx context.Context) logr.Logger {
cv, _ := ctx.Value(ckLogger).(logr.Logger)
return cv
}
func ContextWithHTTPSO(ctx context.Context, httpso *httpv1alpha1.HTTPScaledObject) context.Context {
return context.WithValue(ctx, ckHTTPSO, httpso)
}
func HTTPSOFromContext(ctx context.Context) *httpv1alpha1.HTTPScaledObject {
cv, _ := ctx.Value(ckHTTPSO).(*httpv1alpha1.HTTPScaledObject)
return cv
}
func ContextWithStream(ctx context.Context, url *url.URL) context.Context {
return context.WithValue(ctx, ckStream, url)
}
func StreamFromContext(ctx context.Context) *url.URL {
cv, _ := ctx.Value(ckStream).(*url.URL)
return cv
}
func ContextWithFailoverStream(ctx context.Context, url *url.URL) context.Context {
return context.WithValue(ctx, ckFailoverStream, url)
}
func FailoverStreamFromContext(ctx context.Context) *url.URL {
cv, _ := ctx.Value(ckFailoverStream).(*url.URL)
return cv
}