mirror of
https://github.com/SigNoz/signoz.git
synced 2026-04-28 22:50:32 +01:00
Some checks failed
build-staging / prepare (push) Has been cancelled
build-staging / js-build (push) Has been cancelled
build-staging / go-build (push) Has been cancelled
build-staging / staging (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
* feat(serviceaccount): integrate service account * feat(serviceaccount): integrate service account with better types * feat(serviceaccount): fix lint and testing changes * feat(serviceaccount): update integration tests * feat(serviceaccount): fix formatting * feat(serviceaccount): fix openapi spec * feat(serviceaccount): update txlock to immediate to avoid busy snapshot errors * feat(serviceaccount): add restrictions for factor_api_key * feat(serviceaccount): add restrictions for factor_api_key * feat: enabled service account and deprecated API Keys (#10715) * feat: enabled service account and deprecated API Keys * feat: deprecated API Keys * feat: service account spec updates and role management changes * feat: updated the error component for roles management * feat: updated test case * feat: updated the error component and added retries * feat: refactored code and added retry to happend 3 times total * feat: fixed feedbacks and added test case * feat: refactored code and removed retry * feat: updated the test cases --------- Co-authored-by: SagarRajput-7 <162284829+SagarRajput-7@users.noreply.github.com>
59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package implspanpercentile
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
errorsV2 "github.com/SigNoz/signoz/pkg/errors"
|
|
"github.com/SigNoz/signoz/pkg/http/render"
|
|
"github.com/SigNoz/signoz/pkg/modules/spanpercentile"
|
|
"github.com/SigNoz/signoz/pkg/types/authtypes"
|
|
"github.com/SigNoz/signoz/pkg/types/spanpercentiletypes"
|
|
"github.com/SigNoz/signoz/pkg/valuer"
|
|
)
|
|
|
|
type handler struct {
|
|
module spanpercentile.Module
|
|
}
|
|
|
|
func NewHandler(module spanpercentile.Module) spanpercentile.Handler {
|
|
return &handler{
|
|
module: module,
|
|
}
|
|
}
|
|
|
|
func (h *handler) GetSpanPercentileDetails(w http.ResponseWriter, r *http.Request) {
|
|
claims, err := authtypes.ClaimsFromContext(r.Context())
|
|
if err != nil {
|
|
render.Error(w, err)
|
|
return
|
|
}
|
|
|
|
spanPercentileRequest, err := parseSpanPercentileRequestBody(r)
|
|
if err != nil {
|
|
render.Error(w, err)
|
|
return
|
|
}
|
|
|
|
result, err := h.module.GetSpanPercentile(r.Context(), valuer.MustNewUUID(claims.OrgID), spanPercentileRequest)
|
|
if err != nil {
|
|
render.Error(w, err)
|
|
return
|
|
}
|
|
|
|
render.Success(w, http.StatusOK, result)
|
|
}
|
|
|
|
func parseSpanPercentileRequestBody(r *http.Request) (*spanpercentiletypes.SpanPercentileRequest, error) {
|
|
req := new(spanpercentiletypes.SpanPercentileRequest)
|
|
if err := json.NewDecoder(r.Body).Decode(req); err != nil {
|
|
return nil, errorsV2.Newf(errorsV2.TypeInvalidInput, errorsV2.CodeInvalidInput, "cannot parse the request body: %v", err)
|
|
}
|
|
|
|
if err := req.Validate(); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return req, nil
|
|
}
|