Move all event integration code to Dirt (#6757)

* Move all event integration code to Dirt

* Format to fix lint
This commit is contained in:
Brant DeBow 2025-12-30 10:59:19 -05:00 committed by GitHub
parent 9a340c0fdd
commit 86a68ab637
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
158 changed files with 487 additions and 472 deletions

View file

@ -1,12 +1,12 @@
using Bit.Api.AdminConsole.Models.Request.Organizations;
using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Api.Dirt.Models.Request;
using Bit.Api.Dirt.Models.Response;
using Bit.Core.Context;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Exceptions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Bit.Api.AdminConsole.Controllers;
namespace Bit.Api.Dirt.Controllers;
[Route("organizations/{organizationId:guid}/integrations/{integrationId:guid}/configurations")]
[Authorize("Application")]

View file

@ -1,12 +1,12 @@
using Bit.Api.AdminConsole.Models.Request.Organizations;
using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Api.Dirt.Models.Request;
using Bit.Api.Dirt.Models.Response;
using Bit.Core.Context;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Exceptions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Bit.Api.AdminConsole.Controllers;
namespace Bit.Api.Dirt.Controllers;
[Route("organizations/{organizationId:guid}/integrations")]
[Authorize("Application")]

View file

@ -1,16 +1,16 @@
using System.Text.Json;
using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Api.Dirt.Models.Response;
using Bit.Core.Context;
using Bit.Core.Enums;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Dirt.Services;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Bit.Api.AdminConsole.Controllers;
namespace Bit.Api.Dirt.Controllers;
[Route("organizations")]
[Authorize("Application")]

View file

@ -1,18 +1,18 @@
using System.Text.Json;
using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Api.Dirt.Models.Response;
using Bit.Core.Context;
using Bit.Core.Enums;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Dirt.Services;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Integration.AspNet.Core;
namespace Bit.Api.AdminConsole.Controllers;
namespace Bit.Api.Dirt.Controllers;
[Route("organizations")]
[Authorize("Application")]

View file

@ -1,8 +1,7 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
using Bit.Core.Enums;
namespace Bit.Api.AdminConsole.Models.Request.Organizations;
namespace Bit.Api.Dirt.Models.Request;
public class OrganizationIntegrationConfigurationRequestModel
{

View file

@ -1,10 +1,10 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Enums;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Api.AdminConsole.Models.Request.Organizations;
namespace Bit.Api.Dirt.Models.Request;
public class OrganizationIntegrationRequestModel : IValidatableObject
{

View file

@ -1,8 +1,8 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
using Bit.Core.Enums;
using Bit.Core.Models.Api;
namespace Bit.Api.AdminConsole.Models.Response.Organizations;
namespace Bit.Api.Dirt.Models.Response;
public class OrganizationIntegrationConfigurationResponseModel : ResponseModel
{

View file

@ -1,10 +1,10 @@
using System.Text.Json;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Enums;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Models.Api;
namespace Bit.Api.AdminConsole.Models.Response.Organizations;
namespace Bit.Api.Dirt.Models.Response;
public class OrganizationIntegrationResponseModel : ResponseModel
{

View file

@ -1,3 +0,0 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
public record DatadogIntegration(string ApiKey, Uri Uri);

View file

@ -1,3 +0,0 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
public record SlackIntegration(string Token);

View file

@ -1,3 +0,0 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
public record SlackIntegrationConfiguration(string ChannelId);

View file

@ -1,14 +0,0 @@
#nullable enable
using Bit.Core.Enums;
using Bit.Core.Models.Data.Organizations;
namespace Bit.Core.Services;
public interface IIntegrationConfigurationDetailsCache
{
List<OrganizationIntegrationConfigurationDetails> GetConfigurationDetails(
Guid organizationId,
IntegrationType integrationType,
EventType eventType);
}

View file

@ -1,8 +1,8 @@
using Bit.Core.Entities;
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Entities;
using Bit.Core.Utilities;
namespace Bit.Core.AdminConsole.Entities;
namespace Bit.Core.Dirt.Entities;
public class OrganizationIntegration : ITableObject<Guid>
{

View file

@ -2,7 +2,7 @@
using Bit.Core.Enums;
using Bit.Core.Utilities;
namespace Bit.Core.AdminConsole.Entities;
namespace Bit.Core.Dirt.Entities;
public class OrganizationIntegrationConfiguration : ITableObject<Guid>
{

View file

@ -1,4 +1,4 @@
namespace Bit.Core.Enums;
namespace Bit.Core.Dirt.Enums;
public enum IntegrationType : int
{

View file

@ -1,4 +1,4 @@
namespace Bit.Api.AdminConsole.Models.Response.Organizations;
namespace Bit.Core.Dirt.Enums;
public enum OrganizationIntegrationStatus : int
{

View file

@ -1,13 +1,15 @@
using Azure.Messaging.ServiceBus;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.AdminConsole.Models.Teams;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Services;
using Bit.Core.AdminConsole.Services.NoopImplementations;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.Teams;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Dirt.Services;
using Bit.Core.Dirt.Services.Implementations;
using Bit.Core.Dirt.Services.NoopImplementations;
using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Settings;

View file

@ -1,13 +1,13 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.AdminConsole.Services;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Dirt.Services;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.DependencyInjection;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations;
/// <summary>
/// Command implementation for creating organization integration configurations with validation and cache invalidation support.

View file

@ -1,11 +1,11 @@
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.DependencyInjection;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations;
/// <summary>
/// Command implementation for deleting organization integration configurations with cache invalidation support.

View file

@ -1,9 +1,9 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations;
/// <summary>
/// Query implementation for retrieving organization integration configurations.

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
/// <summary>
/// Command interface for creating organization integration configurations.

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
/// <summary>
/// Command interface for deleting organization integration configurations.

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
/// <summary>
/// Query interface for retrieving organization integration configurations.

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
/// <summary>
/// Command interface for updating organization integration configurations.

View file

@ -1,13 +1,13 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.AdminConsole.Services;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Dirt.Services;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.DependencyInjection;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrationConfigurations;
/// <summary>
/// Command implementation for updating organization integration configurations with validation and cache invalidation support.

View file

@ -1,12 +1,12 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.DependencyInjection;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations;
/// <summary>
/// Command implementation for creating organization integrations with cache invalidation support.

View file

@ -1,11 +1,11 @@
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.DependencyInjection;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations;
/// <summary>
/// Command implementation for deleting organization integrations with cache invalidation support.

View file

@ -1,8 +1,8 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Repositories;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Repositories;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations;
/// <summary>
/// Query implementation for retrieving organization integrations.

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
/// <summary>
/// Command interface for creating an OrganizationIntegration.

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
/// <summary>
/// Command interface for deleting organization integrations.

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
/// <summary>
/// Query interface for retrieving organization integrations.

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
/// <summary>
/// Command interface for updating organization integrations.

View file

@ -1,12 +1,12 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations.Interfaces;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.DependencyInjection;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrations;
namespace Bit.Core.Dirt.EventIntegrations.OrganizationIntegrations;
/// <summary>
/// Command implementation for updating organization integrations with cache invalidation support.

View file

@ -0,0 +1,3 @@
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record DatadogIntegration(string ApiKey, Uri Uri);

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record DatadogIntegrationConfigurationDetails(string ApiKey, Uri Uri);

View file

@ -1,7 +1,7 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class DatadogListenerConfiguration(GlobalSettings globalSettings)
: ListenerConfiguration(globalSettings), IIntegrationListenerConfiguration

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record HecIntegration(Uri Uri, string Scheme, string Token, string? Service = null);

View file

@ -1,7 +1,7 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class HecListenerConfiguration(GlobalSettings globalSettings)
: ListenerConfiguration(globalSettings), IIntegrationListenerConfiguration

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public interface IEventListenerConfiguration
{

View file

@ -1,6 +1,6 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public interface IIntegrationListenerConfiguration : IEventListenerConfiguration
{

View file

@ -1,6 +1,6 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public interface IIntegrationMessage
{

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
/// <summary>
/// Categories of event integration failures used for classification and retry logic.

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class IntegrationFilterGroup
{

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public enum IntegrationFilterOperation
{

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class IntegrationFilterRule
{

View file

@ -1,4 +1,4 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
/// <summary>
/// Represents the result of an integration handler operation, including success status,

View file

@ -1,7 +1,7 @@
using System.Text.Json;
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class IntegrationMessage : IIntegrationMessage
{

View file

@ -1,8 +1,8 @@
using System.Security.Cryptography;
using System.Text;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class IntegrationOAuthState
{

View file

@ -4,7 +4,7 @@ using Bit.Core.Enums;
using Bit.Core.Models.Data;
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class IntegrationTemplateContext(EventMessage eventMessage)
{

View file

@ -1,6 +1,6 @@
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public abstract class ListenerConfiguration
{

View file

@ -1,9 +1,8 @@
using System.Text.Json.Nodes;
using Bit.Core.Dirt.Enums;
using Bit.Core.Enums;
#nullable enable
namespace Bit.Core.Models.Data.Organizations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class OrganizationIntegrationConfigurationDetails
{

View file

@ -1,6 +1,6 @@
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class RepositoryListenerConfiguration(GlobalSettings globalSettings)
: ListenerConfiguration(globalSettings), IEventListenerConfiguration

View file

@ -0,0 +1,3 @@
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record SlackIntegration(string Token);

View file

@ -0,0 +1,3 @@
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record SlackIntegrationConfiguration(string ChannelId);

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record SlackIntegrationConfigurationDetails(string ChannelId, string Token);

View file

@ -1,7 +1,7 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class SlackListenerConfiguration(GlobalSettings globalSettings) :
ListenerConfiguration(globalSettings), IIntegrationListenerConfiguration

View file

@ -1,6 +1,6 @@
using Bit.Core.Models.Teams;
using Bit.Core.Dirt.Models.Data.Teams;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record TeamsIntegration(
string TenantId,

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record TeamsIntegrationConfigurationDetails(string ChannelId, Uri ServiceUrl);

View file

@ -1,7 +1,7 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class TeamsListenerConfiguration(GlobalSettings globalSettings) :
ListenerConfiguration(globalSettings), IIntegrationListenerConfiguration

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record WebhookIntegration(Uri Uri, string? Scheme = null, string? Token = null);

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record WebhookIntegrationConfiguration(Uri Uri, string? Scheme = null, string? Token = null);

View file

@ -1,3 +1,3 @@
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public record WebhookIntegrationConfigurationDetails(Uri Uri, string? Scheme = null, string? Token = null);

View file

@ -1,7 +1,7 @@
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Settings;
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
namespace Bit.Core.Dirt.Models.Data.EventIntegrations;
public class WebhookListenerConfiguration(GlobalSettings globalSettings)
: ListenerConfiguration(globalSettings), IIntegrationListenerConfiguration

View file

@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
namespace Bit.Core.Models.Slack;
namespace Bit.Core.Dirt.Models.Data.Slack;
public abstract class SlackApiResponse
{

View file

@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
namespace Bit.Core.Models.Teams;
namespace Bit.Core.Dirt.Models.Data.Teams;
/// <summary>Represents the response returned by the Microsoft OAuth 2.0 token endpoint.
/// See <see href="https://learn.microsoft.com/graph/auth-v2-user">Microsoft identity platform and OAuth 2.0

View file

@ -1,6 +1,6 @@
using Microsoft.Bot.Connector.Authentication;
namespace Bit.Core.AdminConsole.Models.Teams;
namespace Bit.Core.Dirt.Models.Data.Teams;
public class TeamsBotCredentialProvider(string clientId, string clientSecret) : ICredentialProvider
{

View file

@ -1,8 +1,10 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Enums;
using Bit.Core.Models.Data.Organizations;
using Bit.Core.Repositories;
namespace Bit.Core.Repositories;
namespace Bit.Core.Dirt.Repositories;
public interface IOrganizationIntegrationConfigurationRepository : IRepository<OrganizationIntegrationConfiguration, Guid>
{

View file

@ -1,6 +1,7 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Dirt.Entities;
using Bit.Core.Repositories;
namespace Bit.Core.Repositories;
namespace Bit.Core.Dirt.Repositories;
public interface IOrganizationIntegrationRepository : IRepository<OrganizationIntegration, Guid>
{

View file

@ -1,7 +1,7 @@
using Azure.Messaging.ServiceBus;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
public interface IAzureServiceBusService : IEventIntegrationPublisher, IAsyncDisposable
{

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
public interface IEventIntegrationPublisher : IAsyncDisposable
{

View file

@ -1,6 +1,6 @@
using Bit.Core.Models.Data;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
public interface IEventMessageHandler
{

View file

@ -1,9 +1,9 @@
#nullable enable
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Models.Data;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
public interface IIntegrationFilterService
{

View file

@ -1,8 +1,8 @@
using System.Globalization;
using System.Net;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
public interface IIntegrationHandler
{

View file

@ -1,7 +1,7 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Enums;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
namespace Bit.Core.AdminConsole.Services;
namespace Bit.Core.Dirt.Services;
public interface IOrganizationIntegrationConfigurationValidator
{

View file

@ -1,8 +1,8 @@
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
public interface IRabbitMqService : IEventIntegrationPublisher
{

View file

@ -1,6 +1,7 @@
using Bit.Core.Models.Slack;
using Bit.Core.Dirt.Models.Data.Slack;
using Bit.Core.Dirt.Services.Implementations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
/// <summary>Defines operations for interacting with Slack, including OAuth authentication, channel discovery,
/// and sending messages.</summary>

View file

@ -1,6 +1,7 @@
using Bit.Core.Models.Teams;
using Bit.Core.Dirt.Models.Data.Teams;
using Bit.Core.Dirt.Services.Implementations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services;
/// <summary>
/// Service that provides functionality relating to the Microsoft Teams integration including OAuth,

View file

@ -1,9 +1,9 @@
using System.Text;
using Azure.Messaging.ServiceBus;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Microsoft.Extensions.Logging;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class AzureServiceBusEventListenerService<TConfiguration> : EventLoggingListenerService
where TConfiguration : IEventListenerConfiguration
@ -42,7 +42,7 @@ public class AzureServiceBusEventListenerService<TConfiguration> : EventLoggingL
private static ILogger CreateLogger(ILoggerFactory loggerFactory, TConfiguration configuration)
{
return loggerFactory.CreateLogger(
categoryName: $"Bit.Core.Services.AzureServiceBusEventListenerService.{configuration.EventSubscriptionName}");
categoryName: $"Bit.Core.Dirt.Services.Implementations.AzureServiceBusEventListenerService.{configuration.EventSubscriptionName}");
}
internal Task ProcessErrorAsync(ProcessErrorEventArgs args)

View file

@ -1,9 +1,9 @@
using Azure.Messaging.ServiceBus;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class AzureServiceBusIntegrationListenerService<TConfiguration> : BackgroundService
where TConfiguration : IIntegrationListenerConfiguration
@ -23,7 +23,7 @@ public class AzureServiceBusIntegrationListenerService<TConfiguration> : Backgro
{
_handler = handler;
_logger = loggerFactory.CreateLogger(
categoryName: $"Bit.Core.Services.AzureServiceBusIntegrationListenerService.{configuration.IntegrationSubscriptionName}");
categoryName: $"Bit.Core.Dirt.Services.Implementations.AzureServiceBusIntegrationListenerService.{configuration.IntegrationSubscriptionName}");
_maxRetries = configuration.MaxRetries;
_serviceBusService = serviceBusService;

View file

@ -1,9 +1,9 @@
using Azure.Messaging.ServiceBus;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Settings;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class AzureServiceBusService : IAzureServiceBusService
{

View file

@ -1,9 +1,8 @@
#nullable enable
using Bit.Core.Models.Data;
using Bit.Core.Models.Data;
using Bit.Core.Services;
using Microsoft.Extensions.DependencyInjection;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class AzureTableStorageEventHandler(
[FromKeyedServices("persistent")] IEventWriteService eventWriteService)

View file

@ -1,7 +1,7 @@
using System.Text;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class DatadogIntegrationHandler(
IHttpClientFactory httpClientFactory,

View file

@ -1,7 +1,8 @@
using System.Text.Json;
using Bit.Core.Models.Data;
using Bit.Core.Services;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class EventIntegrationEventWriteService : IEventWriteService, IAsyncDisposable
{
private readonly IEventIntegrationPublisher _eventIntegrationPublisher;

View file

@ -1,18 +1,18 @@
using System.Text.Json;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Utilities;
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Models.Data;
using Bit.Core.Models.Data.Organizations;
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
using Bit.Core.Repositories;
using Bit.Core.Utilities;
using Microsoft.Extensions.Logging;
using ZiggyCreatures.Caching.Fusion;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class EventIntegrationHandler<T>(
IntegrationType integrationType,

View file

@ -1,11 +1,9 @@
#nullable enable
using System.Text.Json;
using System.Text.Json;
using Bit.Core.Models.Data;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public abstract class EventLoggingListenerService : BackgroundService
{

View file

@ -1,7 +1,8 @@
using Bit.Core.Models.Data;
using Bit.Core.Services;
using Microsoft.Extensions.DependencyInjection;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class EventRepositoryHandler(
[FromKeyedServices("persistent")] IEventWriteService eventWriteService)

View file

@ -1,7 +1,7 @@
using System.Linq.Expressions;
using Bit.Core.Models.Data;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public delegate bool IntegrationFilter(EventMessage message, object? value);

View file

@ -1,8 +1,8 @@
using System.Text.Json;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Models.Data;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class IntegrationFilterService : IIntegrationFilterService
{

View file

@ -1,9 +1,9 @@
using System.Text.Json;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Enums;
using Bit.Core.Dirt.Entities;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.AdminConsole.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class OrganizationIntegrationConfigurationValidator : IOrganizationIntegrationConfigurationValidator
{

View file

@ -1,10 +1,10 @@
using System.Text;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Microsoft.Extensions.Logging;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class RabbitMqEventListenerService<TConfiguration> : EventLoggingListenerService
where TConfiguration : IEventListenerConfiguration
@ -69,6 +69,6 @@ public class RabbitMqEventListenerService<TConfiguration> : EventLoggingListener
private static ILogger CreateLogger(ILoggerFactory loggerFactory, TConfiguration configuration)
{
return loggerFactory.CreateLogger(
categoryName: $"Bit.Core.Services.RabbitMqEventListenerService.{configuration.EventQueueName}");
categoryName: $"Bit.Core.Dirt.Services.Implementations.RabbitMqEventListenerService.{configuration.EventQueueName}");
}
}

View file

@ -1,12 +1,12 @@
using System.Text;
using System.Text.Json;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class RabbitMqIntegrationListenerService<TConfiguration> : BackgroundService
where TConfiguration : IIntegrationListenerConfiguration
@ -37,7 +37,7 @@ public class RabbitMqIntegrationListenerService<TConfiguration> : BackgroundServ
_timeProvider = timeProvider;
_lazyChannel = new Lazy<Task<IChannel>>(() => _rabbitMqService.CreateChannelAsync());
_logger = loggerFactory.CreateLogger(
categoryName: $"Bit.Core.Services.RabbitMqIntegrationListenerService.{configuration.IntegrationQueueName}"); ;
categoryName: $"Bit.Core.Dirt.Services.Implementations.RabbitMqIntegrationListenerService.{configuration.IntegrationQueueName}"); ;
}
public override async Task StartAsync(CancellationToken cancellationToken)

View file

@ -1,11 +1,11 @@
using System.Text;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Enums;
using Bit.Core.Dirt.Enums;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Settings;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class RabbitMqService : IRabbitMqService
{

View file

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class SlackIntegrationHandler(
ISlackService slackService)

View file

@ -2,11 +2,11 @@
using System.Net.Http.Json;
using System.Text.Json;
using System.Web;
using Bit.Core.Models.Slack;
using Bit.Core.Dirt.Models.Data.Slack;
using Bit.Core.Settings;
using Microsoft.Extensions.Logging;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class SlackService(
IHttpClientFactory httpClientFactory,

View file

@ -1,8 +1,8 @@
using System.Text.Json;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Microsoft.Rest;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class TeamsIntegrationHandler(
ITeamsService teamsService)

View file

@ -2,9 +2,9 @@
using System.Net.Http.Json;
using System.Text.Json;
using System.Web;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Models.Teams;
using Bit.Core.Repositories;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.Teams;
using Bit.Core.Dirt.Repositories;
using Bit.Core.Settings;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Teams;
@ -12,9 +12,9 @@ using Microsoft.Bot.Connector;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.Bot.Schema;
using Microsoft.Extensions.Logging;
using TeamInfo = Bit.Core.Models.Teams.TeamInfo;
using TeamInfo = Bit.Core.Dirt.Models.Data.Teams.TeamInfo;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class TeamsService(
IHttpClientFactory httpClientFactory,

View file

@ -1,8 +1,8 @@
using System.Net.Http.Headers;
using System.Text;
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
using Bit.Core.Dirt.Models.Data.EventIntegrations;
namespace Bit.Core.Services;
namespace Bit.Core.Dirt.Services.Implementations;
public class WebhookIntegrationHandler(
IHttpClientFactory httpClientFactory,

View file

@ -1,7 +1,6 @@
using Bit.Core.Models.Slack;
using Bit.Core.Services;
using Bit.Core.Dirt.Models.Data.Slack;
namespace Bit.Core.AdminConsole.Services.NoopImplementations;
namespace Bit.Core.Dirt.Services.NoopImplementations;
public class NoopSlackService : ISlackService
{

View file

@ -1,7 +1,6 @@
using Bit.Core.Models.Teams;
using Bit.Core.Services;
using Bit.Core.Dirt.Models.Data.Teams;
namespace Bit.Core.AdminConsole.Services.NoopImplementations;
namespace Bit.Core.Dirt.Services.NoopImplementations;
public class NoopTeamsService : ITeamsService
{

Some files were not shown because too many files have changed in this diff Show more