/// <summary> /// Obtiene una canción /// </summary> /// <param name="p_song_id"> /// int que es el id de la canción /// </param> /// <returns> /// Objeto Song que contiene los parametros /// de una canción /// </returns> public async Task<Song> getSongById(int p_song_id) { Song song = new Song(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(server_url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format)); HttpResponseMessage response = await client.GetAsync(songs_path + "/" + p_song_id); if (response.IsSuccessStatusCode) { Console.WriteLine("\nHubo ok con el server"); song = await response.Content.ReadAsAsync<Song>(); } else { Console.WriteLine("\nAlgo salio mal D-: codigo {0}", response.StatusCode); song = null; } } return song; }
/// <summary> /// Le asigna una una metada a una canción /// </summary> /// <param name="p_song_id"> /// id de la canción /// </param> /// <param name="p_version_id"> /// id de la versión que se le va a asignar /// </param> /// <returns> /// bool true si se logra asignar, false en cualquier otro caso /// </returns> public async Task<bool> setMetadataSong(int p_song_id, int p_version_id) { bool flag = false; Song song = new Song(); Version version = new Version(); using (HttpClient client = new HttpClient()) { client.BaseAddress = new Uri(server_url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format)); HttpResponseMessage song_res = await client.GetAsync(songs_path + "/" + p_song_id.ToString()); song = await song_res.Content.ReadAsAsync<Song>(); if (song_res.IsSuccessStatusCode) { song.metadata_id = p_version_id; HttpResponseMessage sng_upd = await client.PutAsJsonAsync<Song>(songs_path + "/" + song.song_id.ToString(), song); if (sng_upd.IsSuccessStatusCode) { flag = true; } else { flag = false; } } else { flag = false; } } return flag; }
/// <summary> /// Crea una version nueva pero con un objeto Song /// </summary> /// <param name="new_version"> /// Version que se le va a agregar a la canción /// </param> /// <param name="song"> /// Canción a la que se le asigna la version /// </param> /// <returns> /// Objeto Song que contiene los valores de la cancion /// y con una version asignada /// </returns> public async Task<Song> createVersion(List<string> new_version, Song song) { Version ver = new Version(new_version, song.song_id); using (var client = new HttpClient()) { client.BaseAddress = new Uri(server_url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format)); HttpResponseMessage response = await client.PostAsJsonAsync(versions_path, ver); if (response.IsSuccessStatusCode) { ver = await response.Content.ReadAsAsync<Version>(); song.metadata_id = ver.version_id; HttpResponseMessage updsng = await client.PutAsJsonAsync<Song>(songs_path + "/" + song.song_id, song); if (updsng.IsSuccessStatusCode) { Console.WriteLine("\nSe creo correctamente, metadata_id {0}", song.metadata_id); } else { song = null; Console.WriteLine("\nError {0}", updsng.StatusCode); } } else { song = null; } } return song; }
/// <summary> /// Agrega una canción a un usuario /// </summary> /// <param name="p_user_name"> /// Nombre del usaurio al que se le va a agregar /// la canción /// </param> /// <param name="p_song_name"> /// Nombre de la canción que se va a agregar /// </param> /// <param name="song"> /// Objeto Song que tiene los parametros necearios /// para unir las canciones /// </param> /// <returns> /// bool true si se logra crear el enlace, false en cualquier /// otro caso /// </returns> public async Task<bool> addSong2user(string p_user_name, string p_song_name, Song song) { bool flag = false; Property prop = new Property() { user_name = p_user_name, song_name = p_song_name, song_id = song.song_id }; using (HttpClient client = new HttpClient()) { client.BaseAddress = new Uri(server_url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format)); HttpResponseMessage response = await client.PostAsJsonAsync<Property>(properties_path, prop); if (response.IsSuccessStatusCode) { flag = true; Console.WriteLine("\nSe agrego bien la cancion"); } else { flag = false; Console.WriteLine("\nEl codigo de error: {0}", response.StatusCode); } } return flag; }
/// <summary> /// Crea una nueva canción /// </summary> /// <param name="p_song_directory"> /// Directorio donde se encuetra la canción. /// </param> /// <returns> /// Un objeto song con la información de la canción /// </returns> public async Task<Song> createSong(string p_song_directory) { Song result = new Song(); Song song = new Song() { song_id = -1, metadata_id = -1, song_directory = p_song_directory }; using (var client = new HttpClient()) { client.BaseAddress = new Uri(server_url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format)); HttpResponseMessage response = await client.PostAsJsonAsync(songs_path, song); if (response.IsSuccessStatusCode) { result = await response.Content.ReadAsAsync<Song>(); bool res = await addMongoSong(result.song_id); if (!res) { Console.WriteLine("No se puedo agregar a Mongo la cancion id {0}", result.song_id); } } else { result = null; Console.WriteLine("\nCodigo de error {0}", response.StatusCode); } } return result; }