eShopOnContainers/src/Web/WebhookClient/Controllers/WebhooksReceivedController.cs

54 lines
1.9 KiB
C#
Raw Normal View History

2020-12-28 15:10:01 +05:30
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
2019-01-29 19:34:57 +01:00
using Microsoft.Extensions.Options;
using System.Linq;
using System.Threading.Tasks;
using WebhookClient.Models;
2019-02-11 11:45:32 +01:00
using WebhookClient.Services;
2019-01-29 19:34:57 +01:00
namespace WebhookClient.Controllers
{
[ApiController]
[Route("webhook-received")]
public class WebhooksReceivedController : Controller
{
private readonly Settings _settings;
private readonly ILogger _logger;
2019-02-11 11:45:32 +01:00
private readonly IHooksRepository _hooksRepository;
2020-12-28 15:10:01 +05:30
2019-02-11 11:45:32 +01:00
public WebhooksReceivedController(IOptions<Settings> settings, ILogger<WebhooksReceivedController> logger, IHooksRepository hooksRepository)
2019-01-29 19:34:57 +01:00
{
_settings = settings.Value;
_logger = logger;
2019-02-11 11:45:32 +01:00
_hooksRepository = hooksRepository;
2019-01-29 19:34:57 +01:00
}
[HttpPost]
2019-02-11 11:45:32 +01:00
public async Task<IActionResult> NewWebhook(WebhookData hook)
2019-01-29 19:34:57 +01:00
{
var header = Request.Headers[HeaderNames.WebHookCheckHeader];
var token = header.FirstOrDefault();
_logger.LogInformation("Received hook with token {Token}. My token is {MyToken}. Token validation is set to {ValidateToken}", token, _settings.Token, _settings.ValidateToken);
2019-01-29 19:34:57 +01:00
if (!_settings.ValidateToken || _settings.Token == token)
{
_logger.LogInformation("Received hook is going to be processed");
var newHook = new WebHookReceived()
2019-01-29 19:34:57 +01:00
{
Data = hook.Payload,
When = hook.When,
Token = token
};
2019-02-11 11:45:32 +01:00
await _hooksRepository.AddNew(newHook);
_logger.LogInformation("Received hook was processed.");
return Ok(newHook);
2019-01-29 19:34:57 +01:00
}
_logger.LogInformation("Received hook is NOT processed - Bad Request returned.");
2019-01-29 19:34:57 +01:00
return BadRequest();
}
}
}