private static USPSAddressValidationResponse USPSValidate(USPSAddressValidationRequest request, Policies.USPSPolicy policy)
        {
            var s  = System.Xml.Serialization.XmlSerializer.FromTypes(new Type[] { typeof(USPSAddressValidationRequest), typeof(USPSAddressValidationResponse) });
            var sb = new System.Text.StringBuilder();

            using (var w = new System.IO.StringWriter(sb))
            {
                s[0].Serialize(w, request);
                w.Flush();
            }

            if (!policy.DebugMode)
            {
                //This Code is the 'real' code - commment out the live service call for the bootcamp
                String rawResponse = string.Empty;
                var    url         = new Uri($"{policy.Url}{sb.ToString()}");
                using (var client = new HttpClient())
                {
                    rawResponse = client.GetStringAsync(url).Result;
                }

                if (rawResponse.Contains("<Error>"))
                {
                    var rdr    = XElement.Parse(rawResponse);
                    var errMsg = (from item in rdr.Descendants("Description")
                                  select item.Value).Single();

                    return(null);
                }
                else
                {
                    USPSAddressValidationResponse resp = null;
                    using (var r = XmlReader.Create(new StringReader(rawResponse)))
                    {
                        resp = s[1].Deserialize(r) as USPSAddressValidationResponse;
                    }

                    return(resp);
                }
            }
            else
            {
                USPSAddressValidationResponse resp = new USPSAddressValidationResponse()
                {
                    Address = new USPSAddress()
                    {
                        Id       = "STUB",
                        Address1 = "123 Plugin Lane",
                        Address2 = String.Empty,
                        City     = "Bootcamp",
                        State    = "OH",
                        Zip5     = "43015",
                        Zip4     = "4333"
                    }
                };

                return(resp);
            }
        }
        private static USPSAddressValidationResponse USPSValidate(USPSAddressValidationRequest request, Policies.USPSPolicy policy)
        {
            var s  = System.Xml.Serialization.XmlSerializer.FromTypes(new Type[] { typeof(USPSAddressValidationRequest), typeof(USPSAddressValidationResponse) });
            var sb = new System.Text.StringBuilder();

            using (var w = new System.IO.StringWriter(sb))
            {
                s[0].Serialize(w, request);
                w.Flush();
            }

            String rawResponse = string.Empty;
            var    url         = new Uri($"{policy.Url}{sb.ToString()}"); //TODO: Externalize

            using (var client = new HttpClient())
            {
                rawResponse = client.GetStringAsync(url).Result;
            }

            if (rawResponse.Contains("<Error>"))
            {
                var rdr    = XElement.Parse(rawResponse);
                var errMsg = (from item in rdr.Descendants("Description")
                              select item.Value).Single();

                return(null);
            }
            else
            {
                USPSAddressValidationResponse resp = null;
                using (var r = XmlReader.Create(new StringReader(rawResponse)))
                {
                    resp = s[1].Deserialize(r) as USPSAddressValidationResponse;
                }

                return(resp);
            }
        }