Rename track, album and artist objects

This commit is contained in:
Harry 2014-10-07 10:12:09 -04:00
parent 878e7c0e63
commit c8429bd361
24 changed files with 93 additions and 93 deletions

View File

@ -17,9 +17,9 @@ public void AlbumParsesValidJson()
{ {
var jo = ResourceManager.LoadResource(Encoding.UTF8.GetString(TestData.AlbumGetInfo)); var jo = ResourceManager.LoadResource(Encoding.UTF8.GetString(TestData.AlbumGetInfo));
var parsed = Album.ParseJToken(jo.SelectToken("album")); var parsed = LastAlbum.ParseJToken(jo.SelectToken("album"));
var expected = new Album var expected = new LastAlbum
{ {
ArtistId = "283786832", ArtistId = "283786832",
ArtistName = "Grimes", ArtistName = "Grimes",
@ -42,7 +42,7 @@ public void AlbumParsesValidJson()
Url = new Uri("http://www.last.fm/tag/best%20of%202012", UriKind.Absolute) Url = new Uri("http://www.last.fm/tag/best%20of%202012", UriKind.Absolute)
} }
}, },
Tracks = new List<Track> Tracks = new List<LastTrack>
{ {
} }
}; };

View File

@ -15,7 +15,7 @@ public AlbumApi(IAuth auth)
Auth = auth; Auth = auth;
} }
public async Task<LastResponse<Album>> GetAlbumInfoAsync(string artistname, string albumname, bool autocorrect = false) public async Task<LastResponse<LastAlbum>> GetAlbumInfoAsync(string artistname, string albumname, bool autocorrect = false)
{ {
var command = new GetAlbumInfoCommand(Auth, artistname, albumname) var command = new GetAlbumInfoCommand(Auth, artistname, albumname)
{ {
@ -40,7 +40,7 @@ public Task<PageResponse<Tag>> GetTopTagsForAlbumAsync(string artist, string alb
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<PageResponse<Album>> SearchForAlbumAsync(string album, int page = 1, int itemsPerPage = LastFm.DefaultPageLength) public Task<PageResponse<LastAlbum>> SearchForAlbumAsync(string album, int page = 1, int itemsPerPage = LastFm.DefaultPageLength)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

View File

@ -15,7 +15,7 @@ public ArtistApi(IAuth auth)
Auth = auth; Auth = auth;
} }
public async Task<LastResponse<Artist>> GetArtistInfoAsync(string artist, public async Task<LastResponse<LastArtist>> GetArtistInfoAsync(string artist,
string bioLang = LastFm.DefaultLanguageCode, string bioLang = LastFm.DefaultLanguageCode,
bool autocorrect = false) bool autocorrect = false)
{ {
@ -28,7 +28,7 @@ public async Task<LastResponse<Artist>> GetArtistInfoAsync(string artist,
return await command.ExecuteAsync(); return await command.ExecuteAsync();
} }
public async Task<PageResponse<Album>> GetTopAlbumsForArtistAsync(string artist, public async Task<PageResponse<LastAlbum>> GetTopAlbumsForArtistAsync(string artist,
bool autocorrect = false, bool autocorrect = false,
int page = 1, int page = 1,
int itemsPerPage = LastFm.DefaultPageLength) int itemsPerPage = LastFm.DefaultPageLength)
@ -37,7 +37,7 @@ public async Task<PageResponse<Album>> GetTopAlbumsForArtistAsync(string artist,
return await command.ExecuteAsync(); return await command.ExecuteAsync();
} }
public async Task<PageResponse<Track>> GetTopTracksForArtistAsync(string artist, public async Task<PageResponse<LastTrack>> GetTopTracksForArtistAsync(string artist,
bool autocorrect = false, bool autocorrect = false,
int page = 1, int page = 1,
int itemsPerPage = LastFm.DefaultPageLength) int itemsPerPage = LastFm.DefaultPageLength)

View File

@ -10,7 +10,7 @@
namespace IF.Lastfm.Core.Api.Commands.AlbumApi namespace IF.Lastfm.Core.Api.Commands.AlbumApi
{ {
internal class GetAlbumInfoCommand : GetAsyncCommandBase<LastResponse<Album>> internal class GetAlbumInfoCommand : GetAsyncCommandBase<LastResponse<LastAlbum>>
{ {
public string ArtistName { get; private set; } public string ArtistName { get; private set; }
public string AlbumName { get; private set; } public string AlbumName { get; private set; }
@ -32,7 +32,7 @@ public override void SetParameters()
base.DisableCaching(); base.DisableCaching();
} }
public async override Task<LastResponse<Album>> HandleResponse(HttpResponseMessage response) public async override Task<LastResponse<LastAlbum>> HandleResponse(HttpResponseMessage response)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
@ -41,13 +41,13 @@ public async override Task<LastResponse<Album>> HandleResponse(HttpResponseMessa
{ {
var jtoken = JsonConvert.DeserializeObject<JToken>(json); var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var album = Album.ParseJToken(jtoken.SelectToken("album")); var album = LastAlbum.ParseJToken(jtoken.SelectToken("album"));
return LastResponse<Album>.CreateSuccessResponse(album); return LastResponse<LastAlbum>.CreateSuccessResponse(album);
} }
else else
{ {
return LastResponse.CreateErrorResponse<LastResponse<Album>>(error); return LastResponse.CreateErrorResponse<LastResponse<LastAlbum>>(error);
} }
} }
} }

View File

@ -9,7 +9,7 @@
namespace IF.Lastfm.Core.Api.Commands.ArtistApi namespace IF.Lastfm.Core.Api.Commands.ArtistApi
{ {
internal class GetArtistInfoCommand : GetAsyncCommandBase<LastResponse<Artist>> internal class GetArtistInfoCommand : GetAsyncCommandBase<LastResponse<LastArtist>>
{ {
public string ArtistName { get; set; } public string ArtistName { get; set; }
public string BioLanguage { get; set; } public string BioLanguage { get; set; }
@ -33,7 +33,7 @@ public override void SetParameters()
base.DisableCaching(); base.DisableCaching();
} }
public async override Task<LastResponse<Artist>> HandleResponse(HttpResponseMessage response) public async override Task<LastResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
@ -42,13 +42,13 @@ public async override Task<LastResponse<Artist>> HandleResponse(HttpResponseMess
{ {
var jtoken = JsonConvert.DeserializeObject<JToken>(json); var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var artist = Artist.ParseJToken(jtoken.SelectToken("artist")); var artist = LastArtist.ParseJToken(jtoken.SelectToken("artist"));
return LastResponse<Artist>.CreateSuccessResponse(artist); return LastResponse<LastArtist>.CreateSuccessResponse(artist);
} }
else else
{ {
return LastResponse.CreateErrorResponse<LastResponse<Artist>>(error); return LastResponse.CreateErrorResponse<LastResponse<LastArtist>>(error);
} }
} }
} }

View File

@ -11,7 +11,7 @@
namespace IF.Lastfm.Core.Api.Commands.ArtistApi namespace IF.Lastfm.Core.Api.Commands.ArtistApi
{ {
internal class GetArtistTopAlbumsCommand : GetAsyncCommandBase<PageResponse<Album>> internal class GetArtistTopAlbumsCommand : GetAsyncCommandBase<PageResponse<LastAlbum>>
{ {
public string ArtistName { get; set; } public string ArtistName { get; set; }
@ -29,7 +29,7 @@ public override void SetParameters()
base.DisableCaching(); base.DisableCaching();
} }
public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessage response) public async override Task<PageResponse<LastAlbum>> HandleResponse(HttpResponseMessage response)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
@ -38,15 +38,15 @@ public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessa
{ {
var jtoken = JsonConvert.DeserializeObject<JToken>(json); var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var albums = new List<Album>(); var albums = new List<LastAlbum>();
foreach (var jToken in jtoken.SelectToken("topalbums").SelectToken("album").Children()) foreach (var jToken in jtoken.SelectToken("topalbums").SelectToken("album").Children())
{ {
var album = Album.ParseJToken(jToken); var album = LastAlbum.ParseJToken(jToken);
albums.Add(album); albums.Add(album);
} }
var pageresponse = PageResponse<Album>.CreateSuccessResponse(albums); var pageresponse = PageResponse<LastAlbum>.CreateSuccessResponse(albums);
var attrToken = jtoken.SelectToken("topalbums").SelectToken("@attr"); var attrToken = jtoken.SelectToken("topalbums").SelectToken("@attr");
pageresponse.AddPageInfoFromJToken(attrToken); pageresponse.AddPageInfoFromJToken(attrToken);
@ -55,7 +55,7 @@ public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessa
} }
else else
{ {
return LastResponse.CreateErrorResponse<PageResponse<Album>>(error); return LastResponse.CreateErrorResponse<PageResponse<LastAlbum>>(error);
} }
} }
} }

