Remote write

This commit is contained in:
2023-07-26 21:21:55 +02:00
parent 144745a558
commit d26401948a
25 changed files with 293 additions and 34 deletions

View File

@@ -1,12 +1,34 @@
using FileTime.Core.ContentAccess;
using FileTime.Core.Models;
using FileTime.Providers.LocalAdmin;
using Microsoft.Extensions.Logging;
namespace FileTime.Providers.Local;
public class LocalContentWriterFactory : IContentWriterFactory<ILocalContentProvider>
{
public Task<IContentWriter> CreateContentWriterAsync(IElement element)
private readonly IAdminContentAccessorFactory _adminContentAccessorFactory;
private readonly ILogger<LocalContentWriterFactory> _logger;
public LocalContentWriterFactory(
IAdminContentAccessorFactory adminContentAccessorFactory,
ILogger<LocalContentWriterFactory> logger)
{
return Task.FromResult((IContentWriter) new LocalContentWriter(File.OpenWrite(element.NativePath!.Path)));
_adminContentAccessorFactory = adminContentAccessorFactory;
_logger = logger;
}
public async Task<IContentWriter> CreateContentWriterAsync(IElement element)
{
try
{
return new LocalContentWriter(File.OpenWrite(element.NativePath!.Path));
}
catch (UnauthorizedAccessException e)
{
_logger.LogDebug(e, "Failed to write to element with path {Path}", element.NativePath);
var adminContentWriter = await _adminContentAccessorFactory.CreateContentWriterAsync(element.NativePath!);
return adminContentWriter;
}
}
}