JsonElement instead of Request body Attachment Class Bump Ready to test GetLastGroupIdWithValue Changed to v4
70 lines
2.6 KiB
C#
70 lines
2.6 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using OI.Metrology.Server.Models;
|
|
using OI.Metrology.Shared.Models;
|
|
using OI.Metrology.Shared.Models.Stateless;
|
|
using OI.Metrology.Shared.Services;
|
|
using System.Net;
|
|
using System.Text.Json;
|
|
|
|
namespace OI.Metrology.Server.ApiControllers;
|
|
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public partial class InboundController : ControllerBase, IInboundController<IActionResult>
|
|
{
|
|
|
|
private readonly ILogger _Logger;
|
|
private readonly AppSettings _AppSettings;
|
|
private readonly IInboundRepository _InboundRepository;
|
|
private readonly IAttachmentsService _AttachmentsService;
|
|
private readonly IInboundDataService _InboundDataService;
|
|
private readonly IMetrologyRepository _MetrologyRepository;
|
|
|
|
public InboundController(AppSettings appSettings, ILogger<InboundController> logger, IMetrologyRepository metrologyRepository, IInboundRepository inboundRepository, IInboundDataService inboundDataService, IAttachmentsService attachmentsService)
|
|
{
|
|
_Logger = logger;
|
|
_AppSettings = appSettings;
|
|
_InboundRepository = inboundRepository;
|
|
_AttachmentsService = attachmentsService;
|
|
_InboundDataService = inboundDataService;
|
|
_MetrologyRepository = metrologyRepository;
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("{tooltype}")]
|
|
public IActionResult Post(string tooltype, JsonElement? jsonElement)
|
|
{
|
|
IPAddress? remoteIP = HttpContext.Connection.RemoteIpAddress;
|
|
if (!_InboundRepository.IsIPAddressAllowed(_AppSettings.InboundApiAllowedIPList, remoteIP))
|
|
{
|
|
_Logger.LogInformation($"Rejected remote IP: {remoteIP}");
|
|
return Unauthorized("Remote IP is not on allowed list");
|
|
}
|
|
else
|
|
{
|
|
DataResponse dataResponse = _InboundRepository.Data(_MetrologyRepository, _InboundDataService, tooltype, jsonElement);
|
|
if (dataResponse.Errors.Count == 0)
|
|
return Ok(dataResponse);
|
|
else
|
|
return BadRequest(dataResponse);
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("{tooltype}/attachment")]
|
|
public IActionResult AttachFile(string tooltype, Attachment? attachment)
|
|
{
|
|
IPAddress? remoteIP = HttpContext.Connection.RemoteIpAddress;
|
|
if (!_InboundRepository.IsIPAddressAllowed(_AppSettings.InboundApiAllowedIPList, remoteIP))
|
|
{
|
|
_Logger.LogInformation($"Rejected remote IP: {remoteIP}");
|
|
return Unauthorized("Remote IP is not on allowed list");
|
|
}
|
|
else
|
|
{
|
|
_InboundRepository.AttachFile(_MetrologyRepository, _AttachmentsService, tooltype, attachment);
|
|
return Ok();
|
|
}
|
|
}
|
|
|
|
} |