Exemplo n.º 1
0
        public async Task <Domain.Photos.Photos> GetImageListByMartianSol(string rover, string camera, int solDate, int page)
        {
            _logger.LogInformation($"Start {nameof(ImagingServices)}:{nameof(GetImageListByMartianSol)}");

            Domain.Photos.Photos photos = null;

            try
            {
                if (rover.Contains("All"))
                {
                    foreach (Domain.Constants.Rovers roverEnum in Enum.GetValues(typeof(Domain.Constants.Rovers)))
                    {
                        photos = await _marsRepository.GetBySolDate(roverEnum.ToString(), solDate, string.Empty, 0);
                    }
                }
                else
                {
                    photos = await _marsRepository.GetBySolDate(rover, solDate, string.Empty, 0);
                }
            }

            catch (Exception exception)
            {
                _logger.LogError($"Exception in {nameof(ImagingServices)}:{nameof(GetImageListByMartianSol)} {exception}");
            }

            _logger.LogInformation($"Exit {nameof(ImagingServices)}:{nameof(GetImageListByMartianSol)}");

            return(photos);
        }
Exemplo n.º 2
0
        public async Task <Domain.Photos.Photos> GetBySolDate(string rover, int solDate, string camera, int page)
        {
            _logger.LogInformation($"Start {nameof(MarsRepository)}:{nameof(GetBySolDate)}");

            var uri = $"rovers/{rover}/photos?sol={solDate}&api_key=DEMO_KEY";

            Domain.Photos.Photos photos = null;

            try
            {
                var response = await _httpClient.GetAsync(uri);

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsStringAsync();

                    photos = JsonConvert.DeserializeObject <Domain.Photos.Photos>(content);
                    await DownloadImages(rover, photos);
                }
            }

            catch (Exception exception)
            {
                _logger.LogError($"Exception in {nameof(MarsRepository)}:{nameof(GetBySolDate)} {exception}");
            }

            _logger.LogInformation($"Exit {nameof(MarsRepository)}:{nameof(GetBySolDate)}");


            return(photos);
        }
Exemplo n.º 3
0
        public async Task <bool> DownloadImages(string rover, Domain.Photos.Photos photos)
        {
            _logger.LogInformation($"Start {nameof(MarsRepository)}:{nameof(DownloadImages)}");

            try
            {
                string path = $"images/{rover}/{photos.photos[0].earth_date}";

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                foreach (Domain.Photos.PhotoDetail detail in photos.photos)
                {
                    var sourceUri      = new Uri(detail.img_src);
                    var sourceFilename = Path.GetFileName(sourceUri.LocalPath);

                    var response = await _httpClient.GetAsync(detail.img_src);

                    if (response.IsSuccessStatusCode)
                    {
                        var image = await response.Content.ReadAsByteArrayAsync();

                        File.WriteAllBytes($"{path}/{sourceFilename}.jpg", image);
                    }
                }
            }

            catch (Exception exception)
            {
                _logger.LogError($"Exception in {nameof(MarsRepository)}:{nameof(DownloadImages)} {exception}");
            }

            _logger.LogInformation($"Exit {nameof(MarsRepository)}:{nameof(DownloadImages)}");



            return(true);
        }
Exemplo n.º 4
0
        public async Task <Domain.Photos.Photos> GetImageListByEarthDate(string roverName, string cameraName, DateTime earthDate, int page)
        {
            // camera name and page are not implemented yet

            if (!Enum.IsDefined(typeof(Domain.Constants.Rovers), roverName))
            {
                return(null);
            }

            _logger.LogInformation($"Start {nameof(ImagingServices)}:{nameof(GetImageListByEarthDate)}");

            Domain.Photos.Photos photos = null;

            try
            {
                if (roverName.Contains("All"))
                {
                    foreach (Domain.Constants.Rovers roverEnum in Enum.GetValues(typeof(Domain.Constants.Rovers)))
                    {
                        photos = await _marsRepository.GetByEarthDate(roverEnum.ToString(), earthDate, string.Empty, 0);
                    }
                }
                else
                {
                    photos = await _marsRepository.GetByEarthDate(roverName, earthDate, string.Empty, 0);
                }
            }

            catch (Exception exception)
            {
                _logger.LogError($"Exception in {nameof(ImagingServices)}:{nameof(GetImageListByEarthDate)} {exception}");
            }

            _logger.LogInformation($"Exit {nameof(ImagingServices)}:{nameof(GetImageListByEarthDate)}");

            return(photos);
        }