Feat: update the pr as per comment

This commit is contained in:
Manendra Pal Singh
2026-02-27 19:05:09 +05:30
parent 1293c241f7
commit 59aa058920
13 changed files with 159 additions and 178 deletions

View File

@@ -65,4 +65,3 @@ func newHandlerMetrics() (*HandlerMetrics, error) {
return m, nil
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"net/http"
"strings"
"sync"
"github.com/beckn-one/beckn-onix/pkg/telemetry"
@@ -79,10 +80,10 @@ func RecordHTTPRequest(ctx context.Context, statusCode int, action, role, sender
metric_code := action + "_api_total_count"
category := "NetworkHealth"
if action == "/search" || action == "/discovery" {
if strings.HasSuffix(action, "/search") || strings.HasSuffix(action, "/discovery") {
category = "Discovery"
}
attributes = append(attributes, specHttpMetricAttr(metric_code, category)...) //TODO: need to update as per the furthur discussion
attributes = append(attributes, specHttpMetricAttr(metric_code, category)...)
m.HttpRequestCount.Add(ctx, 1, metric.WithAttributes(attributes...))
}

View File

@@ -122,19 +122,7 @@ func (h *stdHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
record: nil,
}
selfID := h.SubscriberID
remoteID := ""
if v, ok := r.Context().Value(model.ContextKeyRemoteID).(string); ok {
remoteID = v
}
var senderID, receiverID string
if strings.Contains(h.moduleName, "Caller") {
senderID = selfID
receiverID = remoteID
} else {
senderID = remoteID
receiverID = selfID
}
senderID, receiverID := h.resolveDirection(r.Context())
httpMeter, _ := GetHTTPMetrics(r.Context())
if httpMeter != nil {
recordOnce = func() {
@@ -161,7 +149,7 @@ func (h *stdHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
body := stepCtx.Body
go telemetry.EmitAuditLogs(r.Context(), body, auditlog.Int("http.response.status_code", wrapped.statusCode), auditlog.String("http.response.error", errString(err)))
telemetry.EmitAuditLogs(r.Context(), body, auditlog.Int("http.response.status_code", wrapped.statusCode), auditlog.String("http.response.error", errString(err)))
span.End()
}()
@@ -385,21 +373,17 @@ func (h *stdHandler) initSteps(ctx context.Context, mgr PluginManager, cfg *Conf
return nil
}
func setBecknAttr(span trace.Span, r *http.Request, h *stdHandler) {
func (h *stdHandler) resolveDirection(ctx context.Context) (senderID, receiverID string) {
selfID := h.SubscriberID
remoteID := ""
if v, ok := r.Context().Value(model.ContextKeyRemoteID).(string); ok {
remoteID = v
}
var senderID, receiverID string
remoteID, _ := ctx.Value(model.ContextKeyRemoteID).(string)
if strings.Contains(h.moduleName, "Caller") {
senderID = selfID
receiverID = remoteID
} else {
senderID = remoteID
receiverID = selfID
return selfID, remoteID
}
return remoteID, selfID
}
func setBecknAttr(span trace.Span, r *http.Request, h *stdHandler) {
senderID, receiverID := h.resolveDirection(r.Context())
attrs := []attribute.KeyValue{
telemetry.AttrRecipientID.String(receiverID),
telemetry.AttrSenderID.String(senderID),

View File

@@ -41,28 +41,25 @@ func (s *signStep) Run(ctx *model.StepContext) error {
return model.NewBadReqErr(fmt.Errorf("subscriberID not set"))
}
tracer := otel.Tracer("beckn-onix")
tracer := otel.Tracer(telemetry.ScopeName, trace.WithInstrumentationVersion(telemetry.ScopeVersion))
var keySet *model.Keyset
{
// to create span to finding the key set
keySetCtx, keySetSpan := tracer.Start(ctx.Context, "keyset")
defer keySetSpan.End()
ks, err := s.km.Keyset(keySetCtx, ctx.SubID)
keySetSpan.End()
if err != nil {
return fmt.Errorf("failed to get signing key: %w", err)
}
keySet = ks
}
{
// to create span for the signa
signerCtx, signerSpan := tracer.Start(ctx.Context, "sign")
defer signerSpan.End()
createdAt := time.Now().Unix()
validTill := time.Now().Add(5 * time.Minute).Unix()
sign, err := s.signer.Sign(signerCtx, ctx.Body, keySet.SigningPrivate, createdAt, validTill)
signerSpan.End()
if err != nil {
return fmt.Errorf("failed to sign request: %w", err)
}
@@ -73,7 +70,6 @@ func (s *signStep) Run(ctx *model.StepContext) error {
header = model.AuthHeaderGateway
}
ctx.Request.Header.Set(header, authHeader)
}
return nil