Example #1
0
        public async Task <AddressValidation> ValidateAddress(Address address)
        {
            var response = new AddressValidation(address);

            if (address.Country == "US")
            {
                var lookup    = AddressMapper.MapToUSStreetLookup(address);
                var candidate = await _service.ValidateSingleUSAddress(lookup);                 // Always seems to return 1 or 0 candidates

                if (candidate.Count > 0)
                {
                    response.ValidAddress          = AddressMapper.Map(candidate[0], address);
                    response.GapBetweenRawAndValid = candidate[0].Analysis.DpvFootnotes;
                }
                else
                {
                    // no valid address found
                    var suggestions = await _service.USAutoCompletePro($"{address.Street1} {address.Street2}");

                    if (suggestions.suggestions != null)
                    {
                        response.SuggestedAddresses = AddressMapper.Map(suggestions, address);
                    }
                }
                if (!response.ValidAddressFound)
                {
                    throw new InvalidAddressException(response);
                }
            }
            else
            {
                response.ValidAddress = address;
            }
            return(response);
        }
Example #2
0
 public InvalidAddressException(AddressValidation validation) : base("InvalidAddress", 400, "Address not valid", validation)
 {
 }