mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Merge pull request #20 from zumicts/master
Fixing more page response apis
This commit is contained in:
commit
cac461b22c
@ -31,30 +31,15 @@ public override void SetParameters()
|
|||||||
|
|
||||||
public async override Task<PageResponse<LastAlbum>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<LastAlbum>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
var json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
LastFmApiError error;
|
LastFmApiError error;
|
||||||
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
if (!LastFm.IsResponseValid(json, out error) || !response.IsSuccessStatusCode)
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
|
||||||
|
|
||||||
var albums = jtoken.SelectToken("results")
|
|
||||||
.SelectToken("albummatches")
|
|
||||||
.SelectToken("album")
|
|
||||||
.Children().Select(LastAlbum.ParseJToken)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var pageresponse = PageResponse<LastAlbum>.CreateSuccessResponse(albums);
|
|
||||||
|
|
||||||
var attrToken = jtoken.SelectToken("results");
|
|
||||||
pageresponse.AddPageInfoFromOpenQueryJToken(attrToken);
|
|
||||||
|
|
||||||
return pageresponse;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return LastResponse.CreateErrorResponse<PageResponse<LastAlbum>>(error);
|
return LastResponse.CreateErrorResponse<PageResponse<LastAlbum>>(error);
|
||||||
}
|
|
||||||
|
var jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("results");
|
||||||
|
return PageResponse<LastAlbum>.CreatePageResponse(jtoken.SelectToken("albumsmatches").SelectToken("album"),
|
||||||
|
jtoken, LastAlbum.ParseJToken, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,30 +30,15 @@ public override void SetParameters()
|
|||||||
|
|
||||||
public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
var json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
LastFmApiError error;
|
LastFmApiError error;
|
||||||
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
if (!LastFm.IsResponseValid(json, out error) || !response.IsSuccessStatusCode)
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
|
||||||
|
|
||||||
var artists = jtoken.SelectToken("results")
|
|
||||||
.SelectToken("artistmatches")
|
|
||||||
.SelectToken("artist")
|
|
||||||
.Children().Select(LastArtist.ParseJToken)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var pageresponse = PageResponse<LastArtist>.CreateSuccessResponse(artists);
|
|
||||||
|
|
||||||
var attrToken = jtoken.SelectToken("results");
|
|
||||||
pageresponse.AddPageInfoFromOpenQueryJToken(attrToken);
|
|
||||||
|
|
||||||
return pageresponse;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(error);
|
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(error);
|
||||||
}
|
|
||||||
|
var jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("results");
|
||||||
|
return PageResponse<LastArtist>.CreatePageResponse(jtoken.SelectToken("artistsmatches").SelectToken("artist"),
|
||||||
|
jtoken, LastArtist.ParseJToken, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,29 +28,15 @@ public override void SetParameters()
|
|||||||
|
|
||||||
public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
var json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
LastFmApiError error;
|
LastFmApiError error;
|
||||||
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
if (!LastFm.IsResponseValid(json, out error) || !response.IsSuccessStatusCode)
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
|
||||||
|
|
||||||
var artists = jtoken.SelectToken("artists")
|
|
||||||
.SelectToken("artist").Children()
|
|
||||||
.Select(LastArtist.ParseJToken)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var pageresponse = PageResponse<LastArtist>.CreateSuccessResponse(artists);
|
|
||||||
|
|
||||||
var attrToken = jtoken.SelectToken("artists").SelectToken("@attr");
|
|
||||||
pageresponse.AddPageInfoFromJToken(attrToken);
|
|
||||||
|
|
||||||
return pageresponse;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(error);
|
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(error);
|
||||||
}
|
|
||||||
|
var jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("artists");
|
||||||
|
return PageResponse<LastArtist>.CreatePageResponse(jtoken.SelectToken("artist"), jtoken.SelectToken("@attr"),
|
||||||
|
LastArtist.ParseJToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,8 +34,8 @@ public async override Task<PageResponse<LastTrack>> HandleResponse(HttpResponseM
|
|||||||
if (!LastFm.IsResponseValid(json, out error) || !response.IsSuccessStatusCode)
|
if (!LastFm.IsResponseValid(json, out error) || !response.IsSuccessStatusCode)
|
||||||
return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(error);
|
return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(error);
|
||||||
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
var jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("tracks");
|
||||||
return PageResponse<LastTrack>.CreatePageResponse(jtoken.SelectToken("tracks").SelectToken("track"), jtoken.SelectToken("@attr"), LastTrack.ParseJToken);
|
return PageResponse<LastTrack>.CreatePageResponse(jtoken.SelectToken("track"), jtoken.SelectToken("@attr"), LastTrack.ParseJToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,30 +30,15 @@ public override void SetParameters()
|
|||||||
|
|
||||||
public async override Task<PageResponse<LastTrack>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<LastTrack>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
var json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
LastFmApiError error;
|
LastFmApiError error;
|
||||||
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
if (!LastFm.IsResponseValid(json, out error) || !response.IsSuccessStatusCode)
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
|
||||||
|
|
||||||
var tracks = jtoken.SelectToken("results")
|
|
||||||
.SelectToken("trackmatches")
|
|
||||||
.SelectToken("track")
|
|
||||||
.Children().Select(LastTrack.ParseJToken)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var pageresponse = PageResponse<LastTrack>.CreateSuccessResponse(tracks);
|
|
||||||
|
|
||||||
var attrToken = jtoken.SelectToken("results");
|
|
||||||
pageresponse.AddPageInfoFromOpenQueryJToken(attrToken);
|
|
||||||
|
|
||||||
return pageresponse;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(error);
|
return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(error);
|
||||||
}
|
|
||||||
|
var jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("results");
|
||||||
|
return PageResponse<LastTrack>.CreatePageResponse(jtoken.SelectToken("trackmatches").SelectToken("track"),
|
||||||
|
jtoken, LastTrack.ParseJToken, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,10 +121,14 @@ public void AddPageInfoFromOpenQueryJToken(JToken queryToken)
|
|||||||
TotalPages = (int)Math.Ceiling((double)TotalItems / PageSize);
|
TotalPages = (int)Math.Ceiling((double)TotalItems / PageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PageResponse<T> CreatePageResponse(JToken itemsToken, JToken attrToken, Func<JToken, T> parseToken)
|
public static PageResponse<T> CreatePageResponse(JToken itemsToken, JToken pageInfoToken, Func<JToken, T> parseToken, bool isOpenQueryToken = false)
|
||||||
{
|
{
|
||||||
var pageresponse = CreateSuccessResponse();
|
var pageresponse = CreateSuccessResponse();
|
||||||
pageresponse.AddPageInfoFromJToken(attrToken);
|
|
||||||
|
if (isOpenQueryToken)
|
||||||
|
pageresponse.AddPageInfoFromOpenQueryJToken(pageInfoToken);
|
||||||
|
else
|
||||||
|
pageresponse.AddPageInfoFromJToken(pageInfoToken);
|
||||||
|
|
||||||
var albums = new List<T>();
|
var albums = new List<T>();
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ public class LastAlbum : ILastFmObject
|
|||||||
{
|
{
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
|
public string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public IEnumerable<LastTrack> Tracks { get; set; }
|
public IEnumerable<LastTrack> Tracks { get; set; }
|
||||||
|
|
||||||
@ -41,6 +42,7 @@ internal static LastAlbum ParseJToken(JToken token)
|
|||||||
{
|
{
|
||||||
var a = new LastAlbum();
|
var a = new LastAlbum();
|
||||||
|
|
||||||
|
a.Id = token.Value<string>("id");
|
||||||
var artistToken = token["artist"];
|
var artistToken = token["artist"];
|
||||||
switch (artistToken.Type)
|
switch (artistToken.Type)
|
||||||
{
|
{
|
||||||
@ -90,7 +92,7 @@ internal static LastAlbum ParseJToken(JToken token)
|
|||||||
|
|
||||||
internal static string GetNameFromJToken(JToken albumToken)
|
internal static string GetNameFromJToken(JToken albumToken)
|
||||||
{
|
{
|
||||||
var name = albumToken.Value<string>("name");
|
var name = albumToken.Value<string>("title");
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(name))
|
if (string.IsNullOrEmpty(name))
|
||||||
{
|
{
|
||||||
|
@ -12,6 +12,7 @@ public class LastArtist : ILastFmObject
|
|||||||
{
|
{
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
|
public string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Mbid { get; set; }
|
public string Mbid { get; set; }
|
||||||
public Uri Url { get; set; }
|
public Uri Url { get; set; }
|
||||||
@ -26,6 +27,7 @@ internal static LastArtist ParseJToken(JToken token)
|
|||||||
{
|
{
|
||||||
var a = new LastArtist();
|
var a = new LastArtist();
|
||||||
|
|
||||||
|
a.Id = token.Value<string>("id");
|
||||||
a.Name = token.Value<string>("name");
|
a.Name = token.Value<string>("name");
|
||||||
a.Mbid = token.Value<string>("mbid");
|
a.Mbid = token.Value<string>("mbid");
|
||||||
var url = token.Value<string>("url");
|
var url = token.Value<string>("url");
|
||||||
|
@ -13,6 +13,7 @@ public class LastTrack : ILastFmObject
|
|||||||
{
|
{
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
|
public string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public TimeSpan Duration { get; set; }
|
public TimeSpan Duration { get; set; }
|
||||||
public string Mbid { get; set; }
|
public string Mbid { get; set; }
|
||||||
@ -44,6 +45,7 @@ internal static LastTrack ParseJToken(JToken token)
|
|||||||
{
|
{
|
||||||
var t = new LastTrack();
|
var t = new LastTrack();
|
||||||
|
|
||||||
|
t.Id = token.Value<string>("id");
|
||||||
t.Name = token.Value<string>("name");
|
t.Name = token.Value<string>("name");
|
||||||
t.Mbid = token.Value<string>("mbid");
|
t.Mbid = token.Value<string>("mbid");
|
||||||
t.Url = new Uri(token.Value<string>("url"), UriKind.Absolute);
|
t.Url = new Uri(token.Value<string>("url"), UriKind.Absolute);
|
||||||
|
Loading…
Reference in New Issue
Block a user