private async Task WebApiRequest(VehicleLookupDto lookup) { try { using (var client = new HttpClient()) { // Process Request. client.BaseAddress = new Uri(lookup.RequestBaseURL); ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; HttpResponseMessage resp = await client.GetAsync(lookup.RequestString); // Read Response. lookup.RequestSuccess = resp.IsSuccessStatusCode; lookup.ResponseStatusCode = resp.StatusCode; lookup.RequestMessage = resp.RequestMessage.Content?.ReadAsStringAsync().Result; lookup.ResponseContent = resp.Content?.ReadAsStringAsync().Result; } } catch (Exception e) { // Set Status. lookup.RequestSuccess = false; lookup.ResponseStatusCode = HttpStatusCode.BadRequest; // Load Last Exception Message. var innerEx = e; while (innerEx.InnerException != null) { innerEx = innerEx.InnerException; } lookup.RequestMessage = innerEx.Message; } // Update Lookup. lookup.VehicleLookupId = Conn.ExecuteScalar <int>( "Repair.usp_SaveVehicleLookup @VehicleVIN, @Service, @RequestBaseURL, @RequestString, @RequestSuccess, @ResponseStatusCode, @RequestMessage, @ResponseContent", lookup); }
private async Task <IVehicleDto> NhtsaVehicleSearch(string vin) { // Create Result IVehicleDto result = new VehicleDto { VehicleVIN = vin }; // Lookup Settings. var lookup = new VehicleLookupDto { VehicleVIN = vin.ToUpper(), Service = VehicleLookupService.NHTSA, RequestBaseURL = "https://vpic.nhtsa.dot.gov/", RequestString = $"api/vehicles/DecodeVin/{vin}?format=json" }; // Perform Lookup. await WebApiRequest(lookup); // Check Response. if (!lookup.RequestSuccess) { return(result); } // Load Response. dynamic response = JsonConvert.DeserializeObject(lookup.ResponseContent); // Check Response. if (response.Message != "Results returned successfully") { return(result); } // Load Results. var results = ((IEnumerable)response.Results).Cast <dynamic>().ToList(); // Load Vehicle Information. var make = results.Where(r => r.Variable == "Make").Select(r => r.Value.ToString()).FirstOrDefault(); var model = results.Where(r => r.Variable == "Model").Select(r => r.Value.ToString()).FirstOrDefault(); var year = results.Where(r => r.Variable == "Model Year").Select(r => r.Value.ToString()).FirstOrDefault(); var tran = results.Where(r => r.Variable == "Transmission Style").Select(r => r.Value.ToString()).FirstOrDefault(); // Check Make. if (string.IsNullOrEmpty(make)) { return(result); } // Populate Vehicle. var vehicle = new VehicleDto { VehicleVIN = lookup.VehicleVIN.ToUpper(), VehicleMakeName = make, VehicleModel = string.IsNullOrEmpty(model) ? "Unknown" : model, VehicleYear = string.IsNullOrEmpty(year) ? "UNKN" : year, VehicleTransmission = string.IsNullOrEmpty(tran) ? "Unknown" : tran, ManualEntryInd = false }; // Update Vehicle. result = Update(vehicle, lookup.VehicleLookupId); // Return. return(result); }