using System; using System.Linq; using OgPath = System.IO.Path; namespace Net3_Proxy { public static class Path { internal static void Validate(string path) => Validate(path, nameof(path)); internal static void Validate(string path, string parameterName) { if (path == null) { throw new ArgumentNullException(parameterName); } if (Utils.IsNullOrWhiteSpace(path)) { throw new ArgumentException("Path is empty"); } if (path.IndexOfAny(OgPath.GetInvalidPathChars()) != -1) { throw new ArgumentException("Path contains invalid chars"); } if (Environment.OSVersion.Platform < PlatformID.Unix) { int num = path.IndexOf(':'); if (num >= 0 && num != 1) { throw new ArgumentException(parameterName); } } } public static string GetFullPath(string p) => OgPath.GetFullPath(p); public static string GetFileNameWithoutExtension(string p) => OgPath.GetFileNameWithoutExtension(p); public static string GetFileName(string p) => OgPath.GetFileName(p); public static string GetDirectoryName(string p) => OgPath.GetDirectoryName(p); public static string Combine(string s) => s; public static string Combine(string s, string d) => OgPath.Combine(s, d); public static string Combine(string s, string d, string f) => Combine(s, Combine(d, f)); public static string Combine(string s, string d, string f, string g) => Combine(Combine(s, d), Combine(f, g)); public static string Combine(params string[] parts) { if (parts.Length == 0) return ""; var begin = parts[0]; foreach (var p in parts.Skip(1)) begin = Combine(begin, p); return begin; } public static char PathSeparator => OgPath.PathSeparator; } }