43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package protocol
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/getsentry/sentry-go/internal/ratelimit"
|
|
)
|
|
|
|
type Metrics []TelemetryItem
|
|
|
|
func (ms Metrics) ToEnvelopeItem() (*EnvelopeItem, error) {
|
|
// Convert each metric to its JSON representation
|
|
items := make([]json.RawMessage, 0, len(ms))
|
|
for _, metric := range ms {
|
|
metricPayload, err := json.Marshal(metric)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
items = append(items, metricPayload)
|
|
}
|
|
|
|
if len(items) == 0 {
|
|
return nil, nil
|
|
}
|
|
|
|
wrapper := struct {
|
|
Items []json.RawMessage `json:"items"`
|
|
}{Items: items}
|
|
|
|
payload, err := json.Marshal(wrapper)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return NewTraceMetricItem(len(items), payload), nil
|
|
}
|
|
|
|
func (Metrics) GetCategory() ratelimit.Category { return ratelimit.CategoryTraceMetric }
|
|
func (Metrics) GetEventID() string { return "" }
|
|
func (Metrics) GetSdkInfo() *SdkInfo { return nil }
|
|
func (Metrics) GetDynamicSamplingContext() map[string]string { return nil }
|
|
func (Metrics) MakeSerializationSafe() {}
|