Skip to content

Commit 692e517

Browse files
committed
refactor filling out telemetry
1 parent 91f5fba commit 692e517

File tree

1 file changed

+29
-23
lines changed

1 file changed

+29
-23
lines changed

coderd/workspaceagents.go

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,29 +1653,7 @@ func (api *API) tailnetRPCConn(rw http.ResponseWriter, r *http.Request) {
16531653
CoderDesktopVersion: nil,
16541654
}
16551655

1656-
// Parse desktop telemetry from header if it exists
1657-
desktopTelemetryHeader := r.Header.Get(codersdk.CoderDesktopTelemetryHeader)
1658-
if desktopTelemetryHeader != "" {
1659-
var telemetryData codersdk.CoderDesktopTelemetry
1660-
if err := telemetryData.FromHeader(desktopTelemetryHeader); err == nil {
1661-
// Only set fields if they aren't empty
1662-
if telemetryData.DeviceID != "" {
1663-
connectionTelemetryEvent.DeviceID = &telemetryData.DeviceID
1664-
}
1665-
if telemetryData.DeviceOS != "" {
1666-
connectionTelemetryEvent.DeviceOS = &telemetryData.DeviceOS
1667-
}
1668-
if telemetryData.CoderDesktopVersion != "" {
1669-
connectionTelemetryEvent.CoderDesktopVersion = &telemetryData.CoderDesktopVersion
1670-
}
1671-
api.Logger.Debug(ctx, "received desktop telemetry",
1672-
slog.F("device_id", telemetryData.DeviceID),
1673-
slog.F("device_os", telemetryData.DeviceOS),
1674-
slog.F("desktop_version", telemetryData.CoderDesktopVersion))
1675-
} else {
1676-
api.Logger.Warn(ctx, "failed to parse desktop telemetry header", slog.Error(err))
1677-
}
1678-
}
1656+
fillCoderDesktopTelemetry(r, &connectionTelemetryEvent, api.Logger)
16791657
api.Telemetry.Report(&telemetry.Snapshot{
16801658
UserTailnetConnections: []telemetry.UserTailnetConnection{connectionTelemetryEvent},
16811659
})
@@ -1705,6 +1683,34 @@ func (api *API) tailnetRPCConn(rw http.ResponseWriter, r *http.Request) {
17051683
}
17061684
}
17071685

1686+
// fillCoderDesktopTelemetry fills out the provided event based on a Coder Desktop telemetry header on the request, if
1687+
// present.
1688+
func fillCoderDesktopTelemetry(r *http.Request, event *telemetry.UserTailnetConnection, logger slog.Logger) {
1689+
// Parse desktop telemetry from header if it exists
1690+
desktopTelemetryHeader := r.Header.Get(codersdk.CoderDesktopTelemetryHeader)
1691+
if desktopTelemetryHeader != "" {
1692+
var telemetryData codersdk.CoderDesktopTelemetry
1693+
if err := telemetryData.FromHeader(desktopTelemetryHeader); err == nil {
1694+
// Only set fields if they aren't empty
1695+
if telemetryData.DeviceID != "" {
1696+
event.DeviceID = &telemetryData.DeviceID
1697+
}
1698+
if telemetryData.DeviceOS != "" {
1699+
event.DeviceOS = &telemetryData.DeviceOS
1700+
}
1701+
if telemetryData.CoderDesktopVersion != "" {
1702+
event.CoderDesktopVersion = &telemetryData.CoderDesktopVersion
1703+
}
1704+
logger.Debug(r.Context(), "received desktop telemetry",
1705+
slog.F("device_id", telemetryData.DeviceID),
1706+
slog.F("device_os", telemetryData.DeviceOS),
1707+
slog.F("desktop_version", telemetryData.CoderDesktopVersion))
1708+
} else {
1709+
logger.Warn(r.Context(), "failed to parse desktop telemetry header", slog.Error(err))
1710+
}
1711+
}
1712+
}
1713+
17081714
// createExternalAuthResponse creates an ExternalAuthResponse based on the
17091715
// provider type. This is to support legacy `/workspaceagents/me/gitauth`
17101716
// which uses `Username` and `Password`.

0 commit comments

Comments
 (0)