using System; using System.Linq; using System.Security.Claims; using System.Security.Principal; namespace Dough.Utilities { public static class ExtentionMethods { public static Guid ToGuidOrDefault(this string value) { if (value.IsMissing()) return default; try { return new Guid(value); } catch (Exception e) { Console.WriteLine(e); return default; } } public static DateTime ToDateTimeOrDefault(this string value) { if (value.IsMissing()) return default; try { return DateTime.Parse(value); } catch (Exception e) { Console.WriteLine(e); return default; } } public static bool IsMissing(this string value) => string.IsNullOrWhiteSpace(value); public static bool IsPresent(this string value) => !value.IsMissing(); public static bool IsValidUrl(this string value) { return Uri.TryCreate(value, UriKind.Absolute, out var uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); } public static string GetClaimValueOrDefault(this IPrincipal currentPrincipal, string claimName) { var identity = currentPrincipal.Identity as ClaimsIdentity; var claim = identity?.Claims.SingleOrDefault(c => c.Type == claimName); return claim?.Value; } } }