View File

@ -11,7 +11,7 @@
namespace IF.Lastfm.Core.Api.Commands.ArtistApi namespace IF.Lastfm.Core.Api.Commands.ArtistApi
{ {
internal class GetArtistTopTracksCommand : GetAsyncCommandBase<PageResponse<Track>> internal class GetArtistTopTracksCommand : GetAsyncCommandBase<PageResponse<LastTrack>>
{ {
public string ArtistName { get; set; } public string ArtistName { get; set; }
@ -29,7 +29,7 @@ public override void SetParameters()
base.DisableCaching(); base.DisableCaching();
} }
public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessage response) public async override Task<PageResponse<LastTrack>> HandleResponse(HttpResponseMessage response)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
@ -38,15 +38,15 @@ public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessa
{ {
var jtoken = JsonConvert.DeserializeObject<JToken>(json); var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var tracks = new List<Track>(); var tracks = new List<LastTrack>();
foreach (var jToken in jtoken.SelectToken("toptracks").SelectToken("track").Children()) foreach (var jToken in jtoken.SelectToken("toptracks").SelectToken("track").Children())
{ {
var t = Track.ParseJToken(jToken); var t = LastTrack.ParseJToken(jToken);
tracks.Add(t); tracks.Add(t);
} }
var pageresponse = PageResponse<Track>.CreateSuccessResponse(tracks); var pageresponse = PageResponse<LastTrack>.CreateSuccessResponse(tracks);
var attrToken = jtoken.SelectToken("toptracks").SelectToken("@attr"); var attrToken = jtoken.SelectToken("toptracks").SelectToken("@attr");
pageresponse.AddPageInfoFromJToken(attrToken); pageresponse.AddPageInfoFromJToken(attrToken);
@ -55,7 +55,7 @@ public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessa
} }
else else
{ {
return LastResponse.CreateErrorResponse<PageResponse<Track>>(error); return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(error);
} }
} }
} }

