diff --git a/src/IF.Lastfm.Core.Tests/Api/Commands/Tag/GetTopArtistsCommandTests.cs b/src/IF.Lastfm.Core.Tests/Api/Commands/Tag/GetTopArtistsCommandTests.cs
index 60e6f881..9d89f215 100644
--- a/src/IF.Lastfm.Core.Tests/Api/Commands/Tag/GetTopArtistsCommandTests.cs
+++ b/src/IF.Lastfm.Core.Tests/Api/Commands/Tag/GetTopArtistsCommandTests.cs
@@ -41,12 +41,12 @@ public async Task HandleSuccessResponse()
Assert.IsTrue(parsed.Success);
Assert.IsNotNull(parsed.Content);
}
-
+
[Test]
- public async Task HandleErrorResponse()
+ public async Task ErrorIfTagIsEmpty()
{
var command = new GetTopArtistsCommand(MAuth.Object, "errorTag");
-
+
var response = CreateResponseMessage(Encoding.UTF8.GetString(TagApiResponses.GetTopArtistsError));
var parsed = await command.HandleResponse(response);
diff --git a/src/IF.Lastfm.Core.Tests/IF.Lastfm.Core.Tests.csproj b/src/IF.Lastfm.Core.Tests/IF.Lastfm.Core.Tests.csproj
index e6306898..310c2edd 100644
--- a/src/IF.Lastfm.Core.Tests/IF.Lastfm.Core.Tests.csproj
+++ b/src/IF.Lastfm.Core.Tests/IF.Lastfm.Core.Tests.csproj
@@ -150,7 +150,6 @@
-
Designer
diff --git a/src/IF.Lastfm.Core.Tests/Resources/GetTopArtistsError.json b/src/IF.Lastfm.Core.Tests/Resources/GetTopArtistsError.json
index 0dc8f28e..781b34bb 100644
--- a/src/IF.Lastfm.Core.Tests/Resources/GetTopArtistsError.json
+++ b/src/IF.Lastfm.Core.Tests/Resources/GetTopArtistsError.json
@@ -2,7 +2,7 @@
"topartists": {
"artist": [],
"@attr": {
- "tag": "asfasf",
+ "tag": "",
"page": "1",
"perPage": "1",
"totalPages": "0",
diff --git a/src/IF.Lastfm.Core/Api/Commands/Tag/GetTopArtistsCommand.cs b/src/IF.Lastfm.Core/Api/Commands/Tag/GetTopArtistsCommand.cs
index eb168928..2efc4da7 100644
--- a/src/IF.Lastfm.Core/Api/Commands/Tag/GetTopArtistsCommand.cs
+++ b/src/IF.Lastfm.Core/Api/Commands/Tag/GetTopArtistsCommand.cs
@@ -28,19 +28,25 @@ public override void SetParameters()
public override async Task> HandleResponse(HttpResponseMessage response)
{
var json = await response.Content.ReadAsStringAsync();
+ var jtoken = JsonConvert.DeserializeObject(json);
+ var resultsToken = jtoken.SelectToken("topartists");
LastResponseStatus status;
if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
{
- var jtoken = JsonConvert.DeserializeObject(json);
- var resultsToken = jtoken.SelectToken("topartists");
+ if (string.IsNullOrEmpty(resultsToken.SelectToken("@attr.tag").Value()))
+ {
+ return PageResponse.CreateErrorResponse(LastResponseStatus.MissingParameters);
+ }
+
var itemsToken = resultsToken.SelectToken("artist");
return PageResponse.CreateSuccessResponse(itemsToken, resultsToken, LastArtist.ParseJToken, LastPageResultsType.Attr);
}
else
{
- return LastResponse.CreateErrorResponse>(status);
+ // The tag api always returns a "valid" response, so
+ return PageResponse.CreateErrorResponse(status);
}
}
}