FilesharePathStatusResolver
using Relativity.Transfer.Exceptions;
using Relativity.Transfer.Paths;
using System;
using System.IO;
namespace Relativity.Transfer.FileShare.Paths
{
internal class FilesharePathStatusResolver : IFilesharePathStatusResolver
{
private readonly IPathStatusResolver ;
public FilesharePathStatusResolver(IPathStatusResolver pathStatusResolver)
{
this.pathStatusResolver = pathStatusResolver;
}
public TransferPathStatus (Exception exception)
{
TransferPathStatus pathStatus = ResolveBasedOnException(exception);
return pathStatusResolver.Resolve(pathStatus);
}
private static TransferPathStatus (Exception exception)
{
if (exception is DirectoryNotFoundException)
return TransferPathStatus.Failed;
if (exception is FileNotFoundException)
return TransferPathStatus.FileNotFound;
if (exception is PathTooLongException)
return TransferPathStatus.Fatal;
if (exception is IOException) {
if (FileshareErrorHelper.IsDiskFull(exception))
return TransferPathStatus.Fatal;
return TransferPathStatus.Failed;
}
if (ExceptionHelper.IsFatalException(exception))
return TransferPathStatus.Fatal;
if (exception is ArgumentException)
return TransferPathStatus.Fatal;
if (exception is NotSupportedException)
return TransferPathStatus.Fatal;
if (exception is PotentialMalwareException)
return TransferPathStatus.FileBlocked;
return TransferPathStatus.Fatal;
}
}
}