From 19c5efaed0c3d3df850646d072a935f23c6c873e Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 28 Jan 2024 23:59:55 +0100 Subject: [PATCH] Add good error message when transcoder is not available --- back/src/Kyoo.Core/Views/Watch/ProxyApi.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/back/src/Kyoo.Core/Views/Watch/ProxyApi.cs b/back/src/Kyoo.Core/Views/Watch/ProxyApi.cs index 0f028fc2..7f4666aa 100644 --- a/back/src/Kyoo.Core/Views/Watch/ProxyApi.cs +++ b/back/src/Kyoo.Core/Views/Watch/ProxyApi.cs @@ -19,8 +19,11 @@ using System.Collections.Generic; using System.Threading.Tasks; using AspNetCore.Proxy; +using AspNetCore.Proxy.Options; using Kyoo.Abstractions.Models.Permissions; +using Kyoo.Abstractions.Models.Utils; using Kyoo.Utils; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Kyoo.Core.Api @@ -31,6 +34,12 @@ namespace Kyoo.Core.Api [ApiController] public class ProxyApi : Controller { + private readonly HttpProxyOptions _proxyOptions = HttpProxyOptionsBuilder.Instance.WithHandleFailure(async (context, exception) => + { + context.Response.StatusCode = StatusCodes.Status503ServiceUnavailable; + await context.Response.WriteAsJsonAsync(new RequestError("Service unavailable")); + }).Build(); + /// /// Transcoder proxy /// @@ -44,7 +53,7 @@ namespace Kyoo.Core.Api public Task Proxy(string rest, [FromQuery] Dictionary query) { // TODO: Use an env var to configure transcoder:7666. - return this.HttpProxyAsync($"http://transcoder:7666/{rest}" + query.ToQueryString()); + return this.HttpProxyAsync($"http://transcoder:7666/{rest}" + query.ToQueryString(), _proxyOptions); } } }