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 <Unit> Handle(RecyclerStartCommand request, CancellationToken cancellationToken) { _logger.LogInformation($"Iniciando processo de reciclagem de vídeos com mais de {request.Days} dias."); var recycler = new Recycler(); _recyclerRepository.Add(recycler); await _recyclerRepository.SaveChangesAsync(); var servers = await _serverRepository.GetAllAsync(); foreach (var server in servers) { var date = Clock.Now.Date.AddDays(-request.Days); var oldVideos = server.Videos.Where(x => x.CreatedDate.Date <= date); _logger.LogInformation($"Reciclando {oldVideos.Count()} vídeos do servidor {server.Name}."); foreach (var video in oldVideos) { await _videoRepository.RemoveContent(video.Path); _serverRepository.RemoveVideo(video); _logger.LogInformation($"Vídeo {video.Description} removido do servidor {server.Name}"); } } recycler.Executed(); await _recyclerRepository.SaveChangesAsync(); return(Unit.Value); }