Ejemplo n.º 1
0
        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;
            }
            }
        }
Ejemplo n.º 2
0
        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
            });
        }