using System.Linq; using System.Threading.Tasks; using MalwareMultiScan.Api.Data.Configuration; using MalwareMultiScan.Api.Data.Response; using MalwareMultiScan.Api.Services; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace MalwareMultiScan.Api.Controllers { [ApiController] [Route("backends")] [Produces("application/json")] public class ScanBackendsController : Controller { private readonly ScanBackendService _scanBackendService; public ScanBackendsController(ScanBackendService scanBackendService) { _scanBackendService = scanBackendService; } private async Task GetScanBackendResponse(ScanBackend backend) { return new ScanBackendResponse { Id = backend.Id, Name = backend.Name, Online = await _scanBackendService.Ping(backend) }; } [HttpGet] [ProducesResponseType(typeof(ScanBackendResponse[]), StatusCodes.Status200OK)] public async Task Index() { return Ok(await Task.WhenAll( _scanBackendService.List.Select(GetScanBackendResponse).ToArray())); } } }