public async Task <IEnumerable <Make> > GetMakes() { HttpResponseMessage httpResponseMessage = await _httpClient.GetAsync("https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json"); VehicleApiResponse <MakeResult>?makeResult = await httpResponseMessage.ConvertResponseToObject <VehicleApiResponse <MakeResult> >(); return(makeResult?.Results.Select(x => new Make { VpicId = x.MakeId, MakeName = x.MakeName?.ToUpper() }).Where(x => !string.IsNullOrEmpty(x.MakeName) && x.VpicId.HasValue).GroupBy(x => x.MakeName, x => x).Select(x => x.FirstOrDefault()) ?? Enumerable.Empty <Make>()); }
public async Task <IEnumerable <VinDecodeResult> > DecodeVin(string vin, int?modelYear = null) { string url = modelYear.HasValue ? $"https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{vin}?format=json&modelyear={modelYear}" : $"https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{vin}?format=json"; HttpResponseMessage httpResponseMessage = await _httpClient.GetAsync(url); VehicleApiResponse <VinDecodeResult>?vinDecodeResult = await httpResponseMessage.ConvertResponseToObject <VehicleApiResponse <VinDecodeResult> >(); return(vinDecodeResult?.Results ?? Enumerable.Empty <VinDecodeResult>()); }
public async Task <IEnumerable <Model> > GetModels(Make make) { HttpResponseMessage httpResponseMessage = await _httpClient.GetAsync($"https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeId/{make.VpicId}?format=json"); VehicleApiResponse <ModelResult>?modelResult = await httpResponseMessage.ConvertResponseToObject <VehicleApiResponse <ModelResult> >(); return(modelResult?.Results.Select(x => new Model { Make = make, MakeId = make.MakeId, ModelName = x.ModelName?.ToUpper(), VpicId = x.ModelId }).Where(x => !string.IsNullOrEmpty(x.ModelName) && x.VpicId.HasValue).GroupBy(x => x.ModelName, x => x).Select(x => x.FirstOrDefault()) ?? Enumerable.Empty <Model>()); }