public async Task <object> GetServersAsync( [FromServices] HttpClient httpClient, [FromServices] IServerRepository serverRepository) { var accept = HttpContext.Request.Headers[HeaderNames.Accept]; var accepts = accept .SelectMany(x => x.Split(',', StringSplitOptions.RemoveEmptyEntries)) .ToArray(); var returnJson = accepts.Contains(MimeTypes.ApplicationJson, StringComparer.InvariantCultureIgnoreCase) || accepts.Contains(MimeTypes.TextJson, StringComparer.InvariantCultureIgnoreCase); try { // A good time to clean up any expired servers await DoServerCleanupAsync(serverRepository); #if DEBUG var servers = await GetServersFromLiveSiteAsync(httpClient); #else var servers = await serverRepository.GetAllAsync(); #endif if (returnJson) { var response = new JGetServersResponse() { status = JStatus.OK, Servers = servers }; return(ConvertResponse(response)); } else { servers = servers .OrderByDescending(x => x.Players) .ThenBy(x => x.RequiresPassword) .ThenByNaturalDescending(x => x.Version) .ThenBy(x => x.Name) .ToArray(); return(View("Views/Servers.cshtml", servers)); } } catch { var msg = "Unable to connect to fetch servers."; if (returnJson) { return(ConvertResponse(JResponse.Error(msg))); } else { return(StatusCode(StatusCodes.Status500InternalServerError, msg)); } } }
public async Task <object> GetServers( [FromServices] IServerRepository serverRepository) { try { Server[] servers = await serverRepository.GetAll(); JServer[] jServers = servers.Select(x => JServer.FromServer(x)) .ToArray(); await DoServerCleanup(serverRepository); var response = new JGetServersResponse() { status = JStatus.OK, servers = jServers }; return(ConvertResponse(response)); } catch { return(ConvertResponse(JResponse.Error("Unable to connect to fetch servers."))); } }