コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
        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.")));
            }
        }