From 66a2ccabd58f72f54b1af54655ba2dc3de599e74 Mon Sep 17 00:00:00 2001 From: XShine555 Date: Sat, 30 May 2026 03:30:32 +0200 Subject: [PATCH] Proxy --- WebApi/AppSettings.Development.json | 10 ++++++++++ WebApi/AppSettings.json | 10 ++++++++++ WebApi/Endpoints/TrackEndpoints.cs | 15 +++++++++++++++ WebApi/Extensions/ServiceCollectionExtensions.cs | 2 ++ 4 files changed, 37 insertions(+) diff --git a/WebApi/AppSettings.Development.json b/WebApi/AppSettings.Development.json index 1cf5284..e06a6a9 100644 --- a/WebApi/AppSettings.Development.json +++ b/WebApi/AppSettings.Development.json @@ -33,6 +33,16 @@ "ApplicationStorage": { "Bucket": "webapi-storage" }, + "StreamGateway": { + "PublicBaseUrl": "http://localhost:8081", + "ManifestFileName": "manifest.mpd" + }, + "StreamTicket": { + "PrivateKeyPath": "D:\\weed\\stream_private.pem", + "Audience": "media-gateway", + "Issuer": "musify-webapi", + "TicketTtlSeconds": 3600 + }, "OpenTelemetry": { "OtlpEndpoint": "http://localhost:4317" }, diff --git a/WebApi/AppSettings.json b/WebApi/AppSettings.json index 738056d..d46af70 100644 --- a/WebApi/AppSettings.json +++ b/WebApi/AppSettings.json @@ -34,6 +34,16 @@ "ApplicationStorage": { "Bucket": "" }, + "StreamGateway": { + "PublicBaseUrl": "", + "ManifestFileName": "manifest.mpd" + }, + "StreamTicket": { + "PrivateKeyPath": "", + "Audience": "media-gateway", + "Issuer": "musify-webapi", + "TicketTtlSeconds": 3600 + }, "OpenTelemetry": { "OtlpEndpoint": "" }, diff --git a/WebApi/Endpoints/TrackEndpoints.cs b/WebApi/Endpoints/TrackEndpoints.cs index 2ed4835..4cd9839 100644 --- a/WebApi/Endpoints/TrackEndpoints.cs +++ b/WebApi/Endpoints/TrackEndpoints.cs @@ -23,6 +23,11 @@ public static class TrackEndpoints .WithName("GetTrackById") .WithSummary("Get A Track By Id."); + group.MapGet("/{id}/stream", GetTrackStream) + .WithName("GetTrackStream") + .WithSummary("Get A Streaming Manifest URL And Ticket For A Track.") + .RequireAuthorization(); + group.MapGet("/users/{userId}", GetTracksByUserId) .WithName("GetTracksByUserId") .WithSummary("Get Paginated Tracks For A User."); @@ -66,6 +71,16 @@ public static class TrackEndpoints return result.ToHttpResult(); } + private static async Task GetTrackStream( + IMediator mediator, + CurrentUser currentUser, + Guid id, + CancellationToken cancellationToken) + { + var result = await mediator.Send(new GetTrackStreamQuery(id, currentUser.RequiredId), cancellationToken); + return result.ToHttpResult(); + } + private static async Task GetTracksByUserId( IMediator mediator, Guid userId, diff --git a/WebApi/Extensions/ServiceCollectionExtensions.cs b/WebApi/Extensions/ServiceCollectionExtensions.cs index a5d8df8..cf1f816 100644 --- a/WebApi/Extensions/ServiceCollectionExtensions.cs +++ b/WebApi/Extensions/ServiceCollectionExtensions.cs @@ -18,7 +18,9 @@ public static class ServiceCollectionExtensions services.AddApplicationStorageConfiguration(configuration); services.AddPlayListConfiguration(configuration); services.AddTrackConfiguration(configuration); + services.AddStreamGatewayConfiguration(configuration); services.AddStorageService(configuration); + services.AddStreamTicketService(configuration); services.AddUploadIntentConfiguration(configuration); services.AddMassTransitClient(configuration); services.AddMediator();