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

WindowsPathCharactersValidator

using Relativity.DataTransfer.Nodes.PathConversion; using System; using System.IO; using System.Linq; using System.Text.RegularExpressions; namespace Relativity.DataTransfer.Nodes.Internal.Utilities { internal class WindowsPathCharactersValidator : IPathCharactersValidator { private static readonly Regex ReservedAndInvalidWindowsFolderNamesRegex = new Regex("(\\\\|\\/)(CON|PRN|AUX|NUL|COM\\d|LPT\\d)(\\\\|\\/)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.CultureInvariant); private static readonly char[] InvalidPathChars = Path.GetInvalidPathChars(); public void Validate(string path) { ValidateNullOrEmpty(path); if (CheckWindowsInvalidChars(path)) throw new InvalidWindowsCharacterException(); if (CheckInvalidPathCharacters(path)) throw new InvalidPathCharacterException(); } private static void ValidateNullOrEmpty(string inputPath) { if (inputPath == null) throw new ArgumentException("Path is null."); string value = inputPath.Trim(); if (string.IsNullOrEmpty(value)) throw new ArgumentException("Path is empty."); } private static bool CheckWindowsInvalidChars(string path) { return ReservedAndInvalidWindowsFolderNamesRegex.IsMatch(path); } private static bool CheckInvalidPathCharacters(string path) { return InvalidPathChars.Any((char invalidPathChars) => path.Contains(invalidPathChars.ToString())); } } }