using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; using IF.Lastfm.Core.Api.Enums; using IF.Lastfm.Core.Api.Helpers; using IF.Lastfm.Core.Objects; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace IF.Lastfm.Core.Api { public class AlbumApi : IAlbumApi { public IAuth Auth { get; private set; } public AlbumApi(IAuth auth) { Auth = auth; } #region album.getInfo public async Task> GetAlbumInfoAsync(string artistname, string albumname, bool autocorrect = false) { const string apiMethod = "album.getInfo"; var parameters = new Dictionary { {"artist", artistname}, {"album", albumname}, {"autocorrect", Convert.ToInt32(autocorrect).ToString()} }; var httpClient = new HttpClient(); var apiUrl = LastFm.FormatApiUrl(apiMethod, Auth.ApiKey, parameters); var lastResponse = await httpClient.GetAsync(apiUrl); var json = await lastResponse.Content.ReadAsStringAsync(); LastFmApiError error; if (LastFm.IsResponseValid(json, out error) && lastResponse.IsSuccessStatusCode) { var jtoken = JsonConvert.DeserializeObject(json); var album = Album.ParseJToken(jtoken.SelectToken("album")); return LastResponse.CreateSuccessResponse(album); } else { return LastResponse.CreateErrorResponse(error); } } public Task> GetAlbumInfoWithMbidAsync(string mbid, bool autocorrect = false) { throw new NotImplementedException(); } #endregion #region album.getBuylinks public Task> GetBuyLinksForAlbumAsync(string artist, string album, CountryCode country, bool autocorrect = false) { throw new NotImplementedException(); } public Task> GetBuyLinksForAlbumWithMbidAsync(string mbid, CountryCode country, bool autocorrect = false) { throw new NotImplementedException(); } #endregion #region album.getShouts public Task> GetShoutsForAlbumAsync(string artist, string album, bool autocorrect = false, int page = 1, int itemsPerPage = LastFm.DefaultPageLength) { throw new NotImplementedException(); } public Task> GetShoutsForAlbumWithMbidAsync(string mbid, bool autocorrect = false, int page = 1, int itemsPerPage = LastFm.DefaultPageLength) { throw new NotImplementedException(); } #endregion #region album.getTags public Task> GetUserTagsForAlbumAsync(string artist, string album, bool autocorrect = false) { throw new NotImplementedException(); } public Task> GetUserTagsForAlbumWithMbidAsync(string mbid, bool autocorrect = false) { throw new NotImplementedException(); } #endregion #region album.getTopTags public Task> GetTopTagsForAlbumAsync(string artist, string album, bool autocorrect = false) { throw new NotImplementedException(); } public Task> GetTopTagsForAlbumWithMbidAsync(string mbid, bool autocorrect = false) { throw new NotImplementedException(); } #endregion #region album.search public Task> SearchForAlbumAsync(string album, int page = 1, int itemsPerPage = LastFm.DefaultPageLength) { throw new NotImplementedException(); } #endregion } }