public async Task <RoverManifest> GetRoverManifest(string rover) { RoverManifest manifest = null; var response = await _client.GetAsync($"https://api.nasa.gov/mars-photos/api/v1/manifests/{rover}?api_key={_apiKey}"); if (response.IsSuccessStatusCode) { var responseContent = await response.Content.ReadAsStringAsync(); manifest = JsonConvert.DeserializeObject <RoverManifest>(responseContent); } return(manifest); //TODO: handle when request is not successful in a better way }
public async Task <Dictionary <string, RoverManifest> > GetAllRoverManifests() { Dictionary <string, RoverManifest> roverManifests = new Dictionary <string, RoverManifest>(); foreach (var rover in _rovers) { RoverManifest manifest = await GetRoverManifest(rover); if (manifest != null) { roverManifests.Add(rover, manifest); } } return(roverManifests); }
public ActionResult <IEnumerable <Rover> > GetAllRoverManifest() { //TODO: pull out into service? foreach (var rover in _nasaClient.rovers) { var roverEntity = _context.Rover.Where(x => x.Name == rover).SingleOrDefault(); if (roverEntity != null) { DateTime lastUpdated = DateTime.Parse(roverEntity.LastUpdated); DateTime now = DateTime.Now; if (!(lastUpdated > now.AddHours(-24) && lastUpdated <= now)) //Check if rover manifest has been updated in the last 24 hours { RoverManifest roverManifest = Task.Run(() => _nasaClient.GetRoverManifest(rover)).Result; roverEntity.RecentPhotoDate = roverManifest.PhotoManifest.RecentPhotoDate.ToString("o"); roverEntity.LastUpdated = now.ToString("o"); } } else { RoverManifest roverManifest = Task.Run(() => _nasaClient.GetRoverManifest(rover)).Result; _context.Rover.Add(new Rover { Name = rover, LandingDate = roverManifest.PhotoManifest.LandingDate.ToString("o"), RecentPhotoDate = roverManifest.PhotoManifest.RecentPhotoDate.ToString("o"), LastUpdated = DateTime.Now.ToString("o") }); } } _context.SaveChanges(); return(_context.Rover.ToList()); }