public async Task <UserTrackingSettings> GetTelemetrySettings(Guid telemetryKey) { Program program = await this.Work.Programs.GetByTelemetryKey(telemetryKey).ConfigureAwait(false); if (program == null) { throw new BadRequestException($"Program with Key [{telemetryKey}] does not exist"); } var storedSettings = program.UserTrackingSettings; if (storedSettings != null) { try { UserTrackingSettings deserialized = JsonConvert.DeserializeObject <UserTrackingSettings>(storedSettings); return(deserialized); } catch (Exception ex) { this.telemetryClient.TrackException(new InvalidOperationException($"ERROR while deserializing {nameof(UserTrackingSettings)}", ex), new Dictionary <string, string>() { { $"Method", Routes.GetTelemetrySettings }, { $"{nameof(Program.TelemetryKey)}", telemetryKey.ToString() } }); } } return(new UserTrackingSettings() { UserIdentifierMode = UserIdentifierMode.RandomFriendlyName, ShareIdentifierWithOtherTelimenaApps = false }); }
private UserInfo GetStoredUserInfo(UserTrackingSettings settings) { switch (settings.UserIdentifierMode) { case UserIdentifierMode.RandomFriendlyName: UserInfo randomized = this.GetUserIdentifier(UserRandomFileName, settings.ShareIdentifierWithOtherTelimenaApps); if (randomized == null || string.IsNullOrEmpty(randomized.UserIdentifier) || string.IsNullOrEmpty(randomized.MachineName)) { return(null); } return(randomized); case UserIdentifierMode.AnonymousGUID: UserInfo guidized = this.GetUserIdentifier(UserGuidFileName, settings.ShareIdentifierWithOtherTelimenaApps); if (guidized == null || string.IsNullOrEmpty(guidized.UserIdentifier) || string.IsNullOrEmpty(guidized.MachineName)) { return(null); } return(guidized); case UserIdentifierMode.NoTelemetry: return(new UserInfo()); case UserIdentifierMode.TrackPersonalData: return(new UserInfo { UserIdentifier = Environment.UserName, MachineName = Environment.MachineName }); default: return(new UserInfo()); } }
private UserTrackingSettings DeserializeAndStoreSettings(string serializedSettings) { UserTrackingSettings settings = this.Deserialize(serializedSettings); if (settings == null) { settings = this.GetStoredSettings(); if (settings == null) { if (this.initialUserInfo != null) { settings = new UserTrackingSettings() { ShareIdentifierWithOtherTelimenaApps = false, UserIdentifierMode = UserIdentifierMode.Custom }; } else { settings = new UserTrackingSettings() { ShareIdentifierWithOtherTelimenaApps = false, UserIdentifierMode = UserIdentifierMode.AnonymousGUID }; } } } else { this.StoreSettings(settings); } return(settings); }
private void StoreSettings(UserTrackingSettings settings) { try { string stringified = this.serializer.Serialize(settings); string path = Path.Combine(this.locator.GetWorkingDirectory().FullName, TrackingSettingsFileName); File.WriteAllText(path, stringified); } catch (Exception ex) { TelemetryDebugWriter.WriteError("Error while storing user tracking settings: " + ex); } }
public async Task LoadUserInfo() { if (this.properties.UserInfo != null && this.properties.UserInfo.UserIdentifier != NotYetComputedUser) { return; } string settingsString = await this.settingsProvider.GetUserTrackingSettings(this.properties.TelemetryKey); this.Settings = this.DeserializeAndStoreSettings(settingsString); UserInfo userInfo = this.GetUserInfo(); this.properties.UserInfo = userInfo; }
private UserTrackingSettings GetUserTrackingSettings(Program program) { try { UserTrackingSettings deserialized = JsonConvert.DeserializeObject <UserTrackingSettings>(program.UserTrackingSettings); return(deserialized); } catch (Exception) { return(new UserTrackingSettings() { UserIdentifierMode = UserIdentifierMode.RandomFriendlyName, ShareIdentifierWithOtherTelimenaApps = false }); } }
public UserInfo GetStoredUserInfo() { UserTrackingSettings storedSettings = this.GetStoredSettings(); if (storedSettings != null) { var storedInfo = this.GetStoredUserInfo(storedSettings); if (storedInfo != null) { return(storedInfo); } } return(new UserInfo() { UserIdentifier = NotYetComputedUser }); }
public async Task <IHttpActionResult> SetTelemetrySettings(Guid telemetryKey, UserTrackingSettings settings) { Program program = await this.Work.Programs.GetByTelemetryKey(telemetryKey).ConfigureAwait(false); if (program == null) { throw new BadRequestException($"Program with Key [{telemetryKey}] does not exist"); } var serialized = JsonConvert.SerializeObject(settings); program.UserTrackingSettings = serialized; await this.Work.CompleteAsync().ConfigureAwait(false); return(this.Ok("Updated user tracking settings")); }