public static bool TryParse(string value, out ValidExternalVideoUrl externalVideoUrl, out IReadOnlyCollection <string> errorMessages) { var errorMessageList = new List <string>(); errorMessages = errorMessageList; if (IsEmpty(value)) { // TryParse should never fail, so report null as an error instead of ArgumentNullException. errorMessageList.Add("Value required"); } else { Uri uri; if (!Uri.TryCreate(value, UriKind.Absolute, out uri)) { errorMessageList.Add("Must be valid URL"); } else { value = uri.ToString(); if (value.Length < MinLength || value.Length > MaxLength) { errorMessageList.Add(string.Format("Length must be from {0} to {1} characters", MinLength, MaxLength)); } if (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) { errorMessageList.Add("Must be HTTP(S)"); } if (!AllowedDomains.Contains(uri.Host)) { errorMessageList.Add("Must be from " + AllowedDomainsMessage); } } } if (errorMessageList.Count > 0) { externalVideoUrl = null; return(false); } externalVideoUrl = new ValidExternalVideoUrl(value); return(true); }
public static bool TryParse(string value, out ValidExternalVideoUrl externalVideoUrl) { IReadOnlyCollection <string> errorMessages; return(TryParse(value, out externalVideoUrl, out errorMessages)); }