using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography; namespace MediaBrowser.Common.Extensions { public static class BaseExtensions { static MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider(); public static Guid GetMD5(this string str) { lock (md5Provider) { return new Guid(md5Provider.ComputeHash(Encoding.Unicode.GetBytes(str))); } } /// /// Examine a list of strings assumed to be file paths to see if it contains a parent of /// the provided path. /// /// /// /// public static bool ContainsParentFolder(this List lst, string path) { path = path.TrimEnd('\\'); foreach (var str in lst) { //this should be a little quicker than examining each actual parent folder... var compare = str.TrimEnd('\\'); if (path.Equals(compare,StringComparison.OrdinalIgnoreCase) || (path.StartsWith(compare, StringComparison.OrdinalIgnoreCase) && path[compare.Length] == '\\')) return true; } return false; } /// /// Helper method for Dictionaries since they throw on not-found keys /// /// /// /// /// /// /// public static U GetValueOrDefault(this Dictionary dictionary, T key, U defaultValue) { U val; if (!dictionary.TryGetValue(key, out val)) { val = defaultValue; } return val; } } }