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); }
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(); } }
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); }
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>(); } } }
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)); }
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)); }
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); }
public async Task <IActionResult> CreateMovie(MovieForCreation movieForCreation) { var _movie = await _moviesRepository.AddMovieAsync(movieForCreation); return(CreatedAtRoute("GetMovie", new { movieId = _movie.Id }, _movie)); }