From a1c3ccb66f447be356cbe081d95d3d1db98355a3 Mon Sep 17 00:00:00 2001 From: amazing-username Date: Sat, 16 Mar 2019 23:02:01 -0400 Subject: [PATCH] Created functionality to upload song data. #6 --- Controllers/Managers/SongManager.cs | 75 +++++++++++++++++++++++++++++ Controllers/SongController.cs | 75 +++++++++++++++++++++++++++++ Icarus.csproj | 2 + Models/Song.cs | 11 +++++ 4 files changed, 163 insertions(+) create mode 100644 Controllers/Managers/SongManager.cs create mode 100644 Controllers/SongController.cs diff --git a/Controllers/Managers/SongManager.cs b/Controllers/Managers/SongManager.cs new file mode 100644 index 0000000..a23cfbf --- /dev/null +++ b/Controllers/Managers/SongManager.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Configuration; + +using Microsoft.Extensions.Configuration; + +using MySql.Data; +using MySql.Data.MySqlClient; + +using Icarus.Models; + +namespace Icarus.Controllers.Managers +{ + public class SongManager + { + #region Fields + private List _songs; + private Song _song; + private IConfiguration _config; + private string _connectionString; + #endregion + + + #region Properties + #endregion + + + #region Constructors + public SongManager() + { + Initialize(); + } + + public SongManager(Song song) + { + Initialize(); + _song = song; + } + public SongManager(IConfiguration config) + { + Initialize(); + _config = config; + } + #endregion + + + #region Methods + public void SaveSong(Song song) + { + _song = song; + + } + + public Song RetrieveSong(int id) + { + return new Song(); + } + + + void Initialize() + { + try + { + _connectionString = _config.GetConnectionString("IcarusDev"); + Console.WriteLine(_connectionString); + } + catch (Exception ex) + { + Console.WriteLine($"Error Occurred: {ex.Message}"); + } + + } + #endregion + } +} diff --git a/Controllers/SongController.cs b/Controllers/SongController.cs new file mode 100644 index 0000000..46b7440 --- /dev/null +++ b/Controllers/SongController.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; + +using Icarus.Controllers.Managers; +using Icarus.Models; + +namespace Icarus.Controllers +{ + [Route("api/Song")] + [ApiController] + public class SongController : ControllerBase + { + #region Fields + private SongManager _songMgr; + #endregion + + + #region Properties + #endregion + + + #region Constructor + public SongController(IConfiguration config) + { + _songMgr = new SongManager(config); + } + #endregion + + + // GET api/song + [HttpGet] + public ActionResult> Get() + { + List songs = new List(); + + + return songs; + } + + // GET api/song/5 + [HttpGet("{id}")] + public ActionResult Get(int id) + { + Song song = _songMgr.RetrieveSong(id); + + return song; + } + + // POST api/song + [HttpPost] + public void Post([FromBody] Song song) + { + Console.WriteLine("The song's title is: "); + Console.WriteLine(song.Title); + _songMgr.SaveSong(song); + } + + // PUT api/song/5 + [HttpPut("{id}")] + public void Put(int id, [FromBody] Song song) + { + } + + // DELETE api/song/5 + [HttpDelete("{id}")] + public void Delete(int id) + { + } + } +} diff --git a/Icarus.csproj b/Icarus.csproj index 423afac..da147b4 100644 --- a/Icarus.csproj +++ b/Icarus.csproj @@ -8,6 +8,8 @@ + + diff --git a/Models/Song.cs b/Models/Song.cs index f82eb93..891a592 100644 --- a/Models/Song.cs +++ b/Models/Song.cs @@ -1,15 +1,26 @@ using System; +using Newtonsoft.Json; + namespace Icarus.Models { public class Song { + [JsonProperty("id")] + public int Id { get; set; } + [JsonProperty("title")] public string Title { get; set; } + [JsonProperty("album")] public string Album { get; set; } + [JsonProperty("artist")] public string Artist { get; set; } + [JsonProperty("year")] public int Year { get; set; } + [JsonProperty("genre")] public string Genre { get; set; } + [JsonProperty("duration")] public int Duration { get; set; } + [JsonProperty("song_data")] public byte[] SongFile { get; set; } } }