View File

@ -9,7 +9,7 @@
namespace IF.Lastfm.Core.Api.Commands.TrackApi namespace IF.Lastfm.Core.Api.Commands.TrackApi
{ {
internal class GetTrackInfoCommand : GetAsyncCommandBase<LastResponse<Track>> internal class GetTrackInfoCommand : GetAsyncCommandBase<LastResponse<LastTrack>>
{ {
public string TrackName { get; set; } public string TrackName { get; set; }
public string ArtistName { get; set; } public string ArtistName { get; set; }
@ -36,7 +36,7 @@ public override void SetParameters()
} }
} }
public async override Task<LastResponse<Track>> HandleResponse(HttpResponseMessage response) public async override Task<LastResponse<LastTrack>> HandleResponse(HttpResponseMessage response)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
@ -45,13 +45,13 @@ public async override Task<LastResponse<Track>> HandleResponse(HttpResponseMessa
{ {
var jtoken = JsonConvert.DeserializeObject<JToken>(json); var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var track = Track.ParseJToken(jtoken.SelectToken("track")); var track = LastTrack.ParseJToken(jtoken.SelectToken("track"));
return LastResponse<Track>.CreateSuccessResponse(track); return LastResponse<LastTrack>.CreateSuccessResponse(track);
} }
else else
{ {
return LastResponse.CreateErrorResponse<LastResponse<Track>>(error); return LastResponse.CreateErrorResponse<LastResponse<LastTrack>>(error);
} }
} }
} }

View File

