This commit is contained in:
2026-03-23 16:53:23 +01:00
parent 0b471db6aa
commit 0aa6280643
11 changed files with 40 additions and 35 deletions
@@ -49,15 +49,15 @@ namespace Musify.Application.Configuration
public int SmallPictureHeight { get; set; } = 128; public int SmallPictureHeight { get; set; } = 128;
[Range(1, 1024)] [Range(1, 1024)]
public int MediumPictureWidth { get; private set; } = 256; public int MediumPictureWidth { get; set; } = 256;
[Range(1, 1024)] [Range(1, 1024)]
public int MediumPictureHeight { get; private set; } = 256; public int MediumPictureHeight { get; set; } = 256;
[Range(1, 1024)] [Range(1, 1024)]
public int LargePictureWidth { get; private set; } = 512; public int LargePictureWidth { get; set; } = 512;
[Range(1, 1024)] [Range(1, 1024)]
public int LargePictureHeight { get; private set; } = 512; public int LargePictureHeight { get; set; } = 512;
} }
} }
@@ -52,15 +52,15 @@ namespace Musify.Application.Configuration
public int SmallPictureHeight { get; set; } = 128; public int SmallPictureHeight { get; set; } = 128;
[Range(1, 1024)] [Range(1, 1024)]
public int MediumPictureWidth { get; private set; } = 256; public int MediumPictureWidth { get; set; } = 256;
[Range(1, 1024)] [Range(1, 1024)]
public int MediumPictureHeight { get; private set; } = 256; public int MediumPictureHeight { get; set; } = 256;
[Range(1, 1024)] [Range(1, 1024)]
public int LargePictureWidth { get; private set; } = 512; public int LargePictureWidth { get; set; } = 512;
[Range(1, 1024)] [Range(1, 1024)]
public int LargePictureHeight { get; private set; } = 512; public int LargePictureHeight { get; set; } = 512;
} }
} }
@@ -2,21 +2,11 @@
namespace Musify.Infrastructure.Configuration namespace Musify.Infrastructure.Configuration
{ {
#pragma warning disable CS8618
public class AudioTranscoderConfiguration public class AudioTranscoderConfiguration
{ {
public const string SectionName = "AudioTranscoder"; public const string SectionName = "AudioTranscoder";
[Required]
public AudioTranscoderRoutes Routes { get; set; } = new AudioTranscoderRoutes();
[Required] [Required]
public TimeSpan TranscodingTimeout { get; set; } = TimeSpan.FromMinutes(5); public TimeSpan TranscodingTimeout { get; set; } = TimeSpan.FromMinutes(5);
} }
public class AudioTranscoderRoutes
{
[Required]
public string WorkingDirectory { get; set; }
}
} }
@@ -14,7 +14,8 @@ namespace Musify.Infrastructure.Configuration
.AddValidatedConfiguration<InfrastructureStorageConfiguration>(configuration, InfrastructureStorageConfiguration.SectionName) .AddValidatedConfiguration<InfrastructureStorageConfiguration>(configuration, InfrastructureStorageConfiguration.SectionName)
.AddValidatedConfiguration<MessagingConfiguration>(configuration, MessagingConfiguration.SectionName) .AddValidatedConfiguration<MessagingConfiguration>(configuration, MessagingConfiguration.SectionName)
.AddValidatedConfiguration<OpenTelemetryConfiguration>(configuration, OpenTelemetryConfiguration.SectionName) .AddValidatedConfiguration<OpenTelemetryConfiguration>(configuration, OpenTelemetryConfiguration.SectionName)
.AddValidatedConfiguration<AudioTranscoderConfiguration>(configuration, AudioTranscoderConfiguration.SectionName); .AddValidatedConfiguration<AudioTranscoderConfiguration>(configuration, AudioTranscoderConfiguration.SectionName)
.AddValidatedConfiguration<WorkerConfiguration>(configuration, WorkerConfiguration.SectionName);
return serviceDescriptors; return serviceDescriptors;
} }
@@ -2,12 +2,11 @@
namespace Musify.Infrastructure.Configuration namespace Musify.Infrastructure.Configuration
{ {
#pragma warning disable CS8618
public class DatabaseConfiguration public class DatabaseConfiguration
{ {
public const string SectionName = "Database"; public const string SectionName = "Database";
[Required] [Required]
public string ConnectionString { get; set; } public required string ConnectionString { get; set; }
} }
} }
@@ -2,21 +2,20 @@
namespace Musify.Infrastructure.Configuration namespace Musify.Infrastructure.Configuration
{ {
#pragma warning disable CS8618
public class KeycloakConfiguration public class KeycloakConfiguration
{ {
public const string SectionName = "Keycloak"; public const string SectionName = "Keycloak";
[Required] [Required]
public string BaseUrl { get; set; } public required string BaseUrl { get; set; }
[Required] [Required]
public string Realm { get; set; } public required string Realm { get; set; }
[Required] [Required]
public string Username { get; set; } public required string Username { get; set; }
[Required] [Required]
public string Password { get; set; } public required string Password { get; set; }
} }
} }
@@ -0,0 +1,18 @@
using System.ComponentModel.DataAnnotations;
namespace Musify.Infrastructure.Configuration
{
public class WorkerConfiguration
{
public const string SectionName = "Workers";
[Required]
public WorkerRoutes Routes { get; set; } = new WorkerRoutes();
}
public class WorkerRoutes
{
[Required]
public string TemporaryFilesDirectory { get; set; } = string.Empty;
}
}
@@ -2,7 +2,6 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure; using Musify.Application.Contracts.Infrastructure;
using Musify.Domain.Entities; using Musify.Domain.Entities;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Activities.Arguments;
namespace Musify.Infrastructure.Messaging.Activities namespace Musify.Infrastructure.Messaging.Activities
@@ -10,8 +9,7 @@ namespace Musify.Infrastructure.Messaging.Activities
public class DownloadFileFromBucketActivity( public class DownloadFileFromBucketActivity(
IStorageHandler storageHandler, IStorageHandler storageHandler,
ILogger<DownloadFileFromBucketActivity> logger, ILogger<DownloadFileFromBucketActivity> logger,
IProcessTrackingStore processTrackingStore, IProcessTrackingStore processTrackingStore)
AudioTranscoderConfiguration audioTranscoderConfiguration)
: IExecuteActivity<DownloadFileFromBucketArguments> : IExecuteActivity<DownloadFileFromBucketArguments>
{ {
public const string ExecuteEndpointName = "Download-File-From-Bucket"; public const string ExecuteEndpointName = "Download-File-From-Bucket";
@@ -8,7 +8,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
{ {
public class TranscodeAudioFromTrackConsumer( public class TranscodeAudioFromTrackConsumer(
IBus bus, IBus bus,
AudioTranscoderConfiguration audioTranscoderConfiguration) WorkerConfiguration workerConfiguration)
: IConsumer<TranscodeAudioFromTrackEvent> : IConsumer<TranscodeAudioFromTrackEvent>
{ {
public const string QueueName = "Transcode-Audio-From-Track"; public const string QueueName = "Transcode-Audio-From-Track";
@@ -23,7 +23,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
new DownloadFileFromBucketArguments( new DownloadFileFromBucketArguments(
consumeContext.Message.SourceBucketName, consumeContext.Message.SourceBucketName,
consumeContext.Message.SourceKeyName, consumeContext.Message.SourceKeyName,
audioTranscoderConfiguration.Routes.WorkingDirectory)); workerConfiguration.Routes.TemporaryFilesDirectory));
routingSlipBuilder.AddActivity( routingSlipBuilder.AddActivity(
"TranscodeAudio", "TranscodeAudio",
@@ -8,7 +8,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
{ {
public class UpdatePlayListPictureConsumer( public class UpdatePlayListPictureConsumer(
IBus bus, IBus bus,
AudioTranscoderConfiguration audioTranscoderConfiguration) WorkerConfiguration workerConfiguration)
: IConsumer<UpdatePlayListPictureEvent> : IConsumer<UpdatePlayListPictureEvent>
{ {
public const string QueueName = "Update-PlayList-Picture"; public const string QueueName = "Update-PlayList-Picture";
@@ -17,7 +17,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
{ {
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid()); var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
var folderName = Guid.NewGuid().ToString(); var folderName = Guid.NewGuid().ToString();
var workingDirectory = Path.Combine(audioTranscoderConfiguration.Routes.WorkingDirectory, folderName); var workingDirectory = Path.Combine(workerConfiguration.Routes.TemporaryFilesDirectory, folderName);
routingSlipBuilder.AddActivity( routingSlipBuilder.AddActivity(
"DownloadFile", "DownloadFile",
@@ -8,7 +8,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
{ {
public class UpdateTrackPictureConsumer( public class UpdateTrackPictureConsumer(
IBus bus, IBus bus,
AudioTranscoderConfiguration audioTranscoderConfiguration) WorkerConfiguration workerConfiguration)
: IConsumer<UpdateTrackPictureEvent> : IConsumer<UpdateTrackPictureEvent>
{ {
public const string QueueName = "Update-Track-Picture"; public const string QueueName = "Update-Track-Picture";
@@ -17,7 +17,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
{ {
var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid()); var routingSlipBuilder = new RoutingSlipBuilder(NewId.NextGuid());
var folderName = Guid.NewGuid().ToString(); var folderName = Guid.NewGuid().ToString();
var workingDirectory = Path.Combine(audioTranscoderConfiguration.Routes.WorkingDirectory, folderName); var workingDirectory = Path.Combine(workerConfiguration.Routes.TemporaryFilesDirectory, folderName);
routingSlipBuilder.AddActivity( routingSlipBuilder.AddActivity(
"DownloadFile", "DownloadFile",