Merge branch 'fckoppenol-master'

This commit is contained in:
Rikki Tooley 2016-05-26 23:32:53 +01:00
commit b285c273e9
3 changed files with 43 additions and 7 deletions

View File

@ -18,7 +18,7 @@ public class ArtistGetTopTagsCommandTests : CommandTestsBase
[SetUp] [SetUp]
public void Initialise() public void Initialise()
{ {
_command = new GetTopTagsCommand(MAuth.Object, ""); _command = new GetTopTagsCommand(MAuth.Object);
} }
[Test] [Test]

View File

@ -104,8 +104,9 @@ public Task<PageResponse<LastTag>> GetTagsByUserAsync(string artist, string user
public Task<PageResponse<LastTag>> GetTopTagsAsync(string artist, bool autocorrect = false) public Task<PageResponse<LastTag>> GetTopTagsAsync(string artist, bool autocorrect = false)
{ {
var command = new GetTopTagsCommand(Auth, artist) var command = new GetTopTagsCommand(Auth)
{ {
ArtistName = artist,
Autocorrect = autocorrect, Autocorrect = autocorrect,
HttpClient = HttpClient HttpClient = HttpClient
}; };
@ -113,6 +114,19 @@ public Task<PageResponse<LastTag>> GetTopTagsAsync(string artist, bool autocorre
return command.ExecuteAsync(); return command.ExecuteAsync();
} }
public Task<PageResponse<LastTag>> GetTopTagsByMbidAsync(string mbid, bool autocorrect = false)
{
var command = new GetTopTagsCommand(Auth)
{
ArtistMbid = mbid,
Autocorrect = autocorrect,
HttpClient = HttpClient
};
return command.ExecuteAsync();
}
public async Task<PageResponse<LastShout>> GetShoutsAsync(string artist, int page = 0, int count = LastFm.DefaultPageLength, bool autocorrect = false) public async Task<PageResponse<LastShout>> GetShoutsAsync(string artist, int page = 0, int count = LastFm.DefaultPageLength, bool autocorrect = false)
{ {
var command = new GetShoutsCommand(Auth, artist) var command = new GetShoutsCommand(Auth, artist)

View File

@ -12,18 +12,40 @@ namespace IF.Lastfm.Core.Api.Commands.Artist
[ApiMethodName("artist.getTopTags")] [ApiMethodName("artist.getTopTags")]
internal class GetTopTagsCommand : GetAsyncCommandBase<PageResponse<LastTag>> internal class GetTopTagsCommand : GetAsyncCommandBase<PageResponse<LastTag>>
{ {
public string ArtistMbid { get; set; }
public string ArtistName { get; set; } public string ArtistName { get; set; }
public bool Autocorrect { get; set; } public bool Autocorrect { get; set; }
public GetTopTagsCommand(ILastAuth auth, string artistName) : base(auth) public GetTopTagsCommand(ILastAuth auth) : base(auth)
{ {
ArtistName = artistName;
} }
public override void SetParameters() public override void SetParameters()
{ {
Parameters.Add("artist", ArtistName); var hasMbid = !string.IsNullOrEmpty(ArtistMbid);
var hasName = !string.IsNullOrEmpty(ArtistName);
if (!hasMbid && !hasName)
{
throw new InvalidOperationException($"Either {nameof(ArtistMbid)} or {nameof(ArtistName)} must be set");
}
if (hasMbid && hasName)
{
throw new InvalidOperationException($"");
}
if (hasMbid)
{
Parameters.Add("mbid", ArtistMbid);
}
else
{
Parameters.Add("artist", ArtistName);
}
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString()); Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
} }
@ -38,7 +60,7 @@ public override async Task<PageResponse<LastTag>> HandleResponse(HttpResponseMes
var resultsToken = jtoken.SelectToken("toptags"); var resultsToken = jtoken.SelectToken("toptags");
var itemsToken = resultsToken.SelectToken("tag"); var itemsToken = resultsToken.SelectToken("tag");
return PageResponse<LastTag>.CreateSuccessResponse(itemsToken, token => LastTag.ParseJToken(token)); return PageResponse<LastTag>.CreateSuccessResponse(itemsToken, LastTag.ParseJToken);
} }
else else
{ {