<PackageReference Include="Relativity.Server.Transfer.SDK" Version="24000.0.1" />

AsperaErrorHelper

static class AsperaErrorHelper
using Aspera.Transfer; using Relativity.Transfer.Aspera.Resources; using System; namespace Relativity.Transfer.Aspera { internal static class AsperaErrorHelper { public static string DefaultErrorMessage => AsperaStrings.DefaultError; public static bool IsValidErrorCode(int error) { if (error > 0) return error <= 57; return false; } public static bool IsFileNotFoundErrorCode(int error) { return error == 4; } public static bool IsFilePermissionsErrorCode(int error) { return error == 5; } public static bool IsBadPathErrorCode(int error) { return error == 41; } public static bool IsLicenseError(int error) { if (error >= 0) { switch (error) { case int.MaxValue: break; default: if ((uint)(error - 29) > 1 && error != 38) return false; goto case 9; case 9: return true; } } return false; } public static bool IsAuthenticationError(int error) { if (error < 0 || error == 2147483647) return false; return error == 19; } public static bool IsFatalFaspException(FaspManagerException exception) { if (exception.Message.Contains("Transfer already completed")) return true; return false; } public static bool IsErrorMessageVisible(int error) { if (error >= 0) { switch (error) { case int.MaxValue: break; case 4: case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 19: case 21: case 23: case 24: case 25: case 26: case 28: case 29: case 30: case 32: case 34: case 35: case 36: case 37: case 38: case 40: case 41: case 42: case 43: case 44: case 47: case 55: case 56: return true; default: return false; } } return false; } public static string GetDisplayErrorMessage(SessionStats stats) { string text = GetErrorMessage(stats.ErrorCode, stats.ErrorDescription); if (!string.IsNullOrEmpty(stats.ErrorDescription)) text = text + " Details: " + stats.ErrorDescription; return text; } public static string GetErrorMessage(int error, string errorDescription) { if (error < 0 || error == 2147483647) return DefaultErrorMessage; if (IsErrorMessageVisible(error)) { switch (error) { case 42: return AsperaStrings.AlreadyExistsError; case 3: return AsperaStrings.AmbiguousTargerError; case 19: return AsperaStrings.AuthenticationError; case 37: return AsperaStrings.AuthorizationError; case 50: return AsperaStrings.BadConfigurationError; case 41: return AsperaStrings.BadPathError; case 45: return AsperaStrings.BandwidthMeasurementError; case 14: return AsperaStrings.ConnectionError; case 16: return AsperaStrings.ConnectionLostError; case 15: return AsperaStrings.ConnectionTimeoutError; case 40: return AsperaStrings.DataTransferTimeoutError; case 35: return AsperaStrings.DiskReadError; case 36: return AsperaStrings.DiskWriteError; case 49: return AsperaStrings.FileDecryptionError; case 48: return AsperaStrings.FileEncryptionError; case 55: return AsperaStrings.FilePathTooLongError; case 22: return AsperaStrings.FileTableOverflowError; case 24: return AsperaStrings.FileTooBigError; case 2: return AsperaStrings.GenericAscpError; case 1: return AsperaStrings.GenericFaspProtocolError; case 47: return AsperaStrings.HttpConnectionError; case 56: return AsperaStrings.IllegalCharsInPathError; case 51: return AsperaStrings.InsecureConnectionError; case 11: return AsperaStrings.InternalError; case 7: return AsperaStrings.IsDirectoryError; case 9: return AsperaStrings.LicenseDuplicateError; case 30: return AsperaStrings.LicenseExpiredError; case 38: return AsperaStrings.LicenseIllegalError; case 29: return AsperaStrings.LicenseNotFoundError; case 10: return AsperaStrings.LicenseRateExceededError; case 5: return errorDescription.Equals(AsperaStrings.ThereIsNotEnoughtSpaceError) ? AsperaStrings.NoSpaceLeftError : AsperaStrings.NoPermissionsError; case 25: return AsperaStrings.NoSpaceLeftError; case 4: return AsperaStrings.NoSuchFileError; case 6: return AsperaStrings.NotDirectoryError; case 20: return AsperaStrings.NothingError; case 21: return AsperaStrings.NotRegularError; case 32: return AsperaStrings.OutOfMemoryError; case 39: return AsperaStrings.PeerAbortedSessionError; case 26: return AsperaStrings.ReadOnlyFileSystemError; case 18: return AsperaStrings.ReceiverReceiveError; case 17: return AsperaStrings.ReceiverSendError; case 31: return AsperaStrings.SocketSetupError; case 27: return AsperaStrings.SomeFilesError; case 52: return AsperaStrings.StartValidationError; case 43: return AsperaStrings.StatFailsError; case 53: return AsperaStrings.StopValidationError; case 33: return AsperaStrings.ThreadSpawnError; case 54: return AsperaStrings.ThresholdValidationError; case 23: return AsperaStrings.TooManyFilesOpenError; case 12: return AsperaStrings.TransferError; case 13: return AsperaStrings.TransferTimeoutError; case 44: return AsperaStrings.UdpInitiationError; case 34: return AsperaStrings.UnauthorizedError; case 57: return AsperaStrings.UndefinedError; case 8: return AsperaStrings.UsageError; case 28: return AsperaStrings.UserCancelError; case 46: return AsperaStrings.VLinkError; default: return AsperaStrings.DefaultError; } } return DefaultErrorMessage; } public static IssueAttributes GetIssueAttributes(int? errorCode, string errorDescription, ClientConfiguration configuration) { switch (errorCode.GetValueOrDefault()) { case 13: case 15: case 40: return IssueAttributes.Io | IssueAttributes.Timeout; case 42: return IssueAttributes.Overwrite; case 4: return IssueAttributes.FileNotFound | IssueAttributes.Io; case 19: case 34: return IssueAttributes.Authentication; case 5: if (errorDescription.Equals(AsperaStrings.ThereIsNotEnoughtSpaceError)) return IssueAttributes.Error | IssueAttributes.StorageOutOfSpace; if (configuration.PermissionErrorsRetry) return IssueAttributes.ReadWritePermissions; return IssueAttributes.Error | IssueAttributes.ReadWritePermissions; case 41: if (configuration.BadPathErrorsRetry) return IssueAttributes.InvalidPath; return IssueAttributes.Error | IssueAttributes.InvalidPath; case 35: case 36: return IssueAttributes.Io | IssueAttributes.StorageReadWrite; case 55: return IssueAttributes.Error | IssueAttributes.LongPath; case 56: return IssueAttributes.Error | IssueAttributes.InvalidCharacters; case 9: case 10: case 29: case 30: case 38: return IssueAttributes.Licensing; case 25: return IssueAttributes.Io | IssueAttributes.StorageOutOfSpace; default: return IssueAttributes.None; } } private static void NormalizeAsperaErrorDtoMessage(ref string message) { message = message.TrimEnd(Array.Empty<char>()); if (!message.EndsWith(".", StringComparison.OrdinalIgnoreCase)) message += "."; } } }