Files
Musify/Infrastructure/Messaging/Consumers/TranscodeAudioFromTrackConsumer.cs
T
2026-03-22 04:02:30 +01:00

54 lines
2.2 KiB
C#

using MassTransit;
using Musify.Application.Events;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.Messaging.Activities;
using Musify.Infrastructure.Messaging.Activities.Arguments;
namespace Musify.Infrastructure.Messaging.Consumers
{
public class TranscodeAudioFromTrackConsumer(IBus bus, AudioTranscoderConfiguration audioTranscoderConfiguration)
: IConsumer<TranscodeAudioFromTrackEvent>
{
public const string QueueName = "Transcode-Audio-From-Track";
public async Task Consume(ConsumeContext<TranscodeAudioFromTrackEvent> consumeContext)
{
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
var folderName = Guid.NewGuid().ToString();
var workingDirectory = Path.Combine("D:\\tempsFilesDev\\");
routingSlipBuilder.AddActivity(
"DownloadFile",
BuildExecuteUri(DownloadFileFromBucketActivity.ExecuteEndpointName),
new DownloadFileFromBucketArguments(
consumeContext.Message.SourceBucketName,
consumeContext.Message.SourceKeyName,
workingDirectory)
);
var fileName = Path.GetFileName(consumeContext.Message.SourceKeyName);
routingSlipBuilder.AddActivity(
"TranscodeAudio",
BuildExecuteUri(TranscodeDashAudioActivity.ExecuteEndpointName),
new TranscodeDashAudioArguments(
$"D:\\tempsFilesDev\\{fileName}",
"D:\\tempsFilesDev\\")
);
routingSlipBuilder.AddActivity(
"UploadFile",
BuildExecuteUri(TransferFilesToBucket.ExecuteEndpointName),
new TransferFilesToBucketArguments(
workingDirectory,
consumeContext.Message.DestinationBucketName,
consumeContext.Message.DestinationKeyName)
);
var routingSlip = routingSlipBuilder.Build();
await bus.Execute(routingSlip);
}
static Uri BuildExecuteUri(string endpointName) => new($"queue:{endpointName}_execute");
}
}