chore: group .NET into backend/ and drop non-.NET test artifacts
- Move all .NET (6 projects, solution, Directory.*.props, nuget.config) into backend/ so the monorepo root can host non-.NET projects later - Remove throwaway test artifacts: player.html, pl.json - Trim dead Flutter rules from .gitignore Build from backend/Musify.slnx: 0 warnings, 0 errors.
This commit is contained in:
+66
@@ -0,0 +1,66 @@
|
||||
using MassTransit;
|
||||
using MassTransit.Courier.Contracts;
|
||||
using Musify.Application.Events;
|
||||
using Musify.Infrastructure.Configuration;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Audio;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Files;
|
||||
using Musify.Infrastructure.MassTransit.Activities;
|
||||
using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
public class AudioWorkflowRoutingSlipBuilder(WorkerConfiguration workerConfiguration)
|
||||
{
|
||||
public RoutingSlipBuilder Build(UpdateTrackAudioEvent message, Guid? correlationId)
|
||||
{
|
||||
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
|
||||
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
|
||||
|
||||
routingSlipBuilder.AddSubscription(
|
||||
EndpointHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
|
||||
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.GenerateAudioWorkflowPaths,
|
||||
EndpointHelper.BuildExecuteActivityUri(GenerateAudioWorkflowPathsActivity.ExecuteEndpointName),
|
||||
new GenerateAudioWorkflowPathsArguments(
|
||||
message.TrackId,
|
||||
workerConfiguration.Routes.TemporaryFilesDirectory,
|
||||
message.SourceKey));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.DownloadFile,
|
||||
EndpointHelper.BuildExecuteActivityUri(DownloadFileFromBucketActivity.ExecuteEndpointName),
|
||||
new DownloadFileFromBucketArguments(
|
||||
message.SourceBucket,
|
||||
message.SourceKey,
|
||||
RoutingSlipVariableNames.Audio.SourceFilePath));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.TranscodeAudio,
|
||||
EndpointHelper.BuildExecuteActivityUri(TranscodeAudioActivity.ExecuteEndpointName),
|
||||
new TranscodeAudioArguments(
|
||||
message.TrackId,
|
||||
RoutingSlipVariableNames.Audio.SourceFilePath,
|
||||
RoutingSlipVariableNames.Workflow.TemporalDirectory));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.TransferFiles,
|
||||
EndpointHelper.BuildExecuteActivityUri(TransferFilesToBucketActivity.ExecuteEndpointName),
|
||||
new TransferFilesToBucketArguments(
|
||||
message.DestinationBucket,
|
||||
RoutingSlipVariableNames.Audio.TranscodedDirectory,
|
||||
message.DestinationFolderKey));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.UpdateTrackAudio,
|
||||
EndpointHelper.BuildExecuteActivityUri(UpdateTrackAudioActivity.ExecuteEndpointName),
|
||||
new UpdateTrackAudioArguments(
|
||||
message.TrackId,
|
||||
message.DestinationFolderKey));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
using MassTransit;
|
||||
using MassTransit.Courier.Contracts;
|
||||
using Musify.Application.Events;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Files;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Tracks;
|
||||
using Musify.Infrastructure.MassTransit.Activities.UploadIntents;
|
||||
using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
public class CreateTrackRoutingSlipBuilder
|
||||
{
|
||||
public RoutingSlipBuilder Build(CreateTrackResourcesEvent message, Guid? correlationId)
|
||||
{
|
||||
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
|
||||
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
|
||||
|
||||
routingSlipBuilder.AddSubscription(
|
||||
EndpointHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
|
||||
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.CopyPictureToFinal,
|
||||
EndpointHelper.BuildExecuteActivityUri(CopyFileInBucketActivity.ExecuteEndpointName),
|
||||
new CopyFileInBucketArguments(
|
||||
message.Bucket,
|
||||
message.PictureSourceKey,
|
||||
message.Bucket,
|
||||
message.PictureDestinationKey));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.CopyAudioToFinal,
|
||||
EndpointHelper.BuildExecuteActivityUri(CopyFileInBucketActivity.ExecuteEndpointName),
|
||||
new CopyFileInBucketArguments(
|
||||
message.Bucket,
|
||||
message.AudioSourceKey,
|
||||
message.Bucket,
|
||||
message.AudioDestinationKey));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.ConsumeUploadIntents,
|
||||
EndpointHelper.BuildExecuteActivityUri(ConsumeUploadIntentsActivity.ExecuteEndpointName),
|
||||
new ConsumeUploadIntentsArguments(
|
||||
[message.PictureIntentId, message.AudioIntentId]));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.PublishTrackProcessingEvents,
|
||||
EndpointHelper.BuildExecuteActivityUri(PublishTrackProcessingEventsActivity.ExecuteEndpointName),
|
||||
new PublishTrackProcessingEventsArguments(
|
||||
message.TrackId,
|
||||
message.Bucket,
|
||||
message.PictureDestinationKey,
|
||||
message.AudioDestinationKey,
|
||||
message.AudioProcessedFolderKey,
|
||||
message.Small,
|
||||
message.Medium,
|
||||
message.Large));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
}
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
using MassTransit;
|
||||
using MassTransit.Courier.Contracts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Musify.Application.Configuration;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Files;
|
||||
using Musify.Infrastructure.MassTransit.Activities.PlayLists;
|
||||
using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
using Musify.Application.Contracts;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
public class DeletePlayListRoutingSlipBuilder(
|
||||
IDatabase database,
|
||||
PlayListConfiguration playListConfiguration,
|
||||
ApplicationStorageConfiguration storageConfiguration)
|
||||
{
|
||||
public async Task<RoutingSlipBuilder> BuildAsync(
|
||||
Guid playListId,
|
||||
long userId,
|
||||
Guid? correlationId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
|
||||
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
|
||||
|
||||
routingSlipBuilder.AddSubscription(
|
||||
EndpointHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
|
||||
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
|
||||
|
||||
var playList = await database.PlayLists
|
||||
.AsNoTracking()
|
||||
.SingleOrDefaultAsync(p => p.Id == playListId, cancellationToken);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.MarkPlayListAsRemoving,
|
||||
EndpointHelper.BuildExecuteActivityUri(MarkPlayListAsRemovingActivity.ExecuteEndpointName),
|
||||
new MarkPlayListAsRemovingArguments(playListId));
|
||||
|
||||
if (playList is not null)
|
||||
{
|
||||
var bucket = storageConfiguration.Bucket;
|
||||
var routes = playListConfiguration.Routes;
|
||||
|
||||
if (playList.OriginalPictureName != routes.PresetOriginalPicture)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemovePlayListOriginalPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
routes.BuildOriginalPicturePath(userId, playList.OriginalPictureName)));
|
||||
}
|
||||
|
||||
if (playList.SmallPictureName != routes.PresetSmallPicture)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemovePlayListSmallPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
routes.BuildSmallPicturePath(playList.SmallPictureName)));
|
||||
}
|
||||
|
||||
if (playList.MediumPictureName != routes.PresetMediumPicture)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemovePlayListMediumPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
routes.BuildMediumPicturePath(playList.MediumPictureName)));
|
||||
}
|
||||
|
||||
if (playList.LargePictureName != routes.PresetLargePicture)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemovePlayListLargePicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
routes.BuildLargePicturePath(playList.LargePictureName)));
|
||||
}
|
||||
}
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.DeletePlayListFromDb,
|
||||
EndpointHelper.BuildExecuteActivityUri(DeletePlayListFromDbActivity.ExecuteEndpointName),
|
||||
new DeletePlayListFromDbArguments(playListId));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
}
|
||||
}
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
using MassTransit;
|
||||
using MassTransit.Courier.Contracts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Musify.Application.Configuration;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Files;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Tracks;
|
||||
using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
using Musify.Application.Contracts;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
public class DeleteTrackRoutingSlipBuilder(
|
||||
IDatabase database,
|
||||
TrackConfiguration trackConfiguration,
|
||||
ApplicationStorageConfiguration storageConfiguration)
|
||||
{
|
||||
public async Task<RoutingSlipBuilder> BuildAsync(
|
||||
Guid trackId,
|
||||
long userId,
|
||||
Guid? correlationId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
|
||||
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
|
||||
|
||||
routingSlipBuilder.AddSubscription(
|
||||
EndpointHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
|
||||
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
|
||||
|
||||
var track = await database.Tracks
|
||||
.AsNoTracking()
|
||||
.SingleOrDefaultAsync(t => t.Id == trackId, cancellationToken);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.MarkTrackAsRemoving,
|
||||
EndpointHelper.BuildExecuteActivityUri(MarkTrackAsRemovingActivity.ExecuteEndpointName),
|
||||
new MarkTrackAsRemovingArguments(trackId));
|
||||
|
||||
if (track is not null)
|
||||
{
|
||||
var bucket = storageConfiguration.Bucket;
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackOriginalPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildOriginalPicturePath(userId, track.OriginalPictureName)));
|
||||
|
||||
if (track.IsPicturesProcessed)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackSmallPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildSmallPicturePath(track.SmallPictureName)));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackMediumPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildMediumPicturePath(track.MediumPictureName)));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackLargePicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildLargePicturePath(track.LargePictureName)));
|
||||
}
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackOriginalAudio,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildOriginalAudioPath(userId, track.OriginalAudioName)));
|
||||
|
||||
if (track.IsAudioProcessed)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackProcessedAudio,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildProcessedAudioPath(track.AudioFolderName)));
|
||||
}
|
||||
}
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.DeleteTrackFromDb,
|
||||
EndpointHelper.BuildExecuteActivityUri(DeleteTrackFromDbActivity.ExecuteEndpointName),
|
||||
new DeleteTrackFromDbArguments(trackId));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
}
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
using MassTransit;
|
||||
using MassTransit.Courier.Contracts;
|
||||
using Musify.Application.Shared;
|
||||
using Musify.Application.Events;
|
||||
using Musify.Infrastructure.Configuration;
|
||||
using Musify.Infrastructure.MassTransit.Activities;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Files;
|
||||
using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
public class PictureWorkflowRoutingSlipBuilder(WorkerConfiguration workerConfiguration)
|
||||
{
|
||||
public RoutingSlipBuilder Build(UpdateTrackPictureEvent message, Guid? correlationId)
|
||||
{
|
||||
var routingSlipBuilder = BuildPictureWorkflow(
|
||||
message.Bucket,
|
||||
message.SourceKey,
|
||||
message.Small,
|
||||
message.Medium,
|
||||
message.Large,
|
||||
correlationId);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.UpdateTrackPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(UpdateTrackPictureActivity.ExecuteEndpointName),
|
||||
new UpdateTrackPictureArguments(
|
||||
message.TrackId,
|
||||
message.SourceKey,
|
||||
RoutingSlipVariableNames.Picture.SmallResizedFilePath,
|
||||
RoutingSlipVariableNames.Picture.MediumResizedFilePath,
|
||||
RoutingSlipVariableNames.Picture.LargeResizedFilePath));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
|
||||
public RoutingSlipBuilder Build(UpdatePlayListPictureEvent message, Guid? correlationId)
|
||||
{
|
||||
var routingSlipBuilder = BuildPictureWorkflow(
|
||||
message.Bucket,
|
||||
message.SourceKey,
|
||||
message.Small,
|
||||
message.Medium,
|
||||
message.Large,
|
||||
correlationId);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.UpdatePlayListPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(UpdatePlayListPictureActivity.ExecuteEndpointName),
|
||||
new UpdatePlayListPictureArguments(
|
||||
message.PlayListId,
|
||||
message.SourceKey,
|
||||
RoutingSlipVariableNames.Picture.SmallResizedFilePath,
|
||||
RoutingSlipVariableNames.Picture.MediumResizedFilePath,
|
||||
RoutingSlipVariableNames.Picture.LargeResizedFilePath));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
|
||||
RoutingSlipBuilder BuildPictureWorkflow(
|
||||
string bucket,
|
||||
string sourceKey,
|
||||
ImageSize small,
|
||||
ImageSize medium,
|
||||
ImageSize large,
|
||||
Guid? correlationId)
|
||||
{
|
||||
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
|
||||
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
|
||||
|
||||
routingSlipBuilder.AddSubscription(
|
||||
EndpointHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
|
||||
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.GeneratePictureWorkflowPaths,
|
||||
EndpointHelper.BuildExecuteActivityUri(GeneratePictureWorkflowPathsActivity.ExecuteEndpointName),
|
||||
new GeneratePictureWorkflowPathsArguments(
|
||||
workerConfiguration.Routes.TemporaryFilesDirectory,
|
||||
sourceKey));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.DownloadFile,
|
||||
EndpointHelper.BuildExecuteActivityUri(DownloadFileFromBucketActivity.ExecuteEndpointName),
|
||||
new DownloadFileFromBucketArguments(
|
||||
bucket,
|
||||
sourceKey,
|
||||
RoutingSlipVariableNames.Picture.OriginalFilePath));
|
||||
|
||||
AddResizeActivity(
|
||||
routingSlipBuilder,
|
||||
ActivityNames.ResizeSmall,
|
||||
ActivityNames.UploadSmall,
|
||||
bucket,
|
||||
RoutingSlipVariableNames.Picture.SmallResizedFilePath,
|
||||
small);
|
||||
|
||||
AddResizeActivity(
|
||||
routingSlipBuilder,
|
||||
ActivityNames.ResizeMedium,
|
||||
ActivityNames.UploadMedium,
|
||||
bucket,
|
||||
RoutingSlipVariableNames.Picture.MediumResizedFilePath,
|
||||
medium);
|
||||
|
||||
AddResizeActivity(
|
||||
routingSlipBuilder,
|
||||
ActivityNames.ResizeLarge,
|
||||
ActivityNames.UploadLarge,
|
||||
bucket,
|
||||
RoutingSlipVariableNames.Picture.LargeResizedFilePath,
|
||||
large);
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
|
||||
static void AddResizeActivity(
|
||||
RoutingSlipBuilder routingSlipBuilder,
|
||||
string resizeActivityName,
|
||||
string uploadActivityName,
|
||||
string bucketName,
|
||||
string destinationFilePathVariableName,
|
||||
ImageSize imageSize)
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
resizeActivityName,
|
||||
EndpointHelper.BuildExecuteActivityUri(ResizePictureActivity.ExecuteEndpointName),
|
||||
new ResizePictureLocalArguments(
|
||||
RoutingSlipVariableNames.Picture.OriginalFilePath,
|
||||
destinationFilePathVariableName,
|
||||
imageSize.Width,
|
||||
imageSize.Height));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
uploadActivityName,
|
||||
EndpointHelper.BuildExecuteActivityUri(UploadFileToBucketActivity.ExecuteEndpointName),
|
||||
new UploadFileToBucketArguments(
|
||||
destinationFilePathVariableName,
|
||||
bucketName,
|
||||
imageSize.SavePath));
|
||||
}
|
||||
}
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
using MassTransit;
|
||||
using MassTransit.Courier.Contracts;
|
||||
using Musify.Application.Shared;
|
||||
using Musify.Application.Events;
|
||||
using Musify.Infrastructure.MassTransit.Activities.Files;
|
||||
using Musify.Infrastructure.MassTransit.Activities.PlayLists;
|
||||
using Musify.Infrastructure.MassTransit.Activities.UploadIntents;
|
||||
using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
public class PlayListPictureSourceRoutingSlipBuilder
|
||||
{
|
||||
public RoutingSlipBuilder Build(CreatePlayListResourcesEvent message, Guid? correlationId)
|
||||
=> BuildSlip(
|
||||
message.PlayListId,
|
||||
message.PictureIntentId,
|
||||
message.Bucket,
|
||||
message.PictureSourceKey,
|
||||
message.PictureDestinationKey,
|
||||
message.Small,
|
||||
message.Medium,
|
||||
message.Large,
|
||||
correlationId);
|
||||
|
||||
public RoutingSlipBuilder Build(UpdatePlayListPictureSourceEvent message, Guid? correlationId)
|
||||
=> BuildSlip(
|
||||
message.PlayListId,
|
||||
message.PictureIntentId,
|
||||
message.Bucket,
|
||||
message.PictureSourceKey,
|
||||
message.PictureDestinationKey,
|
||||
message.Small,
|
||||
message.Medium,
|
||||
message.Large,
|
||||
correlationId);
|
||||
|
||||
static RoutingSlipBuilder BuildSlip(
|
||||
Guid playListId,
|
||||
Guid pictureIntentId,
|
||||
string bucket,
|
||||
string pictureSourceKey,
|
||||
string pictureDestinationKey,
|
||||
ImageSize small,
|
||||
ImageSize medium,
|
||||
ImageSize large,
|
||||
Guid? correlationId)
|
||||
{
|
||||
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
|
||||
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
|
||||
|
||||
routingSlipBuilder.AddSubscription(
|
||||
EndpointHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
|
||||
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.CopyPictureToFinal,
|
||||
EndpointHelper.BuildExecuteActivityUri(CopyFileInBucketActivity.ExecuteEndpointName),
|
||||
new CopyFileInBucketArguments(
|
||||
bucket,
|
||||
pictureSourceKey,
|
||||
bucket,
|
||||
pictureDestinationKey));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.ConsumeUploadIntents,
|
||||
EndpointHelper.BuildExecuteActivityUri(ConsumeUploadIntentsActivity.ExecuteEndpointName),
|
||||
new ConsumeUploadIntentsArguments([pictureIntentId]));
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.PublishPlayListPictureProcessingEvent,
|
||||
EndpointHelper.BuildExecuteActivityUri(PublishPlayListPictureProcessingEventActivity.ExecuteEndpointName),
|
||||
new PublishPlayListPictureProcessingEventArguments(
|
||||
playListId,
|
||||
bucket,
|
||||
pictureDestinationKey,
|
||||
small,
|
||||
medium,
|
||||
large));
|
||||
|
||||
return routingSlipBuilder;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user