public HttpResponseMessage RegisterSong([FromBody] RegisterSongRequest request)
 {
     try
     {
         logger.Info("Registering song");
         var savedSong = playlist.Add(request);
         return(this.Request.CreateResponse(HttpStatusCode.Created, savedSong));
     }
     catch (SongAlreadyExistsException e)
     {
         logger.Warn("Song already registered");
         return(this.Request.CreateResponse(HttpStatusCode.BadRequest));
     }
 }
        /// <summary>
        /// Registers a song.
        /// </summary>
        /// <param name="request">The song request to register.</param>
        /// <returns>The registered song.</returns>
        public Song AddSong(RegisterSongRequest request)
        {
            Song result;

            try
            {
                var songId = playlist.Add(request);
                result = playlist.GetById(songId).GetValueOrDefault(new Song());
            }
            catch (SongAlreadyExistsException e)
            {
                result = new Song();
            }
            catch (Exception e)
            {
                logger.Error(e.ToString());
                System.Diagnostics.Trace.Write(e.ToString());
                result = new Song();
            }

            return(result);
        }
        public void AddAndRetrieveSong()
        {
            var savedSongId = musicPlaylist.Add(_registerSongRequest);

            var savedSong = musicPlaylist.GetById(savedSongId);

            Assert.AreEqual(savedSong.HasValue, true);
            Assert.AreEqual(savedSong.Value.Artist, "::artist::");
            Assert.AreEqual(savedSong.Value.Title, "::title::");
            Assert.IsTrue(savedSong.Value.Genres.SequenceEqual(new List <string>()
            {
                "pop"
            }));
        }