@ -10,7 +10,7 @@
namespace IF.Lastfm.Core.Api.Commands.UserApi namespace IF.Lastfm.Core.Api.Commands.UserApi
{ {
internal class GetRecentScrobblesCommand : GetAsyncCommandBase<PageResponse<Track>> internal class GetRecentScrobblesCommand : GetAsyncCommandBase<PageResponse<LastTrack>>
{ {
public string Username { get; private set; } public string Username { get; private set; }
public DateTime From { get; private set; } public DateTime From { get; private set; }
@ -31,7 +31,7 @@ public override void SetParameters()
DisableCaching(); DisableCaching();
} }
public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessage response) public async override Task<PageResponse<LastTrack>> HandleResponse(HttpResponseMessage response)
{ {
var json = await response.Content.ReadAsStringAsync(); var json = await response.Content.ReadAsStringAsync();
@ -42,15 +42,15 @@ public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessa
var tracksToken = jtoken.SelectToken("track"); var tracksToken = jtoken.SelectToken("track");
var tracks = new List<Track>(); var tracks = new List<LastTrack>();
foreach (var track in tracksToken.Children()) foreach (var track in tracksToken.Children())
{ {
var t = Track.ParseJToken(track); var t = LastTrack.ParseJToken(track);
tracks.Add(t); tracks.Add(t);
} }
var pageresponse = PageResponse<Track>.CreateSuccessResponse(tracks); var pageresponse = PageResponse<LastTrack>.CreateSuccessResponse(tracks);
var attrToken = jtoken.SelectToken("@attr"); var attrToken = jtoken.SelectToken("@attr");
pageresponse.AddPageInfoFromJToken(attrToken); pageresponse.AddPageInfoFromJToken(attrToken);
@ -59,7 +59,7 @@ public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessa
} }
else else
{ {
return LastResponse.CreateErrorResponse<PageResponse<Track>>(error); return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(error);
} }
} }
} }

View File

@ -11,7 +11,7 @@
namespace IF.Lastfm.Core.Api.Commands.UserApi namespace IF.Lastfm.Core.Api.Commands.UserApi
{ {
internal class GetTopAlbumsCommand : GetAsyncCommandBase<PageResponse<Album>> internal class GetTopAlbumsCommand : GetAsyncCommandBase<PageResponse<LastAlbum>>
{ {
public string Username { get; set; } public string Username { get; set; }
public LastStatsTimeSpan TimeSpan { get; set; } public LastStatsTimeSpan TimeSpan { get; set; }
@ -32,7 +32,7 @@ public override void SetParameters()
DisableCaching(); DisableCaching();
} }
public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessage response) public async override Task<PageResponse<LastAlbum>> HandleResponse(HttpResponseMessage response)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
@ -43,13 +43,13 @@ public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessa
var albumsToken = jtoken.SelectToken("topalbums").SelectToken("album"); var albumsToken = jtoken.SelectToken("topalbums").SelectToken("album");
var albums = albumsToken.Children().Select(Album.ParseJToken); var albums = albumsToken.Children().Select(LastAlbum.ParseJToken);
return PageResponse<Album>.CreateSuccessResponse(albums); return PageResponse<LastAlbum>.CreateSuccessResponse(albums);
} }
else else
{ {
return LastResponse.CreateErrorResponse<PageResponse<Album>>(error); return LastResponse.CreateErrorResponse<PageResponse<LastAlbum>>(error);
} }
} }
} }

View File

