using System.Threading.Tasks;
using MalwareMultiScan.Api.Services.Interfaces;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace MalwareMultiScan.Api.Controllers
{
///
/// Downloads controller.
///
[ApiController]
[Route("api/download")]
[Produces("application/octet-stream")]
public class DownloadController : Controller
{
private readonly IScanResultService _scanResultService;
///
/// Initialize downloads controller.
///
/// Scan result service.
public DownloadController(IScanResultService scanResultService)
{
_scanResultService = scanResultService;
}
///
/// Download file by id.
///
/// File id.
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task Index(string id)
{
var fileStream = await _scanResultService.ObtainFile(id);
if (fileStream == null)
return NotFound();
return File(fileStream, "application/octet-stream");
}
}
}