示例#1
0
        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
        }
示例#2
0
        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);
        }
示例#3
0
        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());
        }