Added user.getWeeklyArtistChart

This commit is contained in:
Johan Klinge 2019-01-08 16:26:39 +01:00
parent 920265eb4e
commit 9eb98d6e51
4 changed files with 73 additions and 4 deletions

View File

@ -0,0 +1,59 @@
using System.Net.Http;
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.Commands.User
{
[ApiMethodName("user.getWeeklyArtistChart")]
internal class GetWeeklyArtistChartCommand : GetAsyncCommandBase<PageResponse<LastArtist>>
{
public string Username { get; set; }
public string To { get; set; }
public string From { get; set; }
public GetWeeklyArtistChartCommand(ILastAuth auth, string username, string from, string to)
: base(auth)
{
Username = username;
From = from;
To = to;
}
public override void SetParameters()
{
if(!From.Equals(null))
{
Parameters.Add("from", From);
}
if(!To.Equals(null))
{
Parameters.Add("to", To);
}
Parameters.Add("user", Username);
DisableCaching();
}
public override async Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
{
var json = await response.Content.ReadAsStringAsync();
LastResponseStatus status;
if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
{
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var chartListToken = jtoken.SelectToken("weeklyartistchart");
var itemsToken = chartListToken.SelectToken("artist");
var pageInfoToken = chartListToken.SelectToken("@attr");
return PageResponse<LastArtist>.CreateSuccessResponse(itemsToken, pageInfoToken, LastArtist.ParseJToken, LastPageResultsType.Attr);
}
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(status);
}
}
}

View File

@ -9,11 +9,11 @@
namespace IF.Lastfm.Core.Api.Commands.User namespace IF.Lastfm.Core.Api.Commands.User
{ {
[ApiMethodName("user.getWeeklyChartList")] [ApiMethodName("user.getWeeklyChartList")]
internal class GetWeeklyChartsCommand : GetAsyncCommandBase<PageResponse<LastWeeklyChartList>> internal class GetWeeklyChartListCommand : GetAsyncCommandBase<PageResponse<LastWeeklyChartList>>
{ {
public string Username { get; set; } public string Username { get; set; }
public GetWeeklyChartsCommand(ILastAuth auth, string username) public GetWeeklyChartListCommand(ILastAuth auth, string username)
: base(auth) : base(auth)
{ {
Username = username; Username = username;

View File

@ -41,5 +41,7 @@ Task<PageResponse<LastShout>> GetShoutsAsync(string username,
Task<PageResponse<LastTrack>> GetLovedTracks(string username, int pagenumber, int count); Task<PageResponse<LastTrack>> GetLovedTracks(string username, int pagenumber, int count);
Task<PageResponse<LastWeeklyChartList>> GetWeeklyChartListAsync(string username); Task<PageResponse<LastWeeklyChartList>> GetWeeklyChartListAsync(string username);
Task<PageResponse<LastArtist>> GetWeeklyArtistChartAsync(string username, string to = null, string from = null);
} }
} }

View File

@ -134,7 +134,15 @@ public async Task<PageResponse<LastTrack>> GetLovedTracks(
} }
public async Task<PageResponse<LastWeeklyChartList>> GetWeeklyChartListAsync(string username) public async Task<PageResponse<LastWeeklyChartList>> GetWeeklyChartListAsync(string username)
{ {
var command = new GetWeeklyChartsCommand(auth: Auth, username: username) var command = new GetWeeklyChartListCommand(auth: Auth, username: username)
{
HttpClient = HttpClient
};
return await command.ExecuteAsync();
}
public async Task<PageResponse<LastArtist>> GetWeeklyArtistChartAsync(string username, string from = null, string to = null)
{
var command = new GetWeeklyArtistChartCommand(auth: Auth, username: username, from: from, to: to)
{ {
HttpClient = HttpClient HttpClient = HttpClient
}; };