@ -8,7 +8,7 @@ public interface IAlbumApi
{ {
IAuth Auth { get; } IAuth Auth { get; }
Task<LastResponse<Album>> GetAlbumInfoAsync(string artist, string album, bool autocorrect = false); Task<LastResponse<LastAlbum>> GetAlbumInfoAsync(string artist, string album, bool autocorrect = false);
Task<PageResponse<BuyLink>> GetBuyLinksForAlbumAsync(string artist, Task<PageResponse<BuyLink>> GetBuyLinksForAlbumAsync(string artist,
string album, string album,
@ -24,7 +24,7 @@ Task<PageResponse<Tag>> GetTopTagsForAlbumAsync(string artist,
string album, string album,
bool autocorrect = false); bool autocorrect = false);
Task<PageResponse<Album>> SearchForAlbumAsync(string album, Task<PageResponse<LastAlbum>> SearchForAlbumAsync(string album,
int page = 1, int page = 1,
int itemsPerPage = LastFm.DefaultPageLength); int itemsPerPage = LastFm.DefaultPageLength);

View File

@ -12,15 +12,15 @@ public interface IArtistApi
{ {
IAuth Auth { get; } IAuth Auth { get; }
Task<LastResponse<Artist>> GetArtistInfoAsync(string artist, string bioLang = LastFm.DefaultLanguageCode, Task<LastResponse<LastArtist>> GetArtistInfoAsync(string artist, string bioLang = LastFm.DefaultLanguageCode,
bool autocorrect = false); bool autocorrect = false);
Task<PageResponse<Album>> GetTopAlbumsForArtistAsync(string artist, Task<PageResponse<LastAlbum>> GetTopAlbumsForArtistAsync(string artist,
bool autocorrect = false, bool autocorrect = false,
int page = 1, int page = 1,
int itemsPerPage = LastFm.DefaultPageLength); int itemsPerPage = LastFm.DefaultPageLength);
Task<PageResponse<Track>> GetTopTracksForArtistAsync(string artist, Task<PageResponse<LastTrack>> GetTopTracksForArtistAsync(string artist,
bool autocorrect = false, bool autocorrect = false,
int page = 1, int page = 1,
int itemsPerPage = LastFm.DefaultPageLength); int itemsPerPage = LastFm.DefaultPageLength);

View File

@ -18,7 +18,7 @@ Task<PageResponse<Shout>> GetShoutsForTrackAsync(string trackname,
int page = 0, int page = 0,
int count = LastFm.DefaultPageLength); int count = LastFm.DefaultPageLength);
Task<LastResponse<Track>> GetInfoAsync(string trackname, string artistname, string username = ""); Task<LastResponse<LastTrack>> GetInfoAsync(string trackname, string artistname, string username = "");
Task<LastResponse> LoveTrackAsync(string trackname, string artistname); Task<LastResponse> LoveTrackAsync(string trackname, string artistname);
Task<LastResponse> UnloveTrackAsync(string trackname, string artistname); Task<LastResponse> UnloveTrackAsync(string trackname, string artistname);

View File

@ -10,12 +10,12 @@ public interface IUserApi
{ {
IAuth Auth { get; } IAuth Auth { get; }
Task<PageResponse<Album>> GetTopAlbums(string username, Task<PageResponse<LastAlbum>> GetTopAlbums(string username,
LastStatsTimeSpan span, LastStatsTimeSpan span,
int startIndex = 0, int startIndex = 0,
int endIndex = LastFm.DefaultPageLength); int endIndex = LastFm.DefaultPageLength);
Task<PageResponse<Track>> GetRecentScrobbles(string username, Task<PageResponse<LastTrack>> GetRecentScrobbles(string username,
DateTime since, DateTime since,
int startIndex = 0, int startIndex = 0,
int endIndex = LastFm.DefaultPageLength); int endIndex = LastFm.DefaultPageLength);

View File

@ -66,7 +66,7 @@ public async Task<PageResponse<Shout>> GetShoutsForTrackAsync(string trackname,
return await command.ExecuteAsync(); return await command.ExecuteAsync();
} }
public async Task<LastResponse<Track>> GetInfoAsync(string trackname, string artistname, string username = "") public async Task<LastResponse<LastTrack>> GetInfoAsync(string trackname, string artistname, string username = "")
{ {
var command = new GetTrackInfoCommand(Auth, trackname, artistname) var command = new GetTrackInfoCommand(Auth, trackname, artistname)
{ {

View File

@ -24,7 +24,7 @@ public UserApi(IAuth auth)
/// <param name="pagenumber"></param> /// <param name="pagenumber"></param>
/// <param name="count"></param> /// <param name="count"></param>
/// <returns></returns> /// <returns></returns>
public async Task<PageResponse<Album>> GetTopAlbums(string username, LastStatsTimeSpan span, int pagenumber = 0, int count = LastFm.DefaultPageLength) public async Task<PageResponse<LastAlbum>> GetTopAlbums(string username, LastStatsTimeSpan span, int pagenumber = 0, int count = LastFm.DefaultPageLength)
{ {
var command = new GetTopAlbumsCommand(Auth, username, span) var command = new GetTopAlbumsCommand(Auth, username, span)
{ {
@ -43,7 +43,7 @@ public async Task<PageResponse<Album>> GetTopAlbums(string username, LastStatsTi
/// <param name="pagenumber"></param> /// <param name="pagenumber"></param>
/// <param name="count"></param> /// <param name="count"></param>
/// <returns></returns> /// <returns></returns>
public async Task<PageResponse<Track>> GetRecentScrobbles(string username, DateTime since, int pagenumber = 0, int count = LastFm.DefaultPageLength) public async Task<PageResponse<LastTrack>> GetRecentScrobbles(string username, DateTime since, int pagenumber = 0, int count = LastFm.DefaultPageLength)
{ {
var command = new GetRecentScrobblesCommand(Auth, username, since) var command = new GetRecentScrobblesCommand(Auth, username, since)
{ {

View File

@ -81,8 +81,8 @@
<Compile Include="Api\UserApi.cs" /> <Compile Include="Api\UserApi.cs" />
<Compile Include="Json\LastFmBooleanConverter.cs" /> <Compile Include="Json\LastFmBooleanConverter.cs" />
<Compile Include="LastFm.cs" /> <Compile Include="LastFm.cs" />
<Compile Include="Objects\Album.cs" /> <Compile Include="Objects\LastAlbum.cs" />
<Compile Include="Objects\Artist.cs" /> <Compile Include="Objects\LastArtist.cs" />
<Compile Include="Objects\BuyLink.cs" /> <Compile Include="Objects\BuyLink.cs" />
<Compile Include="Objects\CountryCode.cs" /> <Compile Include="Objects\CountryCode.cs" />
<Compile Include="Objects\ILastFmObject.cs" /> <Compile Include="Objects\ILastFmObject.cs" />
@ -90,7 +90,7 @@
<Compile Include="Objects\Shout.cs" /> <Compile Include="Objects\Shout.cs" />
<Compile Include="Objects\Station.cs" /> <Compile Include="Objects\Station.cs" />
<Compile Include="Objects\Tag.cs" /> <Compile Include="Objects\Tag.cs" />
<Compile Include="Objects\Track.cs" /> <Compile Include="Objects\LastTrack.cs" />
<Compile Include="Objects\User.cs" /> <Compile Include="Objects\User.cs" />
<Compile Include="Objects\UserSession.cs" /> <Compile Include="Objects\UserSession.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />

View File

@ -5,12 +5,12 @@
namespace IF.Lastfm.Core.Objects namespace IF.Lastfm.Core.Objects
{ {
public class Album : ILastFmObject public class LastAlbum : ILastFmObject
{ {
#region Properties #region Properties
public string Name { get; set; } public string Name { get; set; }
public IEnumerable<Track> Tracks { get; set; } public IEnumerable<LastTrack> Tracks { get; set; }
public string ArtistName { get; set; } public string ArtistName { get; set; }
public string ArtistId { get; set; } public string ArtistId { get; set; }
@ -36,9 +36,9 @@ public class Album : ILastFmObject
/// </summary> /// </summary>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
internal static Album ParseJToken(JToken token) internal static LastAlbum ParseJToken(JToken token)
{ {
var a = new Album(); var a = new LastAlbum();
try try
{ {
@ -48,7 +48,7 @@ internal static Album ParseJToken(JToken token)
var tracksToken = token.SelectToken("tracks").SelectToken("track"); var tracksToken = token.SelectToken("tracks").SelectToken("track");
if (tracksToken != null) if (tracksToken != null)
{ {
a.Tracks = tracksToken.Children().Select(trackToken => Track.ParseJToken(trackToken, a.Name)); a.Tracks = tracksToken.Children().Select(trackToken => LastTrack.ParseJToken(trackToken, a.Name));
} }
var tagsToken = token.SelectToken("toptags").SelectToken("tag"); var tagsToken = token.SelectToken("toptags").SelectToken("tag");
@ -59,8 +59,8 @@ internal static Album ParseJToken(JToken token)
} }
catch catch
{ {
// for when artist is not a string but a Artist object // for when artist is not a string but a LastArtist object
var artist = token.SelectToken("artist").ToObject<Artist>(); var artist = token.SelectToken("artist").ToObject<LastArtist>();
a.ArtistName = artist.Name; a.ArtistName = artist.Name;
a.ArtistId = artist.Mbid; a.ArtistId = artist.Mbid;
} }

View File

@ -8,7 +8,7 @@ namespace IF.Lastfm.Core.Objects
/// <summary> /// <summary>
/// Todo bio, tour, similar, stats, streamable /// Todo bio, tour, similar, stats, streamable
/// </summary> /// </summary>
public class Artist : ILastFmObject public class LastArtist : ILastFmObject
{ {
#region Properties #region Properties
@ -22,9 +22,9 @@ public class Artist : ILastFmObject
#endregion #endregion
internal static Artist ParseJToken(JToken token) internal static LastArtist ParseJToken(JToken token)
{ {
var a = new Artist(); var a = new LastArtist();
a.Name = token.Value<string>("name"); a.Name = token.Value<string>("name");
a.Mbid = token.Value<string>("mbid"); a.Mbid = token.Value<string>("mbid");

View File

@ -9,7 +9,7 @@ namespace IF.Lastfm.Core.Objects
/// <summary> /// <summary>
/// TODO Wiki, Stream availability /// TODO Wiki, Stream availability
/// </summary> /// </summary>
public class Track : ILastFmObject public class LastTrack : ILastFmObject
{ {
#region Properties #region Properties
@ -39,9 +39,9 @@ public class Track : ILastFmObject
/// <param name="token">A valid JToken</param> /// <param name="token">A valid JToken</param>
/// <returns>track equivalent to the JToken</returns> /// <returns>track equivalent to the JToken</returns>
/// <remarks>If this method is used directly then the duration attribute will be parsed as MILLIseconds</remarks> /// <remarks>If this method is used directly then the duration attribute will be parsed as MILLIseconds</remarks>
internal static Track ParseJToken(JToken token) internal static LastTrack ParseJToken(JToken token)
{ {
var t = new Track(); var t = new LastTrack();
t.Name = token.Value<string>("name"); t.Name = token.Value<string>("name");
t.Mbid = token.Value<string>("mbid"); t.Mbid = token.Value<string>("mbid");
@ -50,14 +50,14 @@ internal static Track ParseJToken(JToken token)
var artistToken = token.SelectToken("artist"); var artistToken = token.SelectToken("artist");
if (artistToken != null) if (artistToken != null)
{ {
t.ArtistName = Artist.GetNameFromJToken(artistToken); t.ArtistName = LastArtist.GetNameFromJToken(artistToken);
t.ArtistMbid = artistToken.Value<string>("mbid"); t.ArtistMbid = artistToken.Value<string>("mbid");
} }
var albumToken = token.SelectToken("album"); var albumToken = token.SelectToken("album");
if (albumToken != null) if (albumToken != null)
{ {
t.AlbumName = Album.GetNameFromJToken(albumToken); t.AlbumName = LastAlbum.GetNameFromJToken(albumToken);
} }
var tagsToken = token.SelectToken("toptags"); var tagsToken = token.SelectToken("toptags");
@ -109,7 +109,7 @@ internal static Track ParseJToken(JToken token)
/// <param name="albumName">Name of the album this track belongs to</param> /// <param name="albumName">Name of the album this track belongs to</param>
/// <returns>track equivalent to the JToken</returns> /// <returns>track equivalent to the JToken</returns>
/// <remarks>If this method is used then the duration attribute will be parsed as seconds</remarks> /// <remarks>If this method is used then the duration attribute will be parsed as seconds</remarks>
internal static Track ParseJToken(JToken token, string albumName) internal static LastTrack ParseJToken(JToken token, string albumName)
{ {
var t = ParseJToken(token); var t = ParseJToken(token);
t.AlbumName = albumName; t.AlbumName = albumName;

View File

@ -39,7 +39,7 @@
<Button Content="Scrobbling" Click="OnScrobblingLinkClick"/> <Button Content="Scrobbling" Click="OnScrobblingLinkClick"/>
<Button Content="History" Click="OnHistoryLinkClick"/> <Button Content="History" Click="OnHistoryLinkClick"/>
<Button Content="Recent Stations" Click="OnRecentStationsLinkClick"/> <Button Content="Recent Stations" Click="OnRecentStationsLinkClick"/>
<Button Content="Get Artist Info" Click="OnGetArtistInfoLinkClick"/> <Button Content="Get LastArtist Info" Click="OnGetArtistInfoLinkClick"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

View File

@ -36,17 +36,17 @@
Margin="12,0"> Margin="12,0">
<StackPanel> <StackPanel>
<StackPanel.Background> <StackPanel.Background>
<ImageBrush ImageSource="{Binding Artist.MainImage.Mega}" <ImageBrush ImageSource="{Binding LastArtist.MainImage.Mega}"
Opacity="0.7" Opacity="0.7"
Stretch="UniformToFill"/> Stretch="UniformToFill"/>
</StackPanel.Background> </StackPanel.Background>
<TextBlock Text="LASTFM-WP DEMO APP" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/> <TextBlock Text="LASTFM-WP DEMO APP" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
<TextBlock Text="artist info" Margin="9,-7,0,12" Style="{StaticResource PhoneTextTitle1Style}"/> <TextBlock Text="artist info" Margin="9,-7,0,12" Style="{StaticResource PhoneTextTitle1Style}"/>
<toolkit:PhoneTextBox Hint="Artist" Text="{Binding ArtistName, Mode=TwoWay}"/> <toolkit:PhoneTextBox Hint="LastArtist" Text="{Binding ArtistName, Mode=TwoWay}"/>
</StackPanel> </StackPanel>
<TextBlock Text="top tags" Margin="12,12,0,12" Style="{StaticResource PhoneTextTitle2Style}"/> <TextBlock Text="top tags" Margin="12,12,0,12" Style="{StaticResource PhoneTextTitle2Style}"/>
<ItemsControl ItemsSource="{Binding Artist.Tags}" <ItemsControl ItemsSource="{Binding LastArtist.Tags}"
VerticalAlignment="Top"> VerticalAlignment="Top">
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>

View File

@ -10,10 +10,10 @@ namespace IF.Lastfm.Demo.Apollo.ViewModels.ArtistApi
public class GetArtistInfoViewModel : BaseViewModel public class GetArtistInfoViewModel : BaseViewModel
{ {
private string _artistName; private string _artistName;
private Artist _artist; private LastArtist _lastArtist;
private bool _inProgress; private bool _inProgress;
private IEnumerable<Track> _topTracks; private IEnumerable<LastTrack> _topTracks;
private IEnumerable<Album> _topAlbums; private IEnumerable<LastAlbum> _topAlbums;
public string ArtistName public string ArtistName
{ {
@ -30,17 +30,17 @@ public string ArtistName
} }
} }
public Artist Artist public LastArtist LastArtist
{ {
get { return _artist; } get { return _lastArtist; }
set set
{ {
if (Equals(value, _artist)) if (Equals(value, _lastArtist))
{ {
return; return;
} }
_artist = value; _lastArtist = value;
OnPropertyChanged(); OnPropertyChanged();
} }
} }
@ -59,7 +59,7 @@ public bool InProgress
} }
} }
public IEnumerable<Track> TopTracks public IEnumerable<LastTrack> TopTracks
{ {
get { return _topTracks; } get { return _topTracks; }
set set
@ -73,7 +73,7 @@ public IEnumerable<Track> TopTracks
} }
} }
public IEnumerable<Album> TopAlbums public IEnumerable<LastAlbum> TopAlbums
{ {
get { return _topAlbums; } get { return _topAlbums; }
set set
@ -113,7 +113,7 @@ public async Task GetInfo()
var artist = await artistApi.GetArtistInfoAsync(ArtistName); var artist = await artistApi.GetArtistInfoAsync(ArtistName);
if (artist.Success) if (artist.Success)
{ {
Artist = artist.Content; LastArtist = artist.Content;
} }
var topAlbums = await artistApi.GetTopAlbumsForArtistAsync(ArtistName); var topAlbums = await artistApi.GetTopAlbumsForArtistAsync(ArtistName);

View File

@ -12,7 +12,7 @@ public class HistoryTestViewModel : BaseViewModel
{ {
private bool _inProgress; private bool _inProgress;
private bool _successful; private bool _successful;
private ObservableCollection<Track> _tracks; private ObservableCollection<LastTrack> _tracks;
private Auth _auth; private Auth _auth;
private PageProgress _historyPageProgress; private PageProgress _historyPageProgress;
@ -63,7 +63,7 @@ public bool Successful
} }
} }
public ObservableCollection<Track> Tracks public ObservableCollection<LastTrack> Tracks
{ {
get { return _tracks; } get { return _tracks; }
set set
@ -83,7 +83,7 @@ public ObservableCollection<Track> Tracks
public HistoryTestViewModel() public HistoryTestViewModel()
{ {
_historyPageProgress = new PageProgress(); _historyPageProgress = new PageProgress();
Tracks = new ObservableCollection<Track>(); Tracks = new ObservableCollection<LastTrack>();
} }
public async Task NavigatedTo() public async Task NavigatedTo()