Create and use FormattingStreamWriter
Prevents bugs causes by system cultures with different formatting
This commit is contained in:
parent
2fe13f54ea
commit
3b94cfa837
|
@ -180,10 +180,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
}
|
}
|
||||||
|
|
||||||
public string FindSeriesPresentationUniqueKey()
|
public string FindSeriesPresentationUniqueKey()
|
||||||
{
|
=> Series?.PresentationUniqueKey;
|
||||||
var series = Series;
|
|
||||||
return series is null ? null : series.PresentationUniqueKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string FindSeasonName()
|
public string FindSeasonName()
|
||||||
{
|
{
|
||||||
|
|
|
@ -430,8 +430,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
InternalItemsQuery query,
|
InternalItemsQuery query,
|
||||||
ILibraryManager libraryManager)
|
ILibraryManager libraryManager)
|
||||||
{
|
{
|
||||||
var user = query.User;
|
|
||||||
|
|
||||||
// This must be the last filter
|
// This must be the last filter
|
||||||
if (!query.AdjacentTo.IsNullOrEmpty())
|
if (!query.AdjacentTo.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
|
|
|
@ -1207,7 +1207,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate concat configuration entries for each file and write to file
|
// Generate concat configuration entries for each file and write to file
|
||||||
using StreamWriter sw = new StreamWriter(concatFilePath);
|
Directory.CreateDirectory(Path.GetDirectoryName(concatFilePath));
|
||||||
|
using StreamWriter sw = new FormattingStreamWriter(concatFilePath, CultureInfo.InvariantCulture);
|
||||||
foreach (var path in files)
|
foreach (var path in files)
|
||||||
{
|
{
|
||||||
var mediaInfoResult = GetMediaInfo(
|
var mediaInfoResult = GetMediaInfo(
|
||||||
|
|
38
src/Jellyfin.Extensions/FormattingStreamWriter.cs
Normal file
38
src/Jellyfin.Extensions/FormattingStreamWriter.cs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Jellyfin.Extensions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A custom StreamWriter which supports setting a IFormatProvider.
|
||||||
|
/// </summary>
|
||||||
|
public class FormattingStreamWriter : StreamWriter
|
||||||
|
{
|
||||||
|
private readonly IFormatProvider _formatProvider;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="FormattingStreamWriter"/> class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="stream">The stream to write to.</param>
|
||||||
|
/// <param name="formatProvider">The format provider to use.</param>
|
||||||
|
public FormattingStreamWriter(Stream stream, IFormatProvider formatProvider)
|
||||||
|
: base(stream)
|
||||||
|
{
|
||||||
|
_formatProvider = formatProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="FormattingStreamWriter"/> class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">The complete file path to write to.</param>
|
||||||
|
/// <param name="formatProvider">The format provider to use.</param>
|
||||||
|
public FormattingStreamWriter(string path, IFormatProvider formatProvider)
|
||||||
|
: base(path)
|
||||||
|
{
|
||||||
|
_formatProvider = formatProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override IFormatProvider FormatProvider
|
||||||
|
=> _formatProvider;
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Jellyfin.Extensions.Tests;
|
||||||
|
|
||||||
|
public static class FormattingStreamWriterTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public static void Shuffle_Valid_Correct()
|
||||||
|
{
|
||||||
|
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE", false);
|
||||||
|
using (var ms = new MemoryStream())
|
||||||
|
using (var txt = new FormattingStreamWriter(ms, CultureInfo.InvariantCulture))
|
||||||
|
{
|
||||||
|
txt.Write("{0}", 3.14159);
|
||||||
|
txt.Close();
|
||||||
|
Assert.Equal("3.14159", Encoding.UTF8.GetString(ms.ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user