public async Task <int> StartAsync() { try { var requestOptionsList = (await _options.GetOptionsAsync()).ToList(); Console.WriteLine($"request options are successfully read from file!"); var invalidRequestOptionsList = requestOptionsList.Where(op => !(op.Item1.IsValid && op.Item2.IsValid)); foreach (var item in invalidRequestOptionsList) { Console.WriteLine($"Request {item.Item1.Name ?? "no name"} is invalid and will not be performed!"); _logger.Log($"Request {item.Item1.Name ?? "no name"} is invalid and will not be performed!"); } requestOptionsList = requestOptionsList.Where(op => op.Item1.IsValid && op.Item2.IsValid).ToList(); var tasks = requestOptionsList. Select(options => _performer.PerformRequestAsync(options.Item1, options.Item2)).ToArray(); var t = await Task.WhenAll(tasks); Console.WriteLine($"Requests: " + $"{string.Join(", ",requestOptionsList.Select(op => op.Item1.Name))}" + " were successfully performed!"); } catch (PerformException e) { Console.WriteLine("Unknown exception occured while performing requests!"); _logger.Log(e, "PerformException was handled in main menu!"); return(-1); } return(0); }
public async Task <int> StartAsync() { try { logger.Log("Download options"); MainMenu.ConsoleWrite("Download options"); var optionsValue = (await options.GetOptionsAsync()).Where(option => option.Item1.IsValid == true); logger.Log("Run tasks"); MainMenu.ConsoleWrite("Run tasks"); var tasks = optionsValue .Select(opt => performer.PerformRequestAsync(opt.Item1, opt.Item2)).ToArray(); logger.Log("Wait tasks"); MainMenu.ConsoleWrite("Wait tasks"); Task.WaitAll(tasks); tasks.ToList().ForEach(t => { logger.Log("Id task:" + t.Id + ",Status:" + t.Status.ToString() + ",Result:" + t.Result); MainMenu.ConsoleWrite("Id task:" + t.Id + ",Status:" + t.Status.ToString() + ",Result:" + t.Result); }); return(0); } catch (PerformException perform) { return(-1); } }
public async Task <int> StartAsync() { Console.WriteLine("Program is started."); Console.WriteLine("Reading from file..."); _logger.Log("Start reading file."); // get options from file var requestOptions = await _options.GetOptionsAsync(); _logger.Log("File was read."); Console.WriteLine("Data from file was read!"); try { _logger.Log("Start sending messages."); Console.WriteLine("Sending requests to servers..."); //sending requests to servers var tasks = requestOptions.Where(x => x.Item1.IsValid || x.Item2.IsValid) .Select(x => _performer.PerformRequestAsync(x.Item1, x.Item2)).ToArray(); // waiting all tasks await Task.WhenAll(tasks); _logger.Log("End sending messages."); Console.WriteLine("Requests was send and files was created!"); } catch (ArgumentNullException e) { Console.WriteLine("Data from file is missing or empty!"); _logger.Log(e, e.Message); return(-1); } catch (ArgumentOutOfRangeException e) { Console.WriteLine("Invalid parameters in file!"); _logger.Log(e, e.Message); return(-1); } catch (PerformException e) { Console.WriteLine("Something going wrong!"); _logger.Log(e, e.Message); return(-1); } Console.WriteLine("Program is ended!"); Console.WriteLine("Goodbye!"); return(0); }
public async Task <int> StartAsync() { Console.WriteLine("HTTP request processor\nby Andrey Basystyi\nReading from json..."); var options = (await _optionsSource.GetOptionsAsync()); var validOptions = options.Where(opt => opt.Item1.IsValid && opt.Item2.IsValid).Count(); var notValidOptions = options.Where(opt => !opt.Item1.IsValid || !opt.Item2.IsValid).Count(); #region Print valid/not valid options Console.WriteLine($"Was read {options.Count()} elements\nWhere:"); Console.WriteLine($"{validOptions} are valid"); _logger.Log($"Read {options.Count()} elements"); _logger.Log($"Valid options: {validOptions}"); if (notValidOptions != 0) { Console.WriteLine($"{notValidOptions} are invalid"); _logger.Log($"Invalid options: {notValidOptions}"); } #endregion if (options.Count() == 0) { Console.WriteLine("Empty options list"); _logger.Log("Empty options"); } try { var tasks = options.Select(opt => _performer.PerformRequestAsync(opt.Item1, opt.Item2)).ToArray(); Console.WriteLine($"Start {tasks.Length} http-requests..."); var result = await Task.WhenAll(tasks); PrintResult(result); return(result.Any(r => r == false) ? -1 : 0); } catch (PerformException ex) { Console.WriteLine($"Error: {ex.Message}"); _logger.Log(ex, "Handled PerformException"); return(-1); } }
public async Task <int> StartAsync() { Console.WriteLine("Request Processor, made by Denys Sakadel"); try { Console.WriteLine("Getting options..."); logger.Log("Getting options..."); var list = await options.GetOptionsAsync(); logger.Log("Got options"); Console.WriteLine("Got options"); Console.WriteLine("Performing request..."); logger.Log("Performing request..."); var tasks = list.Select(opt => performer.PerformRequestAsync(opt.Item1, opt.Item2)).ToArray(); var isRequestSuccess = Task.WhenAll(tasks); if (isRequestSuccess.Result[0]) { Console.WriteLine("Request was successfully performed"); logger.Log("Request was successfully performed"); return(0); } else { Console.WriteLine("Request failed"); logger.Log("Request failed"); return(-1); } } catch (Exception e) { Console.WriteLine(e + " something went wrong with performing request"); logger.Log(e, " something went wrong with performing request"); return(-1); } }
private async Task JoinRoomWithBot() { logger.Trace("JoinRoomWithBot method"); Console.WriteLine("Trying to connect to training room with bot"); var options = new RequestOptions { Address = baseAddress + $"room/create/training/{_sessionId}", IsValid = true, Body = _sessionId, Method = Services.RequestModels.RequestMethod.Get, Name = "Creating training Room" }; var reachedResponse = await _performer.PerformRequestAsync(options); if (reachedResponse.Content != null) { logger.Trace($"Catched response from Join Room with Bot method. Code: {reachedResponse.Code}"); _room = JsonConvert.DeserializeObject <Room>(reachedResponse.Content); Console.WriteLine("Room with bot created!"); logger.Info("Room with bot created!"); await ChangePlayerStatus(); await StartRoomMenu(); } }
public async Task <int> StartAsync() { Console.WriteLine("\nMade by Mulish Vadym"); Console.WriteLine("Task 1. HTTP request processor\n"); List <(IRequestOptions, IResponseOptions)> options; try { IEnumerable <(IRequestOptions, IResponseOptions)> result = await _options.GetOptionsAsync(); if (result == null) { _logger.Log("Options list is empty"); Console.WriteLine("Options list is empty"); return(0); } options = result.ToList(); } catch (OptionsAccessException exception) { _logger.Log(exception, "Error occured when trying to read options from file."); Console.WriteLine("Error occured when trying to read options from file.\n" + $"{exception.Message}"); return(-1); } if (!options.Any()) { _logger.Log("Options list is empty"); Console.WriteLine("Options list is empty"); return(0); } var validOptions = options.Where(o => o.Item1.IsValid && o.Item2.IsValid).ToList(); int numberOfRemovedRequests = options.Count - validOptions.Count; if (numberOfRemovedRequests > 0) { _logger.Log($"Amount of invalid options: {numberOfRemovedRequests}"); Console.WriteLine($"Amount of invalid options: {numberOfRemovedRequests}"); } try { _logger.Log($"Amount of requests to be processed: {validOptions.Count}\n"); Console.WriteLine($"Amount of requests to be processed: {validOptions.Count}\n"); _logger.Log("Processing begins..."); Console.WriteLine("Processing begins...\n"); Task <bool>[] tasks = validOptions.Select(opt => _performer.PerformRequestAsync(opt.Item1, opt.Item2)) .ToArray(); Task.WaitAll(tasks); _logger.Log($"Amount of successfully processed requests: {tasks.Count(t => t.Result)}"); Console.WriteLine($"Amount of successfully processed requests: {tasks.Count(t => t.Result)}"); _logger.Log($"Amount of unprocessed requests: {tasks.Count(t => t.Result == false)}"); Console.WriteLine($"Amount of unprocessed requests: {tasks.Count(t => t.Result == false)}"); _logger.Log("Program has ended"); Console.WriteLine("\nProgram has ended"); return(0); } catch (Exception exception) { if (exception is PerformException || exception is ArgumentOutOfRangeException || exception is ArgumentNullException) { _logger.Log(exception, "Error occured."); Console.WriteLine($"Error occured.\n{exception.Message}"); return(-1); } throw; } }