Files
signoz/pkg/flagger/handler.go

54 lines
1.0 KiB
Go

package flagger
import (
"context"
"net/http"
"time"
"github.com/SigNoz/signoz/pkg/http/render"
"github.com/SigNoz/signoz/pkg/types/authtypes"
"github.com/SigNoz/signoz/pkg/types/featuretypes"
"github.com/SigNoz/signoz/pkg/valuer"
)
type Handler interface {
GetFeatures(http.ResponseWriter, *http.Request)
}
type handler struct {
flagger Flagger
}
func NewHandler(flagger Flagger) Handler {
return &handler{
flagger: flagger,
}
}
func (handler *handler) GetFeatures(rw http.ResponseWriter, r *http.Request) {
ctx, cancel := context.WithTimeout(r.Context(), 10*time.Second)
defer cancel()
claims, err := authtypes.ClaimsFromContext(ctx)
if err != nil {
render.Error(rw, err)
return
}
orgID, err := valuer.NewUUID(claims.OrgID)
if err != nil {
render.Error(rw, err)
return
}
evalCtx := featuretypes.NewFlaggerEvaluationContext(orgID)
features, err := handler.flagger.List(ctx, evalCtx)
if err != nil {
render.Error(rw, err)
return
}
render.Success(rw, http.StatusOK, features)
}