private static void Run(object obj) { var service = ObjectContainer.GetInstance <IService>(); switch (obj) { case ConfigOptions config: { var credentials = new Credentials { Username = config.Username, Password = config.Password, }; var result = service.SaveCredentials(credentials); if (result.Success) { Exit("Credentials were saved to persistent data."); } else { Exit(result.Message, true); } return; } case ServerListOptions serverList: { var args = new GetServersArgs { UseLocal = serverList.Local, Order = serverList.Order, // Extra on servers_list: Add ordering by arguments "--order asc" or "--order desc" }; var result = service.GetServersList(args); if (result.Success) { if (result.Servers?.Count > 0) { PrintServersList(result.Servers); } else { Exit("Servers list is empty."); } } else { Exit(result.Message, true); } return; } } }
public GetServersResponse GetServersList(GetServersArgs args) { _log.Info($"GetServersList ({args.JsonToString()}"); var servers = new List <Server>(); if (args.UseLocal) { servers = _repository.GetServersList(); if (servers?.Count == 0) { _log.Warn("GetServersList ({0}): Servers list in database is empty.", args.JsonToString()); return(new GetServersResponse { Message = "Servers list in database is empty." }); } } else { var credentials = _repository.GetCredentials(); if (credentials == null) { _log.Warn("GetServersList ({0}): No credentials in database.", args.JsonToString()); return(new GetServersResponse { Message = "No credentials in database." }); } _log.Debug($"GetServersList.GenerateToken ({credentials.JsonToString()})"); var tokenResponse = _apiService.GenerateToken(credentials); if (!tokenResponse.Success) { _log.Error("GetServersList.GenerateToken ({0})", tokenResponse.Message); return(new GetServersResponse { Message = tokenResponse.Message }); } _log.Info("GetServersList.CallApi (token={0})", tokenResponse.Token); var serversResponse = _apiService.GetServersList(new GetApiServersArgs { Token = tokenResponse.Token }); if (!serversResponse.Success) { _log.Error("GetServersList.ApiService.GetServersList ({0})", tokenResponse.Message); return(new GetServersResponse { Message = serversResponse.Message }); } servers = serversResponse.Servers; _repository.SaveServerList(servers); } #region Extra: Ordering if (args.Order == Order.Asc) { servers = servers.OrderBy(x => x.Distance).ToList(); } if (args.Order == Order.Desc) { servers = servers.OrderByDescending(x => x.Distance).ToList(); } #endregion return(new GetServersResponse { Success = true, Servers = servers }); }