diff --git a/WebApi/AppSettings.Development.json b/WebApi/AppSettings.Development.json
index 16ecf29..db29d78 100644
--- a/WebApi/AppSettings.Development.json
+++ b/WebApi/AppSettings.Development.json
@@ -5,13 +5,30 @@
"Microsoft.AspNetCore": "Warning"
}
},
- "ConnectionStrings": {
- "Default": ""
+ "Database": {
+ "ConnectionString": "Host=localhost;Port=59000;Database=musify_db;Username=postgres;Password=postgres"
},
- "Storage": {
- "BucketName": "",
+ "MassTransit": {
+ "Address": "rabbitmq://127.0.0.1:5672",
+ "Username": "guest",
+ "Password": "guest"
+ },
+ "InfrastructureStorage": {
+ "Address": "http://localhost:8333",
+ "AccessKey": "admin_access_key",
+ "SecretAccessKey": "admin_secret_key",
+ "ForcePathStyle": true,
+ "UseHttp": true
+ },
+ "ApplicationStorage": {
+ "Bucket": "webapi-storage"
+ },
+ "OpenTelemetry": {
+ "OtlpEndpoint": "http://localhost:4317"
+ },
+ "Workers": {
"Routes": {
- "Uploads": ""
+ "TemporaryFilesDirectory": "D:\\tempsFilesDev"
}
}
-}
\ No newline at end of file
+}
diff --git a/WebApi/AppSettings.json b/WebApi/AppSettings.json
index 721a2b5..f80dc37 100644
--- a/WebApi/AppSettings.json
+++ b/WebApi/AppSettings.json
@@ -6,11 +6,30 @@
}
},
"AllowedHosts": "*",
- "ConnectionStrings": {
- "Default": ""
+ "Database": {
+ "ConnectionString": ""
},
- "PlayListConfiguration": {
+ "MassTransit": {
+ "Address": "",
+ "Username": "",
+ "Password": ""
+ },
+ "InfrastructureStorage": {
+ "Address": "",
+ "AccessKey": "",
+ "SecretAccessKey": "",
+ "ForcePathStyle": false,
+ "UseHttp": false
+ },
+ "ApplicationStorage": {
+ "Bucket": ""
+ },
+ "OpenTelemetry": {
+ "OtlpEndpoint": ""
+ },
+ "PlayList": {
"Routes": {
+ "UploadsFolder": "uploads",
"ParentFolders": "PlayLists",
"OriginalPicturesFolder": "OriginalPictures",
"SmallPicturesFolder": "SmallPictures",
@@ -30,35 +49,9 @@
"LargePictureHeight": 512
}
},
- "Keycloak": {
- "Address": "1",
- "Realm": "1",
- "Username": "1",
- "Password": "1"
- },
- "Database": {
- "ConnectionString": "Host=localhost;Port=59000;Database=musify_db;Username=postgres;Password=postgres"
- },
- "ApplicationStorage": {
- "BucketName": "webapi-storage"
- },
- "InfrastructureStorage": {
- "Address": "http://localhost:8333",
- "AccessKey": "admin_access_key",
- "SecretAccessKey": "admin_secret_key",
- "ForcePathStyle": true,
- "UseHttp": true
- },
- "Messaging": {
- "Address": "rabbitmq://127.0.0.1:5672",
- "Username": "guest",
- "Password": "guest"
- },
- "OpenTelemetry": {
- "OtlpEndpoint": "http://localhost:4317"
- },
- "TrackConfiguration": {
+ "Track": {
"Routes": {
+ "UploadsFolder": "uploads",
"ParentFolder": "Tracks",
"OriginalPicturesFolder": "OriginalPictures",
"SmallPicturesFolder": "SmallPictures",
@@ -81,14 +74,37 @@
}
},
"AudioTranscoder": {
- "Routes": {
- "WorkingDirectory": "D:\\tempsFilesDev"
- },
- "TranscodingTimeout": "00:05:00"
+ "TranscodingTimeout": "00:05:00",
+ "Ffmpeg": {
+ "ExecutableName": "ffmpeg",
+ "ManifestFileName": "manifest.mpd",
+ "AudioCodec": "aac",
+ "AudioBitrate": "128k",
+ "AudioChannels": 2,
+ "AudioSampleRate": 48000,
+ "AudioProfile": "aac_low",
+ "SegmentDurationSeconds": 4,
+ "InitSegmentName": "init-stream$RepresentationID$.m4s",
+ "MediaSegmentName": "chunk-stream$RepresentationID$-$Number$.m4s",
+ "AdditionalArguments": ""
+ }
+ },
+ "UploadIntent": {
+ "UploadUrlExpiresInSeconds": 120,
+ "MaxActiveUploadIntentsPerUser": 5,
+ "MaxActiveUploadBytesPerUser": 209715200,
+ "MaxUploadBytes": 104857600,
+ "DefaultExpectedPictureSizeBytes": 10485760,
+ "DefaultExpectedAudioSizeBytes": 104857600,
+ "ExpirationJobIntervalSeconds": 300,
+ "ExpiredIntentsRetentionDays": 7,
+ "TempRootPrefix": "temp",
+ "TempUploadsRetentionDays": 3,
+ "TempCleanupJobIntervalSeconds": 3600
},
"Workers": {
"Routes": {
"TemporaryFilesDirectory": ""
}
}
-}
\ No newline at end of file
+}
diff --git a/WebApi/Extensions/ResultHttpExtensions.cs b/WebApi/Extensions/ResultHttpExtensions.cs
index 7b8a939..6b3bb64 100644
--- a/WebApi/Extensions/ResultHttpExtensions.cs
+++ b/WebApi/Extensions/ResultHttpExtensions.cs
@@ -1,4 +1,5 @@
using Ardalis.Result;
+using IResult = Microsoft.AspNetCore.Http.IResult;
namespace WebApi.Extensions;
diff --git a/WebApi/Extensions/ServiceCollectionExtensions.cs b/WebApi/Extensions/ServiceCollectionExtensions.cs
index c152a47..91a7c41 100644
--- a/WebApi/Extensions/ServiceCollectionExtensions.cs
+++ b/WebApi/Extensions/ServiceCollectionExtensions.cs
@@ -3,6 +3,7 @@ using Mediator;
using Musify.Application;
using Musify.Infrastructure.MassTransit;
using Musify.Infrastructure.Persistence;
+using Musify.Application.Configuration;
using Musify.Infrastructure.Services;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
@@ -16,10 +17,12 @@ public static class ServiceCollectionExtensions
{
public static IServiceCollection AddApplicationServices(this IServiceCollection services, IConfiguration configuration)
{
- services.AddApplicationConfigurations(configuration);
services.AddDatabase(configuration);
- services.AddKeycloakService(configuration);
+ services.AddApplicationStorageConfiguration(configuration);
+ services.AddPlayListConfiguration(configuration);
+ services.AddTrackConfiguration(configuration);
services.AddStorageService(configuration);
+ services.AddUploadIntentConfiguration(configuration);
services.AddMassTransitClient(configuration);
services.AddMediator();
services.AddOpenApi();
diff --git a/WebApi/WebApi.csproj b/WebApi/WebApi.csproj
index 6034122..b1850e3 100644
--- a/WebApi/WebApi.csproj
+++ b/WebApi/WebApi.csproj
@@ -11,8 +11,9 @@
-
-
+
+
+