in src/PowerShell/Validations/AddressValidator.cs [43:93]
public async Task<bool> IsValidAsync(Address resource, CancellationToken cancellationToken = default)
{
CountryValidationRules validationRules;
resource.AssertNotNull(nameof(resource));
validationRules = await partner.CountryValidationRules.ByCountry(resource.Country).GetAsync(cancellationToken).ConfigureAwait(false);
if (validationRules.IsCityRequired && string.IsNullOrEmpty(resource.City))
{
throw new ValidationException(Resources.CityRequiredError);
}
if (validationRules.IsPostalCodeRequired && string.IsNullOrEmpty(resource.PostalCode))
{
throw new ValidationException(Resources.PostalCoderequiredError);
}
if (validationRules.IsStateRequired)
{
if (string.IsNullOrEmpty(resource.State))
{
throw new ValidationException(Resources.StateRequiredError);
}
else
{
if (!validationRules.SupportedStatesList.Contains(resource.State))
{
throw new ValidationException(
string.Format(
CultureInfo.CurrentCulture,
Resources.InvalidStateError,
resource.State,
string.Join(",", validationRules.SupportedStatesList)));
}
}
}
if (!string.IsNullOrEmpty(validationRules.PhoneNumberRegex)
&& !string.IsNullOrEmpty(resource.PhoneNumber) &&
!Regex.Match(resource.PhoneNumber, validationRules.PhoneNumberRegex).Success)
{
throw new ValidationException(
string.Format(
CultureInfo.CurrentCulture,
Resources.InvalidPhoneFormatError,
resource.PhoneNumber));
}
return await partner.Validations.IsAddressValidAsync(resource, cancellationToken).ConfigureAwait(false);
}