public void ReturnsSteamClientApiClient() { // Arrange -> Act var steamClientApiClient = new SteamClientApiClient(userName, password, retryPolicy, telemetryClient); // Assert Assert.IsAssignableFrom <SteamClientApiClient>(steamClientApiClient); }
public void ReturnsFalse() { // Arrange var ex = new TaskCanceledException(); // Act var isTransient = SteamClientApiClient.IsTransient(ex); // Assert Assert.False(isTransient); }
public void ExIsTimeoutRejectedException_ReturnsTrue() { // Arrange var ex = new TimeoutRejectedException(); // Act var isTransient = SteamClientApiClient.IsTransient(ex); // Assert Assert.True(isTransient); }
public void ExIsSteamClientApiExceptionAndResultIsNotTransient_ReturnsFalse() { // Arrange var ex = new SteamClientApiException(null, EResult.AccessDenied); // Act var isTransient = SteamClientApiClient.IsTransient(ex); // Assert Assert.False(isTransient); }
public void ExIsSteamClientApiExceptionAndResultIsNull_ReturnsTrue() { // Arrange var ex = new SteamClientApiException(null, new TaskCanceledException()); // Act var isTransient = SteamClientApiClient.IsTransient(ex); // Assert Assert.True(isTransient); }
public void ExIsSteamClientApiExceptionAndResultIsTransient_ReturnsTrue(EResult result) { // Arrange var ex = new SteamClientApiException(null, result); // Act var isTransient = SteamClientApiClient.IsTransient(ex); // Assert Assert.True(isTransient); }
private async Task UpdateDailyLeaderboardsAsync(CancellationToken cancellationToken) { var worker = kernel.Get <DailyLeaderboardsWorker>(); using (var operation = TelemetryClient.StartOperation <RequestTelemetry>("Update daily leaderboards")) using (new UpdateActivity(log, "daily leaderboards")) { try { if (!Settings.AreSteamClientCredentialsSet()) { log.Warn("Using test data for calls to Steam Client API. Set your Steam user name and password to use the actual Steam Client API."); log.Warn("Run this application with --help to find out how to set your Steam user name and password."); } var leaderboards = await worker.GetDailyLeaderboardsAsync(Settings.DailyLeaderboardsPerUpdate, cancellationToken).ConfigureAwait(false); await worker.UpdateDailyLeaderboardsAsync(leaderboards, cancellationToken).ConfigureAwait(false); await worker.StoreDailyLeaderboardsAsync(leaderboards, cancellationToken).ConfigureAwait(false); operation.Telemetry.Success = true; } catch (Exception ex) when(SteamClientApiClient.IsTransient(ex) || LeaderboardsStoreClient.IsTransient(ex)) { TelemetryClient.TrackException(ex); log.Error("Failed to complete run due to an error.", ex); operation.Telemetry.Success = false; } catch (Exception) when(operation.Telemetry.MarkAsUnsuccessful()) { } finally { kernel.Release(worker); } } }
private static async Task MainAsync(string[] args) { if (args.Length != 2) { throw new ArgumentException("Your Steam user name and password must be passed in as arguments."); } var userName = args[0]; var password = args[1]; var areas = Areas.GetAreas(); WriteJson(areas, "areas", DefaultValueHandling.Ignore); using (var db = new LeaderboardsContext()) { var products = JsonConvert.DeserializeObject <Product[]>(Resources.Products); db.Products.AddOrUpdate(p => p.ProductId, products); var modes = JsonConvert.DeserializeObject <Mode[]>(Resources.Modes); db.Modes.AddOrUpdate(m => m.ModeId, modes); var runs = JsonConvert.DeserializeObject <Run[]>(Resources.Runs); db.Runs.AddOrUpdate(r => r.RunId, runs); var characters = JsonConvert.DeserializeObject <Character[]>(Resources.Characters); db.Characters.AddOrUpdate(c => c.CharacterId, characters); db.SaveChanges(); } using (var steamClient = new SteamClientApiClient(userName, password, Policy.NoOpAsync(), TelemetryClient)) { steamClient.Timeout = TimeSpan.FromSeconds(30); await steamClient.ConnectAndLogOnAsync().ConfigureAwait(false); var leaderboards = await Leaderboards.GetLeaderboardsAsync(steamClient).ConfigureAwait(false); WriteJson(leaderboards.Select(l => new { l.LeaderboardId, l.DisplayName, l.Name, l.IsProduction, l.ProductId, l.ModeId, l.RunId, l.CharacterId, l.IsCustomMusic, l.IsCoOp, }), "Leaderboards"); var dailyLeaderboards = await DailyLeaderboards.GetDailyLeaderboardsAsync(steamClient).ConfigureAwait(false); WriteJson(dailyLeaderboards.Select(l => new { l.LeaderboardId, l.DisplayName, l.Name, l.IsProduction, l.ProductId, l.Date, }), "DailyLeaderboards"); } }
public SteamClientApiClientTests() { steamClientApiClient = new SteamClientApiClient(userName, password, retryPolicy, telemetryClient, mockSteamClient.Object); }