Ejemplo n.º 1
0
        public void CanValidatePhotoRequestModel()
        {
            // Arrange
            var nasaPhotoRequest = new NasaPhotoRequest
            {
                apiKey = "DEMO_KEY"
            };

            var baseEndpoint = "https://api.nasa.gov/mars-photos/api/v1/";

            // Act
            var photoRepository = new NasaPhotoRepository(baseEndpoint);

            var response = photoRepository.Get(nasaPhotoRequest);

            // Assert
            Assert.IsTrue(response.StatusCode == System.Net.HttpStatusCode.BadRequest);
        }
Ejemplo n.º 2
0
        public void CanGetPhotoResponseForCuriosity()
        {
            // Arrange
            var nasaPhotoRequest = new NasaPhotoRequest
            {
                apiKey    = "DEMO_KEY",
                imageDate = DateTime.Today,
                rover     = "curiosity"
            };

            var baseEndpoint = "https://api.nasa.gov/mars-photos/api/v1/";

            // Act
            var photoRepository = new NasaPhotoRepository(baseEndpoint);

            var response = photoRepository.Get(nasaPhotoRequest);

            // Assert
            Assert.IsTrue(response?.Content.Length > 0);
        }
Ejemplo n.º 3
0
        public void CanGetOkStatusForSpirit()
        {
            // Arrange
            var nasaPhotoRequest = new NasaPhotoRequest
            {
                apiKey    = "DEMO_KEY",
                imageDate = DateTime.Today,
                rover     = "spirit"
            };

            var baseEndpoint = "https://api.nasa.gov/mars-photos/api/v1/";

            // Act
            var photoRepository = new NasaPhotoRepository(baseEndpoint);

            var response = photoRepository.Get(nasaPhotoRequest);

            // Assert
            Assert.IsTrue(response.IsSuccessful);
        }
Ejemplo n.º 4
0
        public IHttpActionResult GetImagesByDate([FromUri] NasaPhotoRequest photoRequest)
        {
            // Check model validity
            if (!ModelState.IsValid)
            {
                var badRequestResponse = new BadRequest("Request is malformed", photoRequest);

                return(Content(HttpStatusCode.BadRequest, badRequestResponse));
            }

            var imageRepo = new NasaPhotoRepository("https://api.nasa.gov/mars-photos/api/v1/");

            // Get response from the service
            var response = imageRepo.Get(photoRequest);

            // Handle non-success states
            if (!response.IsSuccessful)
            {
                var responseObject = JsonConvert.DeserializeObject(response.Content);

                return(Content(response.StatusCode, responseObject));
            }

            // Get an object from the response content
            var nasaImageResponse = JsonConvert.DeserializeObject <NasaPhotoResponse>(response.Content);

            // build the image path
            var imageFileService = new ImageFileService(photoRequest.savePath);

            // Get the image response
            try
            {
                return(Ok(imageFileService.HandleNasaResponse(nasaImageResponse)));
            }
            catch (Exception e)
            {
                var exception = new Exception("Unable to save photos. View InnerException for more details.", e);

                return(InternalServerError(exception));
            }
        }