mirror of
https://github.com/volodymyrsmirnov/MalwareMultiScan.git
synced 2025-08-24 13:32:22 +00:00
46 lines
1.5 KiB
C#
46 lines
1.5 KiB
C#
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using Hangfire;
|
|
using MalwareMultiScan.Shared.Data.Requests;
|
|
using MalwareMultiScan.Worker.Jobs;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace MalwareMultiScan.Worker.Controllers
|
|
{
|
|
[ApiController]
|
|
[Produces("application/json")]
|
|
public class ScanController : ControllerBase
|
|
{
|
|
[HttpPost]
|
|
[ProducesResponseType(StatusCodes.Status202Accepted)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[Route("/scan/file")]
|
|
public async Task<IActionResult> ScanFile([FromForm] FileRequest request)
|
|
{
|
|
var temporaryFile = Path.GetTempFileName();
|
|
|
|
await using (var temporaryFileSteam = System.IO.File.OpenWrite(temporaryFile))
|
|
{
|
|
await request.InputFile.CopyToAsync(temporaryFileSteam);
|
|
}
|
|
|
|
BackgroundJob.Enqueue<ScanJob>(
|
|
x => x.ScanFile(temporaryFile, request.CallbackUrl));
|
|
|
|
return Accepted(request.CallbackUrl);
|
|
}
|
|
|
|
[HttpPost]
|
|
[ProducesResponseType(StatusCodes.Status202Accepted)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[Route("/scan/url")]
|
|
public IActionResult ScanUrl([FromForm] UrlRequest request)
|
|
{
|
|
BackgroundJob.Enqueue<ScanJob>(
|
|
x => x.ScanUrl(request.InputUrl, request.CallbackUrl));
|
|
|
|
return Accepted(request.CallbackUrl);
|
|
}
|
|
}
|
|
} |