Browse Source

remove readalllines

pull/2655/head
Jason Dove 8 months ago
parent
commit
d49b40bf9f
No known key found for this signature in database
  1. 20
      ErsatzTV.Application/Streaming/HlsSessionWorker.cs
  2. 1
      ErsatzTV.Core/Interfaces/Metadata/ILocalFileSystem.cs
  3. 42
      ErsatzTV.Core/Metadata/LocalFileSystem.cs
  4. 4
      ErsatzTV.Infrastructure/Streaming/Graphics/GraphicsElementLoader.cs
  5. 1
      ErsatzTV.Scanner.Tests/Core/Fakes/FakeLocalFileSystem.cs

20
ErsatzTV.Application/Streaming/HlsSessionWorker.cs

@ -683,9 +683,9 @@ public class HlsSessionWorker : IHlsSessionWorker @@ -683,9 +683,9 @@ public class HlsSessionWorker : IHlsSessionWorker
var generatedAtHash = new System.Collections.Generic.HashSet<long>();
// delete old segments
var allSegments = Directory.GetFiles(_workingDirectory, "live*.ts")
.Append(Directory.GetFiles(_workingDirectory, "live*.mp4"))
.Append(Directory.GetFiles(_workingDirectory, "live*.m4s"))
var allSegments = _fileSystem.Directory.GetFiles(_workingDirectory, "live*.ts")
.Append(_fileSystem.Directory.GetFiles(_workingDirectory, "live*.mp4"))
.Append(_fileSystem.Directory.GetFiles(_workingDirectory, "live*.m4s"))
.Map(file =>
{
string fileName = Path.GetFileName(file);
@ -703,7 +703,7 @@ public class HlsSessionWorker : IHlsSessionWorker @@ -703,7 +703,7 @@ public class HlsSessionWorker : IHlsSessionWorker
})
.ToList();
var allInits = Directory.GetFiles(_workingDirectory, "*init.mp4")
var allInits = _fileSystem.Directory.GetFiles(_workingDirectory, "*init.mp4")
.Map(file => long.TryParse(Path.GetFileName(file).Split('_')[0], out long generatedAt) && !generatedAtHash.Contains(generatedAt)
? new Segment(file, 0, generatedAt)
: Option<Segment>.None)
@ -743,7 +743,7 @@ public class HlsSessionWorker : IHlsSessionWorker @@ -743,7 +743,7 @@ public class HlsSessionWorker : IHlsSessionWorker
{
try
{
File.Delete(segment.File);
_fileSystem.File.Delete(segment.File);
}
catch (IOException)
{
@ -756,12 +756,12 @@ public class HlsSessionWorker : IHlsSessionWorker @@ -756,12 +756,12 @@ public class HlsSessionWorker : IHlsSessionWorker
private async Task RefreshInits()
{
var allSegments = Directory.GetFiles(_workingDirectory, "live*.m4s")
var allSegments = _fileSystem.Directory.GetFiles(_workingDirectory, "live*.m4s")
.Map(Path.GetFileName)
.Map(s => s.Split("_")[1])
.ToHashSet();
foreach (string file in Directory.GetFiles(_workingDirectory, "*init.mp4"))
foreach (string file in _fileSystem.Directory.GetFiles(_workingDirectory, "*init.mp4"))
{
string key = Path.GetFileName(file).Split("_")[0];
if (allSegments.Contains(key))
@ -816,9 +816,9 @@ public class HlsSessionWorker : IHlsSessionWorker @@ -816,9 +816,9 @@ public class HlsSessionWorker : IHlsSessionWorker
private async Task<Option<string[]>> ReadPlaylistLines(CancellationToken cancellationToken)
{
string fileName = PlaylistFileName();
if (File.Exists(fileName))
if (_fileSystem.File.Exists(fileName))
{
return await File.ReadAllLinesAsync(fileName, cancellationToken);
return await _fileSystem.File.ReadAllLinesAsync(fileName, cancellationToken);
}
_logger.LogDebug("Playlist does not exist at expected location {File}", fileName);
@ -828,7 +828,7 @@ public class HlsSessionWorker : IHlsSessionWorker @@ -828,7 +828,7 @@ public class HlsSessionWorker : IHlsSessionWorker
private async Task WritePlaylist(string playlist, CancellationToken cancellationToken)
{
string fileName = PlaylistFileName();
await File.WriteAllTextAsync(fileName, playlist, cancellationToken);
await _fileSystem.File.WriteAllTextAsync(fileName, playlist, cancellationToken);
}
private string PlaylistFileName() => Path.Combine(_workingDirectory, "live.m3u8");

1
ErsatzTV.Core/Interfaces/Metadata/ILocalFileSystem.cs

@ -10,7 +10,6 @@ public interface ILocalFileSystem @@ -10,7 +10,6 @@ public interface ILocalFileSystem
IEnumerable<string> ListFiles(string folder, params string[] searchPatterns);
Task<Either<BaseError, Unit>> CopyFile(string source, string destination);
Unit EmptyFolder(string folder);
Task<string[]> ReadAllLines(string path);
Task<byte[]> GetHash(string path);
string GetCustomOrDefaultFile(string folder, string file);
}

42
ErsatzTV.Core/Metadata/LocalFileSystem.cs

@ -13,9 +13,9 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -13,9 +13,9 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
{
try
{
if (folder != null && !Directory.Exists(folder))
if (folder != null && !fileSystem.Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
fileSystem.Directory.CreateDirectory(folder);
}
}
catch (Exception ex)
@ -30,7 +30,7 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -30,7 +30,7 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
{
try
{
return File.GetLastWriteTimeUtc(path);
return fileSystem.File.GetLastWriteTimeUtc(path);
}
catch
{
@ -40,11 +40,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -40,11 +40,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
public IEnumerable<string> ListSubdirectories(string folder)
{
if (Directory.Exists(folder))
if (fileSystem.Directory.Exists(folder))
{
try
{
return Directory.EnumerateDirectories(folder);
return fileSystem.Directory.EnumerateDirectories(folder);
}
catch (UnauthorizedAccessException)
{
@ -62,11 +62,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -62,11 +62,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
public IEnumerable<string> ListFiles(string folder)
{
if (Directory.Exists(folder))
if (fileSystem.Directory.Exists(folder))
{
try
{
return Directory.EnumerateFiles(folder, "*", SearchOption.TopDirectoryOnly)
return fileSystem.Directory.EnumerateFiles(folder, "*", SearchOption.TopDirectoryOnly)
.Where(path => !Path.GetFileName(path).StartsWith("._", StringComparison.OrdinalIgnoreCase));
}
catch (UnauthorizedAccessException)
@ -85,11 +85,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -85,11 +85,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
public IEnumerable<string> ListFiles(string folder, string searchPattern)
{
if (folder is not null && Directory.Exists(folder))
if (folder is not null && fileSystem.Directory.Exists(folder))
{
try
{
return Directory.EnumerateFiles(folder, searchPattern, SearchOption.TopDirectoryOnly)
return fileSystem.Directory.EnumerateFiles(folder, searchPattern, SearchOption.TopDirectoryOnly)
.Where(path => !Path.GetFileName(path).StartsWith("._", StringComparison.OrdinalIgnoreCase));
}
catch (UnauthorizedAccessException)
@ -108,13 +108,13 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -108,13 +108,13 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
public IEnumerable<string> ListFiles(string folder, params string[] searchPatterns)
{
if (folder is not null && Directory.Exists(folder))
if (folder is not null && fileSystem.Directory.Exists(folder))
{
try
{
return searchPatterns
.SelectMany(searchPattern =>
Directory.EnumerateFiles(folder, searchPattern, SearchOption.TopDirectoryOnly)
fileSystem.Directory.EnumerateFiles(folder, searchPattern, SearchOption.TopDirectoryOnly)
.Where(path =>
!Path.GetFileName(path).StartsWith("._", StringComparison.OrdinalIgnoreCase)))
.Distinct();
@ -138,13 +138,13 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -138,13 +138,13 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
try
{
string directory = Path.GetDirectoryName(destination) ?? string.Empty;
if (!Directory.Exists(directory))
if (!fileSystem.Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
fileSystem.Directory.CreateDirectory(directory);
}
await using FileStream sourceStream = File.OpenRead(source);
await using FileStream destinationStream = File.Create(destination);
await using FileSystemStream sourceStream = fileSystem.File.OpenRead(source);
await using FileSystemStream destinationStream = fileSystem.File.Create(destination);
await sourceStream.CopyToAsync(destinationStream);
return Unit.Default;
@ -160,14 +160,14 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -160,14 +160,14 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
{
try
{
foreach (string file in Directory.GetFiles(folder))
foreach (string file in fileSystem.Directory.GetFiles(folder))
{
File.Delete(file);
fileSystem.File.Delete(file);
}
foreach (string directory in Directory.GetDirectories(folder))
foreach (string directory in fileSystem.Directory.GetDirectories(folder))
{
Directory.Delete(directory, true);
fileSystem.Directory.Delete(directory, true);
}
}
catch (Exception ex)
@ -178,13 +178,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc @@ -178,13 +178,11 @@ public class LocalFileSystem(IFileSystem fileSystem, IClient client, ILogger<Loc
return Unit.Default;
}
public Task<string[]> ReadAllLines(string path) => File.ReadAllLinesAsync(path);
[SuppressMessage("Security", "CA5351:Do Not Use Broken Cryptographic Algorithms")]
public async Task<byte[]> GetHash(string path)
{
using var md5 = MD5.Create();
await using var stream = File.OpenRead(path);
await using var stream = fileSystem.File.OpenRead(path);
return await md5.ComputeHashAsync(stream);
}

4
ErsatzTV.Infrastructure/Streaming/Graphics/GraphicsElementLoader.cs

@ -3,7 +3,6 @@ using System.Text; @@ -3,7 +3,6 @@ using System.Text;
using System.Text.RegularExpressions;
using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Graphics;
using ErsatzTV.Core.Interfaces.Metadata;
using ErsatzTV.Core.Interfaces.Repositories;
using ErsatzTV.Core.Interfaces.Streaming;
using ErsatzTV.Core.Metadata;
@ -20,7 +19,6 @@ namespace ErsatzTV.Infrastructure.Streaming.Graphics; @@ -20,7 +19,6 @@ namespace ErsatzTV.Infrastructure.Streaming.Graphics;
public partial class GraphicsElementLoader(
TemplateFunctions templateFunctions,
IFileSystem fileSystem,
ILocalFileSystem localFileSystem,
ITemplateDataRepository templateDataRepository,
ILogger<GraphicsElementLoader> logger)
: IGraphicsElementLoader
@ -189,7 +187,7 @@ public partial class GraphicsElementLoader( @@ -189,7 +187,7 @@ public partial class GraphicsElementLoader(
foreach (var reference in elementsWithEpg)
{
foreach (string line in await localFileSystem.ReadAllLines(reference.GraphicsElement.Path))
foreach (string line in await fileSystem.File.ReadAllLinesAsync(reference.GraphicsElement.Path))
{
Match match = EpgEntriesRegex().Match(line);
if (!match.Success || !int.TryParse(match.Groups[1].Value, out int value))

1
ErsatzTV.Scanner.Tests/Core/Fakes/FakeLocalFileSystem.cs

@ -53,7 +53,6 @@ public class FakeLocalFileSystem : ILocalFileSystem @@ -53,7 +53,6 @@ public class FakeLocalFileSystem : ILocalFileSystem
Task.FromResult(Right<BaseError, Unit>(Unit.Default));
public Unit EmptyFolder(string folder) => Unit.Default;
public Task<string[]> ReadAllLines(string path) => throw new NotImplementedException();
public Task<byte[]> GetHash(string path) => throw new NotImplementedException();
public string GetCustomOrDefaultFile(string folder, string file)

Loading…
Cancel
Save