public async Task CreateResource()
        {
            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservoir Dogs",
                Description = "After a simple jewelry heist goes terribly wrong, the " +
                              "surviving criminals begin to suspect that one of them is a police informant.",
                DirectorId  = Guid.Parse("d28888e9-2ba9-473a-a40f-e38cb54f9b35"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var serializedMovieToCreate = JsonConvert.SerializeObject(movieToCreate);

            var request = new HttpRequestMessage(HttpMethod.Post, "api/movies");

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            request.Content = new StringContent(serializedMovieToCreate);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var response = await _httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
Example #2
0
        public async Task CreateResource()
        {
            var movieToCreate = new MovieForCreation
            {
                Title       = "Reservoir Dogs",
                Description = "Some desc",
                DirectorId  = Guid.Parse("69cb27e5-46ac-4434-a462-cf2826cd61aa"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };
            var serializedMovie = JsonConvert.SerializeObject(movieToCreate);

            var request = new HttpRequestMessage(HttpMethod.Post, "api/movies");

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(appJson));

            request.Content = new StringContent(serializedMovie);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue(appJson);

            var response = await httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
        private async Task PostResourceShortcut()
        {
            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservoir Dogs",
                Description = "After a simple jewelry heist goes terribly wrong, the " +
                              "surviving criminals begin to suspect that one of them is a police informant.",
                DirectorId  = Guid.Parse("d28888e9-2ba9-473a-a40f-e38cb54f9b35"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var response = await _httpClient.PostAsync(
                "api/movies",
                new StringContent(
                    JsonConvert.SerializeObject(movieToCreate),
                    Encoding.UTF8,
                    "application/json"));

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
        private async Task PostResourceShortcut()
        {
            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservoir Dogs",
                Description = "After a simple jewelery heist goes terribly wrong, the" +
                              "surviving criminals begin to suspect that one of them is an informant",
                DirectorId  = Guid.Parse("0c4dc798-b38b-4a1c-905c-a9e76dbef17b"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            // issue with using such shortcut is Accept header isn't automatically set, so the
            // only way is to set at the HttpClient level or
            // create request using HttpRequestMessage for each request.
            var response = await _httpClient.PostAsync(
                "api/movies",
                new StringContent(
                    JsonConvert.SerializeObject(movieToCreate),
                    Encoding.UTF8,
                    "application/json"));

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
        private async Task PostMovieAndHandleValidationError(CancellationToken cancellationToken)
        {
            var movie = new MovieForCreation()
            {
                Title       = "Pulp Fiction",
                Description = "Too short",   // Invalid length
                DirectorId  = Guid.Parse("d28888e9-2ba9-473a-a40f-e38cb54f9b35"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            using var request = new HttpRequestMessage(HttpMethod.Post, "/api/movies/");

            request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
            request.Content = new StringContent(JsonConvert.SerializeObject(movie));
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            using var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken);

            if (!response.IsSuccessStatusCode)
            {
                if (response.StatusCode == HttpStatusCode.UnprocessableEntity)
                {
                    var errorStream = await response.Content.ReadAsStreamAsync();

                    var validationErrors = errorStream.ReadAndDeSerializeFromJson();
                    _logger.LogInformation($"Validation Error: {validationErrors}");
                }

                _logger.LogInformation("oops e doopsy");

                response.EnsureSuccessStatusCode();
            }
        }
Example #6
0
        public async Task CreateResource()
        {
            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservoir Dogs",
                Description = "Test hello",
                DirectorId  = Guid.Parse("d28888e9-2ba9-473a-a40f-e38cb54f9b35"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var serializedMovieToCreate = JsonConvert.SerializeObject(movieToCreate);

            var request = new HttpRequestMessage(HttpMethod.Post, "api/movies");

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            request.Content = new StringContent(serializedMovieToCreate);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var response = await httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
        private async Task UpdateResource()
        {
            var movieToUpdate = new MovieForCreation()
            {
                Title       = "Pulp Fiction",
                Description = "The movie with Bruce Willis",
                DirectorId  = Guid.Parse("d28888e9-2ba9-473a-a40f-e38cb54f9b35"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var serializedMovieToUpdate = JsonConvert.SerializeObject(movieToUpdate);

            var request = new HttpRequestMessage(HttpMethod.Put,
                                                 "api/movies/5b1c2b4d-48c7-402a-80c3-cc796ad49c6b");

            // set request header
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            request.Content = new StringContent(serializedMovieToUpdate);

            // set request content header
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var response = await _httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var updatedMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
Example #8
0
        public async Task CreateResource()
        {
            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservior Dogs",
                Description = "sdfgsdf sfgsdfg",
                DirectorId  = Guid.Parse("da2fd609-d754-4feb-8acd-c4f9ff13ba96"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var serializedMovieToCreate = JsonConvert.SerializeObject(movieToCreate);

            var request = new HttpRequestMessage(HttpMethod.Post, "api/movies");

            request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            request.Content = new StringContent(serializedMovieToCreate);
            request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

            var response = await _httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
        private async Task PostMovieAndHandlevalidationErrors(CancellationToken cancellationToken)
        {
            var httpClient = _httpClientFactory.CreateClient("MoviesClient");

            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservior Dogs III",
                Description = "too short",
                DirectorId  = Guid.Parse("da2fd609-d754-4feb-8acd-c4f9ff13ba96"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var serializedMovieForCreation = JsonConvert.SerializeObject(movieToCreate);

            using (var request = new HttpRequestMessage(HttpMethod.Post, "api/movies"))
            {
                request.Headers.Accept.Add(
                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                request.Headers.AcceptEncoding
                .Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("gzip"));

                request.Content = new StringContent(serializedMovieForCreation);
                request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

                using (var response = await httpClient
                                      .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken))
                {
                    if (!response.IsSuccessStatusCode)
                    {
                        if (response.StatusCode == System.Net.HttpStatusCode.UnprocessableEntity)
                        {
                            var errorStream = await response.Content.ReadAsStreamAsync();

                            using (var streamReader = new StreamReader(errorStream))
                            {
                                using (var jsonTextReader = new JsonTextReader(streamReader))
                                {
                                    var jsonSerializer   = new JsonSerializer();
                                    var validationErrors = jsonSerializer.Deserialize(jsonTextReader);
                                    Console.WriteLine(validationErrors);
                                    return;
                                }
                            }
                        }
                        else
                        {
                            response.EnsureSuccessStatusCode();
                        }
                    }

                    var stream = await response.Content.ReadAsStreamAsync();

                    var movie = stream.ReadAndDeserializeFromJson <Movie>();
                }
            }
        }
        private async Task PostMovieAndHandleValidationErrors(CancellationToken cancellationToken)
        {
            var httpClient = _httpClientFactory.CreateClient("MoviesClient");

            var movieForCreation = new MovieForCreation()
            {
                Title       = "Pulp Fiction",
                Description = "Too short",
                DirectorId  = Guid.Parse("d28888e9-2ba9-473a-a40f-e38cb54f9b35"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var serializedMovieForCreation = JsonConvert.SerializeObject(movieForCreation);

            using (var request = new HttpRequestMessage(
                       HttpMethod.Post,
                       "api/movies"))
            {
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
                request.Content = new StringContent(serializedMovieForCreation);
                request.Content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json");

                using (var response = await httpClient.SendAsync(request,
                                                                 HttpCompletionOption.ResponseHeadersRead,
                                                                 cancellationToken))
                {
                    if (!response.IsSuccessStatusCode)
                    {
                        //inspect the status code
                        if (response.StatusCode == System.Net.HttpStatusCode.UnprocessableEntity)
                        {
                            //reaad validation errors from response body as stream
                            var errorStream = await response.Content.ReadAsStreamAsync();

                            var validationErrors = errorStream.ReadAndDeserializeFromJson();
                            Console.WriteLine(validationErrors);
                            return;
                        }
                        else
                        {
                            response.EnsureSuccessStatusCode();
                        }
                    }


                    var stream = await response.Content.ReadAsStreamAsync();

                    var movie = stream.ReadAndDeserializeFromJson <Movie>();
                }
            }
        }
Example #11
0
        public async Task <IActionResult> CreateMovie([FromBody] MovieForCreation movie)
        {
            var movieEntity = _mapper.Map <Core.Entities.Movie>(movie);

            _moviesRepository.AddMovie(movieEntity);

            await _moviesRepository.SaveChangesAsync();

            await _moviesRepository.GetMovieAsync(movieEntity.Id);

            return(CreatedAtRoute("GetMovie", new { movieId = movieEntity.Id }, movieEntity));
        }
Example #12
0
        public async Task <Movie> AddMovieAsync(MovieForCreation movieToAdd)
        {
            var movieEntity = _mapper.Map <Domain.Entities.Movies.Movie>(movieToAdd);

            _context.Movies.Add(movieEntity);

            // save the changes and throw error if it fails to save
            if (!await SaveChangesAsync())
            {
                throw new BadRequestException("Something went wrong. Could not add new movie.");
            }

            // Fetch the movie from the data store so the director is included
            var newMovieEntity = await _context.Movies.FirstOrDefaultAsync(m => m.Id == movieEntity.Id);

            return(_mapper.Map <Movie>(newMovieEntity));
        }
Example #13
0
        public async Task PostResourceShortcut()
        {
            var movieToCreate = new MovieForCreation()
            {
                Title       = "Reservior Dogs II",
                Description = "sdfgsdf sfgsdfg",
                DirectorId  = Guid.Parse("da2fd609-d754-4feb-8acd-c4f9ff13ba96"),
                ReleaseDate = new DateTimeOffset(new DateTime(1992, 9, 2)),
                Genre       = "Crime, Drama"
            };

            var response = await _httpClient.PostAsync("api/movies",
                                                       new StringContent(JsonConvert.SerializeObject(movieToCreate), Encoding.UTF8, "application/json"));

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var createdMovie = JsonConvert.DeserializeObject <Movie>(content);
        }
Example #14
0
        public async Task <IActionResult> CreateMovie(MovieForCreation movieForCreation)
        {
            var _movie = await _moviesRepository.AddMovieAsync(movieForCreation);

            return(CreatedAtRoute("GetMovie", new { movieId = _movie.Id }, _movie));
        }