// PUT api/Albums/5 public HttpResponseMessage PutAlbum(int id, Album album) { if (!ModelState.IsValid) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } var albumToUpdate = db.Albums.FirstOrDefault(a => a.AlbumId == id); if (albumToUpdate != null && album != null) { albumToUpdate.AlbumTitle = album.AlbumTitle ?? albumToUpdate.AlbumTitle; albumToUpdate.AlbumYear = album.AlbumYear ?? albumToUpdate.AlbumYear; albumToUpdate.Producer = album.Producer ?? albumToUpdate.Producer; } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } db.Entry(albumToUpdate).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException ex) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex); } return Request.CreateResponse(HttpStatusCode.OK); }
static void Main() { var baseUrl = "http://localhost:12243/"; var contentType = "application/json"; var requester = new HttpRequester(baseUrl, contentType); // Test album Creation Album album = new Album { Producer = "Pesho", Title = "Testov album", ReleaseDate = DateTime.Now }; requester.Post<Album>("api/album", album); Console.WriteLine("Simple Album added!"); Song song = new Song { Genre = "RnB", Title = "Shake it!", Year = DateTime.Now.AddYears(-20) }; Artist artist = new Artist { Name = "Pesho Zlia", BirthDate = new DateTime(1950, 1, 1), Country = "Germany" }; album.Songs.Add(song); album.Artists.Add(artist); requester.Post<Album>("api/album", album); Console.WriteLine("Album added!"); // Test albums Retrieving var retrievedAlbums = requester.Get<IList<Album>>("api/album/"); foreach (var retrievedAlbum in retrievedAlbums) { Console.WriteLine("Album found! Title:" + retrievedAlbum.Title); } // Test one album Retrieving var getedAlbum = requester.Get<Album>("api/album/" + retrievedAlbums[0].AlbumId); Console.WriteLine("First Album found! Title:" + getedAlbum.Title); // Test album updating getedAlbum.Title = "Updated Title"; requester.Put<Album>("api/album/" + getedAlbum.AlbumId, getedAlbum); Console.WriteLine("Title updated!"); // Check new title getedAlbum = requester.Get<Album>("api/album/" + retrievedAlbums[0].AlbumId); Console.WriteLine("First Album found! Title:" + getedAlbum.Title); // Add Album newAlbum = new Album { Producer = "Pesho", Title = "Testov album", ReleaseDate = DateTime.Now }; //Delete the album! requester.Delete<Album>("api/album/" + getedAlbum.AlbumId, getedAlbum); Console.WriteLine("Album deleted"); }
// POST api/Albums public HttpResponseMessage PostAlbum(Album album) { if (ModelState.IsValid) { foreach (var artist in album.Artists) { db.Artists.Attach(artist); } db.Albums.Add(album); db.SaveChanges(); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, album); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = album.AlbumId })); return response; } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } }
internal static void AddNewAlbum(string title, string producer, int? year, string applicationType, string artistName) { Artist artist = AllArtists.FirstOrDefault(a => a.ArtistName == artistName); if (artist == null) { Console.WriteLine("Artist doesn't exist."); return; } // Add an Accept header for JSON format. Client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(applicationType)); var album = new Album { AlbumTitle = title, AlbumYear = year, Producer = producer }; album.Artists.Add(artist); HttpResponseMessage response = null; if (applicationType == "application/json") { response = Client.PostAsJsonAsync("api/Albums", album).Result; } else { response = Client.PostAsXmlAsync("api/Albums", album).Result; } if (response.IsSuccessStatusCode) { Console.WriteLine("Album added!"); int albumID = int.Parse(response.Headers.Location.Segments[3]); album.AlbumId = albumID; artist.Albums.Add(album); } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } }
private static void UpdateAlbum(string artistName, string title, string newTitle, int? year, string producer, string applicationType) { if (string.IsNullOrWhiteSpace(title)) { Console.WriteLine("Album title cannot be empty."); } var artist = AllArtists.FirstOrDefault(a => a.ArtistName == artistName); if (artist == null) { Console.WriteLine("No such artist."); } var album = artist.Albums.FirstOrDefault(a => a.AlbumTitle == title); if (album == null) { Console.WriteLine("No such album."); } var modelAlbum = new Album { AlbumTitle = newTitle, AlbumYear = year, Producer = producer }; HttpResponseMessage response = null; if (applicationType == "application/json") { response = Client.PutAsJsonAsync("api/Albums/" + album.AlbumId, modelAlbum).Result; } else { response = Client.PutAsXmlAsync("api/Albums/" + album.AlbumId, modelAlbum).Result; } if (response.IsSuccessStatusCode) { album.AlbumTitle = modelAlbum.AlbumTitle ?? album.AlbumTitle; album.AlbumYear = modelAlbum.AlbumYear ?? album.AlbumYear; album.Producer = modelAlbum.Producer ?? album.Producer; Console.WriteLine("Album updated!"); } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } }