Skip to content

Commit 8fa5e27

Browse files
authored
Add telemetry for enterprise version (#8768)
* Add telemetry for enterprise version * CCR feedback
1 parent 901d6d0 commit 8fa5e27

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

src/authentication/githubServer.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,19 @@ import * as vscode from 'vscode';
88
import { HostHelper } from './configuration';
99
import { GitHubServerType } from '../common/authentication';
1010
import Logger from '../common/logger';
11+
import { ITelemetry } from '../common/telemetry';
1112
import { agent } from '../env/node/net';
1213
import { getEnterpriseUri } from '../github/utils';
1314

1415
export class GitHubManager {
1516
private static readonly _githubDotComServers = new Set<string>().add('github.com').add('ssh.github.com');
1617
private static readonly _gheServers = new Set<string>().add('ghe.com');
1718
private static readonly _neverGitHubServers = new Set<string>().add('bitbucket.org').add('gitlab.com').add('codeberg.org');
19+
private static readonly _reportedEnterpriseVersions = new Set<string>();
1820
private _knownServers: Map<string, GitHubServerType> = new Map([...Array.from(GitHubManager._githubDotComServers.keys()).map(key => [key, GitHubServerType.GitHubDotCom]), ...Array.from(GitHubManager._gheServers.keys()).map(key => [key, GitHubServerType.Enterprise])] as [string, GitHubServerType][]);
1921

22+
constructor(private readonly _telemetry?: ITelemetry) { }
23+
2024
public static isGithubDotCom(host: string): boolean {
2125
return this._githubDotComServers.has(host);
2226
}
@@ -25,6 +29,20 @@ export class GitHubManager {
2529
return this._neverGitHubServers.has(host);
2630
}
2731

32+
private reportEnterpriseVersion(version: string): void {
33+
if (GitHubManager._reportedEnterpriseVersions.has(version)) {
34+
return;
35+
}
36+
GitHubManager._reportedEnterpriseVersions.add(version);
37+
Logger.appendLine(`GitHub Enterprise version: ${version}`, 'GitHubServer');
38+
/* __GDPR__
39+
"github.enterprise.version" : {
40+
"version" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
41+
}
42+
*/
43+
this._telemetry?.sendTelemetryEvent('github.enterprise.version', { version });
44+
}
45+
2846
public async isGitHub(host: vscode.Uri): Promise<GitHubServerType> {
2947
if (host === null) {
3048
return GitHubServerType.None;
@@ -63,6 +81,9 @@ export class GitHubManager {
6381
Logger.debug(`All headers: ${otherGitHubHeaders.join(', ')}`, 'GitHubServer');
6482
const gitHubHeader = response.headers.get('x-github-request-id');
6583
const gitHubEnterpriseHeader = response.headers.get('x-github-enterprise-version');
84+
if (gitHubEnterpriseHeader) {
85+
this.reportEnterpriseVersion(gitHubEnterpriseHeader);
86+
}
6687
if (!gitHubHeader && !gitHubEnterpriseHeader) {
6788
const [uriFallBack] = await GitHubManager.getOptions(host, 'HEAD', '/status');
6889
const response = await fetch(uriFallBack.toString());

src/github/folderRepositoryManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ export class FolderRepositoryManager extends Disposable {
241241
) {
242242
super();
243243
this._githubRepositories = [];
244-
this._githubManager = new GitHubManager();
244+
this._githubManager = new GitHubManager(this.telemetry);
245245

246246
this._register(
247247
vscode.workspace.onDidChangeConfiguration(async e => {

0 commit comments

Comments
 (0)