using System.Security.Cryptography; using System.Text; using dy.net.model.entity; namespace dy.net.storage { public static class StorageConfigurationFingerprint { public static string Create(WebDavSettings settings) { if (settings == null) return string.Empty; var canonical = string.Join("\n", (settings.Endpoint ?? string.Empty).Trim().TrimEnd('/'), StoragePath.NormalizeRemote(settings.BasePath), (settings.UserName ?? string.Empty).Trim()); return Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(canonical))).ToLowerInvariant(); } public static string Create(OpenListSettings settings) { if (settings == null) return string.Empty; var canonical = string.Join("\n", OpenListClient.NormalizeBaseUrl(settings.Endpoint), StoragePath.NormalizeRemote(settings.BasePath), Path.GetFullPath(settings.LocalStagingPath ?? string.Empty), StoragePath.NormalizeRemote(settings.SourcePath), (settings.UserName ?? string.Empty).Trim()); return Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(canonical))).ToLowerInvariant(); } } }