public ActionResult SalvarAlbum([FromBody] AlbumRequestDTO albumDTO) { var album = new Album(albumDTO.Nome); var inconsistencias = albumService.VerificarInconsistenciasEmUmNovoAlbum(album); if (inconsistencias.Any()) { return(BadRequest(inconsistencias)); } albumRepository.CriarAlbum(album); return(Ok(album)); }
public ActionResult PostDeNovoAlbum([FromBody] AlbumRequestDTO albumDTO) { var album = new Album(albumDTO.Nome); var inconsistencias = albumService.VerificarInconsistencia(album); if (inconsistencias.Any()) { return(BadRequest(inconsistencias)); } database.InsereNovoAlbum(album); return(CreatedAtRoute("GetAlbumPeloId", new { id = album.Id }, album)); }
public ActionResult <Album> PostResource([FromBody] AlbumRequestDTO album) { // Tjek om forespørgselsobjektet er validt if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { // Opret nyt album-objekt var newAlbum = new Album { Artist = album.Artist, Title = album.Title, Released = album.Released, Label = album.Label, CoverImageUrl = album.CoverImageUrl, Tracks = new List <Track>() }; // Opret et track-objekt for hvert track foreach (TrackRequestDTO track in album.Tracks) { var newTrack = new Track { Length = track.Length, Title = track.Title, Number = track.Number }; // Tilføj track til nyt album newAlbum.Tracks.Add(newTrack); } // Tilføj album til repository (dvs. databasen) _repo.Add(newAlbum); // Returner 201 Created med det oprettede objekt return(CreatedAtAction(nameof(GetById), new { id = newAlbum.Id }, newAlbum)); } catch (Exception ex) { // Hvis noget går galt, returner 500 return(StatusCode(StatusCodes.Status500InternalServerError, ex)); } }
// Upload data til CatalogApi private async Task <AlbumDTO> PostMetadata(AlbumRequestDTO newAlbumRequest, string accessToken) { // Send albummet til CatalogApi var apiClient = new HttpClient(); apiClient.SetBearerToken(accessToken); string newAlbumRequestAsJson = JsonConvert.SerializeObject(newAlbumRequest); // Hent url i environment-variable var catalogApiUrl = System.Environment.GetEnvironmentVariable("CATALOG_LOAD_BALANCER"); try { var response = await apiClient.PostAsync(catalogApiUrl, new StringContent(newAlbumRequestAsJson, Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { Log("XML-data kunne ikke sendes til katalog-API'et", true); throw new Exception(); } else { try { var newAlbum = JsonConvert.DeserializeObject <AlbumDTO>(await response.Content.ReadAsStringAsync()); Log("XML-data blevet sendt succesfuldt til album-API'et"); return(newAlbum); } catch (Exception e) { Log("Data fra katalog-API'et kunne ikke deserialiseres", true); Console.WriteLine(e); throw new Exception(); } } } catch (System.Net.Http.HttpRequestException) { Log("Der kunne ikke oprettes forbindelse til katalog-API'et", true); throw new Exception(); } }
public ActionResult AlterarAlbum(int id, [FromBody] AlbumRequestDTO albumDTO) { var albumAlterado = new Album(albumDTO.Nome); if (albumAlterado == null) { return(NotFound("Album não encontrado")); } var inconsistencias = albumService.VerificarInconsistenciasEmUmNovoAlbum(albumAlterado); if (inconsistencias.Any()) { return(BadRequest(inconsistencias)); } albumRepository.AlterarAlbum(id, albumAlterado); return(Ok(albumAlterado)); }
// Deserialiser albummet til et AlbumRequestDTO-objekt private AlbumRequestDTO DeserializeAlbums(XDocument metadataXmlDoc) { try { // Deserialiser XML til objekt AlbumRequestDTO newAlbum = new AlbumRequestDTO(); XmlSerializer xmlFormat = new XmlSerializer(typeof(AlbumRequestDTO)); using (XmlReader xmlReader = metadataXmlDoc.Root.CreateReader()) { newAlbum = (AlbumRequestDTO)xmlFormat.Deserialize(xmlReader); } Log("XML-filen blev deserialiseret korrekt"); return(newAlbum); } catch (Exception ex) { Log("XML-filen kunne ikke deserialiseres:\n" + ex, true); throw ex; } }
public ActionResult PutAtualizaAlbum(int id, [FromBody] AlbumRequestDTO albumDTO) { var album = database.BuscaAlbumPorId(id); if (album == null) { return(NotFound("Não existe album com esse id")); } var albumAtualizado = new Album(albumDTO.Nome); albumAtualizado.Id = album.Id; List <Musica> musicasDoAlbum = album.Musicas; foreach (Musica musica in musicasDoAlbum) { albumAtualizado.AdicionarMusica(musica); } database.AtualizaAlbum(albumAtualizado); return(Ok("Album atualizado")); }
// Validér pakkestruktur (mappenavn og track-numre) private void ValidateStructure(string packageRoot, AlbumRequestDTO album) { // Track-numre fra metadata List <int> trackNumbers = album.Tracks.Select(a => a.Number).ToList(); // Liste med mapper i rod-mappen string [] directories = Directory.GetDirectories(packageRoot); if (directories.Length == 1) { // Pakken indeholder netop én mappe var dataFolder = directories[0]; if (Path.GetRelativePath(packageRoot, dataFolder) == "data") { // Mappen er navngivet korrekt; string [] musicFiles = Directory.GetFiles(dataFolder); List <int> fileNames = new List <int>(); foreach (string file in musicFiles) { // Tjek filendelse if (Path.GetExtension(file) != ".wav") { Log("En track-fil har ikke endelse '.wav'", true); throw new Exception(); } try { // Forsøg at parse track-filnavn til integer fileNames.Add(Int32.Parse(Path.GetFileNameWithoutExtension(file))); } catch (Exception ex) { Log("Et filnavn er ikke et tal", true); throw ex; } } // Sammenlign tracknumre fra metadata med filnavne trackNumbers.Sort(); fileNames.Sort(); bool areEqual = trackNumbers.SequenceEqual(fileNames); if (areEqual) { Log("Datapakkens struktur er korrekt"); } else { Log("Track-numre i metadata og i datamappen stemmer ikke overens", true); throw new Exception(); } } else { Log("Datamappen er navngivet forkert - skal hedde 'data'", true); throw new Exception(); } } else { Log("Der er ikke det korrekte antal mapper i pakkens rod - der skal være én", true); throw new Exception(); } }