2021-06-29 08:40:20 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Text.Json;
|
2021-07-08 17:32:59 +00:00
|
|
|
|
using System.Threading.Tasks;
|
2021-06-29 08:40:20 +00:00
|
|
|
|
|
|
|
|
|
using ASC.Common;
|
|
|
|
|
using ASC.Core;
|
|
|
|
|
using ASC.Webhooks.Dao.Models;
|
|
|
|
|
|
2021-07-08 17:32:59 +00:00
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
|
2021-06-29 08:40:20 +00:00
|
|
|
|
namespace ASC.Webhooks
|
|
|
|
|
{
|
|
|
|
|
[Scope]
|
|
|
|
|
public class WebhookPublisher
|
|
|
|
|
{
|
|
|
|
|
private DbWorker DbWorker { get; }
|
|
|
|
|
private TenantManager TenantManager { get; }
|
|
|
|
|
private WebhookSender WebhookSender { get; }
|
|
|
|
|
|
|
|
|
|
public WebhookPublisher(DbWorker dbWorker, TenantManager tenantManager, WebhookSender webhookSender)
|
|
|
|
|
{
|
|
|
|
|
DbWorker = dbWorker;
|
|
|
|
|
TenantManager = tenantManager;
|
|
|
|
|
WebhookSender = webhookSender;
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-08 17:32:59 +00:00
|
|
|
|
public void Publish(EventName eventName, object data)
|
2021-06-29 08:40:20 +00:00
|
|
|
|
{
|
2021-07-08 17:32:59 +00:00
|
|
|
|
var content = JsonSerializer.Serialize(data);
|
2021-06-29 08:40:20 +00:00
|
|
|
|
|
2021-07-08 17:32:59 +00:00
|
|
|
|
var tenantId = TenantManager.GetCurrentTenant().TenantId;
|
|
|
|
|
var webhookConfigs = DbWorker.GetWebhookConfigs(tenantId);
|
|
|
|
|
foreach (var config in webhookConfigs)
|
2021-06-29 08:40:20 +00:00
|
|
|
|
{
|
|
|
|
|
var webhooksPayload = new WebhooksPayload
|
|
|
|
|
{
|
|
|
|
|
TenantId = tenantId,
|
2021-07-08 17:32:59 +00:00
|
|
|
|
Event = eventName,
|
2021-06-29 08:40:20 +00:00
|
|
|
|
CreationTime = DateTime.UtcNow,
|
2021-07-08 17:32:59 +00:00
|
|
|
|
Data = content,
|
|
|
|
|
Status = ProcessStatus.InProcess
|
2021-06-29 08:40:20 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DbWorker.WriteToJournal(webhooksPayload);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-08 17:32:59 +00:00
|
|
|
|
public enum EventName
|
|
|
|
|
{
|
|
|
|
|
NewFileCreated,
|
|
|
|
|
FileUpdated
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum ProcessStatus
|
2021-06-29 08:40:20 +00:00
|
|
|
|
{
|
2021-07-08 17:32:59 +00:00
|
|
|
|
InProcess,
|
|
|
|
|
Success,
|
|
|
|
|
Failed
|
2021-06-29 08:40:20 +00:00
|
|
|
|
}
|
|
|
|
|
}
|