private async Task UpdateDataAsync() { try { if (LastDumpUpdateTimeUtc == DateTime.UnixEpoch) { await InitialUpdateAsync(); } else { await _apiService.WaitForActionAsync(NationStatesApiRequestType.DownloadDumps, TimeSpan.FromMinutes(30), _tokenSource.Token); if (!_tokenSource.Token.IsCancellationRequested) { IsUpdating = true; _logger.LogInformation(_defaultEventId, GetLogMessage("--- Updating NATION and REGION collections from dumps ---")); await DowloadAndReadDumpsAsync(); } } _logger.LogInformation(_defaultEventId, GetLogMessage("--- Dump Data Update Finished ---")); } catch (Exception ex) { _logger.LogCritical(_defaultEventId, ex, GetLogMessage("A critical error occurred while processing of Dump Update")); } finally { IsUpdating = false; } }
private async Task GetNewNationsAsync() { var id = LogEventIdProvider.GetEventIdByType(LoggingEvent.GetNewNations); while (IsRecruiting) { try { await _apiService.WaitForActionAsync(NationStatesApiRequestType.GetNewNations); PoolStatus = "Filling up with new nations"; var result = await _apiService.GetNewNationsAsync(id); await AddNationToPendingAsync(id, result, false); PoolStatus = "Waiting for new nations"; } catch (Exception ex) { _logger.LogError(id, ex, LogMessageBuilder.Build(id, "An error occured.")); } await Task.Delay(300000); } }