|
@@ -6,6 +6,7 @@ using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
+using MediaBrowser.Common.Configuration;
|
|
|
using MediaBrowser.Controller.Configuration;
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
using MediaBrowser.Controller.Library;
|
|
@@ -122,8 +123,15 @@ namespace MediaBrowser.Api.Subtitles
|
|
|
public int SegmentLength { get; set; }
|
|
|
}
|
|
|
|
|
|
+ [Route("/FallbackFont/Font", "GET", Summary = "Gets the fallback font file")]
|
|
|
+ [Authenticated]
|
|
|
+ public class GetFallbackFont
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
public class SubtitleService : BaseApiService
|
|
|
{
|
|
|
+ private readonly IServerConfigurationManager _serverConfigurationManager;
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
private readonly ISubtitleManager _subtitleManager;
|
|
|
private readonly ISubtitleEncoder _subtitleEncoder;
|
|
@@ -145,6 +153,7 @@ namespace MediaBrowser.Api.Subtitles
|
|
|
IAuthorizationContext authContext)
|
|
|
: base(logger, serverConfigurationManager, httpResultFactory)
|
|
|
{
|
|
|
+ _serverConfigurationManager = serverConfigurationManager;
|
|
|
_libraryManager = libraryManager;
|
|
|
_subtitleManager = subtitleManager;
|
|
|
_subtitleEncoder = subtitleEncoder;
|
|
@@ -298,5 +307,49 @@ namespace MediaBrowser.Api.Subtitles
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ public async Task<object> Get(GetFallbackFont request)
|
|
|
+ {
|
|
|
+ var fallbackFontPath = EncodingConfigurationExtensions.GetEncodingOptions(_serverConfigurationManager).FallbackFontPath;
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(fallbackFontPath))
|
|
|
+ {
|
|
|
+ var directoryService = new DirectoryService(_fileSystem);
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ // 10 Megabytes
|
|
|
+ var maxSize = 10485760;
|
|
|
+ var fontFile = directoryService.GetFile(fallbackFontPath);
|
|
|
+ var fileSize = fontFile?.Length;
|
|
|
+
|
|
|
+ if (fileSize != null && fileSize > 0)
|
|
|
+ {
|
|
|
+ Logger.LogInformation("Fallback font size is {0} Bytes", fileSize);
|
|
|
+
|
|
|
+ if (fileSize <= maxSize)
|
|
|
+ {
|
|
|
+ return await ResultFactory.GetStaticFileResult(Request, fontFile.FullName);
|
|
|
+ }
|
|
|
+
|
|
|
+ Logger.LogInformation("The selected font is too large. Maximum allowed size is 10 Megabytes");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Logger.LogInformation("The selected font is null or empty");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.LogError(ex, "Error reading fallback font file");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Logger.LogInformation("The path of fallback font has not been set");
|
|
|
+ }
|
|
|
+
|
|
|
+ return string.Empty;
|
|
|
+ }
|
|
|
}
|
|
|
}
|