HttpPathStatusResolver
using Relativity.Transfer.Paths;
using System;
using System.IO;
namespace Relativity.Transfer.Http.Paths
{
internal class HttpPathStatusResolver : IHttpPathStatusResolver
{
private readonly IPathStatusResolver pathStatusResolver;
public HttpPathStatusResolver(IPathStatusResolver pathStatusResolver)
{
this.pathStatusResolver = pathStatusResolver;
}
public TransferPathStatus Resolve(Exception exception)
{
TransferPathStatus pathStatus = ResolveBasedOnException(exception);
return pathStatusResolver.Resolve(pathStatus);
}
private static TransferPathStatus ResolveBasedOnException(Exception exception)
{
if (exception is ArgumentException)
return TransferPathStatus.Fatal;
if (exception is UnauthorizedAccessException)
return TransferPathStatus.PermissionsError;
if (exception is FileNotFoundException)
return TransferPathStatus.FileNotFound;
if (ExceptionHelper.IsFatalException(exception))
return TransferPathStatus.Fatal;
return TransferPathStatus.Failed;
}
}
}