package tracing

import (
	"context"
	"net/http"

	"go.opentelemetry.io/otel/codes"
	"go.opentelemetry.io/otel/trace"
)

// RecordHTTPServerError records a non-panic handler error on the active server span.
func RecordHTTPServerError(ctx context.Context, err error, status int) {
	if ctx == nil || err == nil || status < http.StatusInternalServerError {
		return
	}
	span := trace.SpanFromContext(ctx)
	if !span.SpanContext().IsValid() {
		return
	}
	span.RecordError(err)
	span.SetStatus(codes.Error, http.StatusText(status))
}
