MCPcopy Index your code
hub / github.com/cli/cli / runSendTelemetry

Function runSendTelemetry

pkg/cmd/send-telemetry/send_telemetry.go:76–110  ·  view source on GitHub ↗
(ctx context.Context, opts *SendTelemetryOptions)

Source from the content-addressed store, hash-verified

74}
75
76func runSendTelemetry(ctx context.Context, opts *SendTelemetryOptions) error {
77 httpClient := &http.Client{
78 Timeout: 2 * time.Second,
79 Transport: &userAgentTransport{
80 base: handleUnixDomainSocket(opts.HTTPUnixSocket),
81 userAgent: fmt.Sprintf("GitHub CLI %s", build.Version),
82 },
83 }
84
85 client := observability.NewTelemetryAPIProtobufClient(opts.TelemetryEndpointURL, httpClient)
86
87 var payload telemetry.SendTelemetryPayload
88 if err := json.Unmarshal([]byte(opts.PayloadJSON), &payload); err != nil {
89 return fmt.Errorf("parsing payload JSON: %w", err)
90 }
91
92 if len(payload.Events) == 0 {
93 return nil
94 }
95
96 events := make([]*observability.TelemetryEvent, len(payload.Events))
97 for i, event := range payload.Events {
98 events[i] = &observability.TelemetryEvent{
99 App: "github-cli",
100 EventType: event.Type,
101 Dimensions: event.Dimensions,
102 Measures: event.Measures,
103 }
104 }
105
106 _, err := client.RecordEvents(ctx, &observability.RecordEventsRequest{
107 Events: events,
108 })
109 return err
110}
111
112type userAgentTransport struct {
113 base http.RoundTripper

Callers 4

newCmdSendTelemetryFunction · 0.85
TestRunSendTelemetryFunction · 0.85

Calls 4

handleUnixDomainSocketFunction · 0.85
ErrorfMethod · 0.65
RecordEventsMethod · 0.65

Tested by 3

TestRunSendTelemetryFunction · 0.68