@@ -1653,29 +1653,7 @@ func (api *API) tailnetRPCConn(rw http.ResponseWriter, r *http.Request) {
1653
1653
CoderDesktopVersion : nil ,
1654
1654
}
1655
1655
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 )
1679
1657
api .Telemetry .Report (& telemetry.Snapshot {
1680
1658
UserTailnetConnections : []telemetry.UserTailnetConnection {connectionTelemetryEvent },
1681
1659
})
@@ -1705,6 +1683,34 @@ func (api *API) tailnetRPCConn(rw http.ResponseWriter, r *http.Request) {
1705
1683
}
1706
1684
}
1707
1685
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
+
1708
1714
// createExternalAuthResponse creates an ExternalAuthResponse based on the
1709
1715
// provider type. This is to support legacy `/workspaceagents/me/gitauth`
1710
1716
// which uses `Username` and `Password`.
0 commit comments