using MassTransit; using MassTransit.Courier.Contracts; using Microsoft.Extensions.Logging; using Musify.Infrastructure.MassTransit.RoutingSlip; namespace Musify.Infrastructure.MassTransit.Consumers; public class RoutingSlipCleanUpConsumer( ILogger logger) : IConsumer, IConsumer { public const string QueueName = "routing-slip-clean-up"; public Task Consume(ConsumeContext context) => DeleteFolder(context.Message.Variables); public Task Consume(ConsumeContext context) => DeleteFolder(context.Message.Variables); private Task DeleteFolder(IDictionary variables) { if (!variables.TryGetValue(RoutingSlipVariableNames.Workflow.TemporalDirectory, out var pathObject)) return Task.CompletedTask; var pathString = pathObject.ToString(); if (string.IsNullOrEmpty(pathString)) return Task.CompletedTask; try { Directory.Delete(pathString, recursive: true); logger.LogInformation("Deleted temporal directory at path {Path}", pathString); } catch (DirectoryNotFoundException) { logger.LogWarning("Temporal directory at path {Path} was not found for deletion", pathString); } return Task.CompletedTask; } }