Remote write
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user