mirror of
https://github.com/volodymyrsmirnov/MalwareMultiScan.git
synced 2025-08-24 05:22:22 +00:00
44 lines
1.4 KiB
C#
44 lines
1.4 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(UrlRequest request)
|
||
|
{
|
||
|
BackgroundJob.Enqueue<ScanJob>(
|
||
|
x => x.ScanUrl(request.InputUrl, request.CallbackUrl));
|
||
|
|
||
|
return Accepted(request.CallbackUrl);
|
||
|
}
|
||
|
}
|
||
|
}
|