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); }
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); }
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); }
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); }