mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-16 23:13:07 +01:00
Added GetLovedTracksCommand.cs (#110)
Added GetLovedTracksCommand.cs Added json for testing it, and Unit Tests. Modified UserApi and IUserApi to add
This commit is contained in:
parent
9f11c2e407
commit
318b3795b2
@ -0,0 +1,93 @@
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
using IF.Lastfm.Core.Objects;
|
||||
using IF.Lastfm.Core.Tests.Resources;
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Commands.User;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace IF.Lastfm.Core.Tests.Api.Commands
|
||||
{
|
||||
using System.Web.Configuration;
|
||||
|
||||
class UserGetLovedTracksCommandTests : CommandTestsBase
|
||||
{
|
||||
[Test]
|
||||
public async Task HandleResponseMultiple()
|
||||
{
|
||||
var command = new GetLovedTracksCommand(MAuth.Object, "rj")
|
||||
{
|
||||
Count = 3
|
||||
};
|
||||
|
||||
var expectedTrack = new LastTrack
|
||||
{
|
||||
ArtistName = "The Rolling Stones",
|
||||
TimePlayed = new DateTime(2014, 12, 19, 16, 16, 56, DateTimeKind.Utc),
|
||||
Mbid = "3dde65c8-22c3-4637-b67e-b234177c847b",
|
||||
Name = "Love in Vain",
|
||||
ArtistMbid = "b071f9fa-14b0-4217-8e97-eb41da73f598",
|
||||
AlbumName = "Let It Bleed",
|
||||
Url = new Uri("http://www.last.fm/music/The+Rolling+Stones/_/Love+in+Vain"),
|
||||
Images = new LastImageSet(
|
||||
"http://userserve-ak.last.fm/serve/34s/101739037.png",
|
||||
"http://userserve-ak.last.fm/serve/64s/101739037.png",
|
||||
"http://userserve-ak.last.fm/serve/126/101739037.png",
|
||||
"http://userserve-ak.last.fm/serve/300x300/101739037.png")
|
||||
};
|
||||
var response = CreateResponseMessage(Encoding.UTF8.GetString(UserApiResponses.UserGetLovedTracksMultiple));
|
||||
var actual = await command.HandleResponse(response);
|
||||
|
||||
Assert.IsTrue(actual.Success);
|
||||
TestHelper.AssertSerialiseEqual(expectedTrack, actual.Content[1]);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleResponseSingle()
|
||||
{
|
||||
var command = new GetLovedTracksCommand(MAuth.Object, "rj")
|
||||
{
|
||||
Count = 1
|
||||
};
|
||||
var expectedTrack = new LastTrack
|
||||
{
|
||||
ArtistName = "Rick James",
|
||||
Mbid = "",
|
||||
Name = "Super Freak (Part 1) - 1981 Single Version",
|
||||
ArtistMbid = "cba9cec2-be8d-41bd-91b4-a1cd7de39b0c",
|
||||
|
||||
TimePlayed = new DateTime(2014, 12, 20, 10, 16, 52, DateTimeKind.Utc),
|
||||
AlbumName = "The Definitive Collection",
|
||||
Url = new Uri("http://www.last.fm/music/Rick+James/_/Super+Freak+(Part+1)+-+1981+Single+Version", UriKind.Absolute),
|
||||
Images = new LastImageSet(
|
||||
"http://userserve-ak.last.fm/serve/34s/90462319.jpg",
|
||||
"http://userserve-ak.last.fm/serve/64s/90462319.jpg",
|
||||
"http://userserve-ak.last.fm/serve/126/90462319.jpg",
|
||||
"http://userserve-ak.last.fm/serve/300x300/90462319.jpg")
|
||||
};
|
||||
var response = CreateResponseMessage(Encoding.UTF8.GetString(UserApiResponses.UserGetLovedTracksSingle));
|
||||
var actual = await command.HandleResponse(response);
|
||||
|
||||
Assert.IsTrue(actual.Success);
|
||||
TestHelper.AssertSerialiseEqual(expectedTrack, actual.Single());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleErrorResponse()
|
||||
{
|
||||
var command = new GetRecentTracksCommand(MAuth.Object, "rj")
|
||||
{
|
||||
Count = 1
|
||||
};
|
||||
var response = CreateResponseMessage(Encoding.UTF8.GetString(UserApiResponses.UserGetRecentTracksError));
|
||||
var parsed = await command.HandleResponse(response);
|
||||
|
||||
Assert.IsFalse(parsed.Success);
|
||||
Assert.IsTrue(parsed.Status == LastResponseStatus.MissingParameters);
|
||||
}
|
||||
}
|
||||
}
|
@ -97,6 +97,7 @@
|
||||
<Compile Include="Api\Commands\TrackApi\GetTrackShoutsCommandTests.cs" />
|
||||
<Compile Include="Api\Commands\Artist\GetInfoCommandTests.cs" />
|
||||
<Compile Include="Api\Commands\TrackScrobbleCommandTests.cs" />
|
||||
<Compile Include="Api\Commands\UserGetLovedTracksCommandTests.cs" />
|
||||
<Compile Include="Api\Commands\UserGetRecentTracksCommandTests.cs" />
|
||||
<Compile Include="Api\Commands\UserGetRecommendedArtistsCommandTests.cs" />
|
||||
<Compile Include="Api\Commands\UserGetTopAlbumsCommandTests.cs" />
|
||||
@ -199,6 +200,9 @@
|
||||
<None Include="Resources\TrackApi\TrackScrobbleSuccess2.json" />
|
||||
<None Include="Resources\TrackApi\TrackScrobbleSuccessNoAlbumProperty.json" />
|
||||
<None Include="Resources\TrackApi\TrackScrobbleSuccess.json" />
|
||||
<None Include="Resources\UserApi\UserGetLovedTracksError.json" />
|
||||
<None Include="Resources\UserApi\UserGetLovedTracksMultiple.json" />
|
||||
<None Include="Resources\UserApi\UserGetLovedTracksSingle.json" />
|
||||
<None Include="Resources\UserApi\UserGetRecentTracksEmpty.json" />
|
||||
<None Include="Resources\UserApi\UserGetRecentTracksError.json" />
|
||||
<None Include="Resources\UserApi\UserGetRecentTracksMissing.json" />
|
||||
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"error": 6,
|
||||
"message": "Invalid parameters - Your request is missing the [user] parameter",
|
||||
"links": []
|
||||
}
|
@ -0,0 +1,733 @@
|
||||
{
|
||||
"lovedtracks": {
|
||||
"track": [
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Santana",
|
||||
"mbid": "1bc6816a-d056-4113-9b0a-6c52e5c31a3c"
|
||||
},
|
||||
"name": "No One to Depend On",
|
||||
"streamable": "0",
|
||||
"mbid": "3f8ed8da-dcc6-43dc-8266-3663007261a6",
|
||||
"album": {
|
||||
"#text": "Santana (III)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Santana/_/No+One+to+Depend+On",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/99461493.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/99461493.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/99461493.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/99461493.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 16:21",
|
||||
"uts": "1419006075"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Rolling Stones",
|
||||
"mbid": "b071f9fa-14b0-4217-8e97-eb41da73f598"
|
||||
},
|
||||
"name": "Love in Vain",
|
||||
"streamable": "0",
|
||||
"mbid": "3dde65c8-22c3-4637-b67e-b234177c847b",
|
||||
"album": {
|
||||
"#text": "Let It Bleed",
|
||||
"mbid": "8bc2f5e2-122a-42db-b86c-fddedc77463a"
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Rolling+Stones/_/Love+in+Vain",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/101739037.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/101739037.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/101739037.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/101739037.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 16:16",
|
||||
"uts": "1419005816"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Who",
|
||||
"mbid": "9fdaa16b-a6c4-4831-b87c-bc9ca8ce7eaa"
|
||||
},
|
||||
"name": "Pinball Wizard",
|
||||
"streamable": "0",
|
||||
"mbid": "79f3dc97-2297-47ee-8556-9a1bb4b48d53",
|
||||
"album": {
|
||||
"#text": "Tommy (Remastered)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Who/_/Pinball+Wizard",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/35234991.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/35234991.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/35234991.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/35234991.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 16:13",
|
||||
"uts": "1419005635"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Cream",
|
||||
"mbid": "04cd0cfd-bfd1-4c36-bc38-95c35e2c045f"
|
||||
},
|
||||
"name": "I'm So Glad",
|
||||
"streamable": "0",
|
||||
"mbid": "3dc91be5-c7ab-4af3-9557-19eb8e054d5a",
|
||||
"album": {
|
||||
"#text": "Fresh Cream (Remastered)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Cream/_/I%27m+So+Glad",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/89387215.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/89387215.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/89387215.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/89387215.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 16:09",
|
||||
"uts": "1419005395"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Yardbirds",
|
||||
"mbid": "191de76f-a224-445d-b041-54df16d65bf7"
|
||||
},
|
||||
"name": "Smokestack Lightning",
|
||||
"streamable": "0",
|
||||
"mbid": "580b35c9-b701-43d7-9ec3-6bd6f01534c2",
|
||||
"album": {
|
||||
"#text": "Five Live Yardbirds",
|
||||
"mbid": "3fda56ac-efe1-4a26-9c86-116f5cc4b721"
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Yardbirds/_/Smokestack+Lightning",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/91925037.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/91925037.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/91925037.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/91925037.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 16:04",
|
||||
"uts": "1419005063"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Canned Heat",
|
||||
"mbid": "815a0279-558c-4522-ac3b-6a1e259e95b5"
|
||||
},
|
||||
"name": "One Kind Favor",
|
||||
"streamable": "0",
|
||||
"mbid": "5bde419b-9e93-46c6-baf5-ef58a0b3bb73",
|
||||
"album": {
|
||||
"#text": "Living The Blues",
|
||||
"mbid": "ec82ab15-8c01-4aa0-810c-d184d20f229b"
|
||||
},
|
||||
"url": "http://www.last.fm/music/Canned+Heat/_/One+Kind+Favor",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/100370719.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/100370719.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/100370719.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/100370719.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:59",
|
||||
"uts": "1419004779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Cream",
|
||||
"mbid": "04cd0cfd-bfd1-4c36-bc38-95c35e2c045f"
|
||||
},
|
||||
"name": "Politician",
|
||||
"streamable": "0",
|
||||
"mbid": "f2c2760c-ea5c-4ca0-8a8b-4199a41ffba0",
|
||||
"album": {
|
||||
"#text": "Wheels of Fire (Remastered)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Cream/_/Politician",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/75021714.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/75021714.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/75021714.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/75021714.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:55",
|
||||
"uts": "1419004522"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Doors",
|
||||
"mbid": "9efff43b-3b29-4082-824e-bc82f646f93d"
|
||||
},
|
||||
"name": "Light My Fire",
|
||||
"streamable": "0",
|
||||
"mbid": "05b7cd66-a700-4aa1-baf3-e1e41388f3cf",
|
||||
"album": {
|
||||
"#text": "The Doors",
|
||||
"mbid": "8f3cf206-35f6-3c77-925e-766bdfbf6333"
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Doors/_/Light+My+Fire",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/88289473.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/88289473.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/88289473.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/88289473.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:48",
|
||||
"uts": "1419004096"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Full Metal Hammer",
|
||||
"mbid": ""
|
||||
},
|
||||
"name": "Since Ive Been Loving You",
|
||||
"streamable": "0",
|
||||
"mbid": "",
|
||||
"album": {
|
||||
"#text": "It's A Full Metal Hammer Thing",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Full+Metal+Hammer/_/Since+Ive+Been+Loving+You",
|
||||
"image": [
|
||||
{
|
||||
"#text": "",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:41",
|
||||
"uts": "1419003662"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Jimi Hendrix Experience",
|
||||
"mbid": "33b3c323-77c2-417c-a5b4-af7e6a111cc9"
|
||||
},
|
||||
"name": "Burning Of The Midnight Lamp",
|
||||
"streamable": "0",
|
||||
"mbid": "1a1c8a21-351d-4c43-8ed4-3fd3f5058e1b",
|
||||
"album": {
|
||||
"#text": "Electric Ladyland",
|
||||
"mbid": "9fa7f446-b15c-3ad9-a4cc-3348e9140319"
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Jimi+Hendrix+Experience/_/Burning+Of+The+Midnight+Lamp",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/96516997.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/96516997.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/96516997.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/96516997.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:37",
|
||||
"uts": "1419003443"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Otis Rush",
|
||||
"mbid": "40ee7c92-f44a-4d14-9aee-f87244465ee4"
|
||||
},
|
||||
"name": "Double Trouble",
|
||||
"streamable": "0",
|
||||
"mbid": "f23c009e-19c4-4196-8fe2-236c28546bfc",
|
||||
"album": {
|
||||
"#text": "Live At Montreux 1986",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Otis+Rush/_/Double+Trouble",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/91112769.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/91112769.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/91112769.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/91112769.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:32",
|
||||
"uts": "1419003132"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Yardbirds",
|
||||
"mbid": "191de76f-a224-445d-b041-54df16d65bf7"
|
||||
},
|
||||
"name": "I Don't Care No More",
|
||||
"streamable": "0",
|
||||
"mbid": "30e22d26-15f7-4547-a0f4-b08feed1a7fc",
|
||||
"album": {
|
||||
"#text": "Rock Classics: Parable Of Arable Land",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Yardbirds/_/I+Don%27t+Care+No+More",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/54760139.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/54760139.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/54760139.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/174s/54760139.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:28",
|
||||
"uts": "1419002911"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Doors",
|
||||
"mbid": "9efff43b-3b29-4082-824e-bc82f646f93d"
|
||||
},
|
||||
"name": "Crawling King Snake",
|
||||
"streamable": "0",
|
||||
"mbid": "a08905e0-dc59-47fe-ae93-be5bb0d22a84",
|
||||
"album": {
|
||||
"#text": "L.A. Woman",
|
||||
"mbid": "492025d7-a5fd-40f0-94f9-8841e9078bb3"
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Doors/_/Crawling+King+Snake",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/88488175.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/88488175.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/88488175.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/88488175.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:23",
|
||||
"uts": "1419002612"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Jimmy Page",
|
||||
"mbid": "519774a4-3b18-4042-b8c0-927845a616c9"
|
||||
},
|
||||
"name": "Prison Blues",
|
||||
"streamable": "0",
|
||||
"mbid": "f78a2ce9-3dba-439c-9e05-0783ccfa40c3",
|
||||
"album": {
|
||||
"#text": "Outrider",
|
||||
"mbid": "a53095c1-a6ea-4bc9-a14c-6ecafeef738e"
|
||||
},
|
||||
"url": "http://www.last.fm/music/Jimmy+Page/_/Prison+Blues",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/90138723.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/90138723.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/90138723.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/90138723.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:16",
|
||||
"uts": "1419002181"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Cream",
|
||||
"mbid": "04cd0cfd-bfd1-4c36-bc38-95c35e2c045f"
|
||||
},
|
||||
"name": "Spoonful",
|
||||
"streamable": "0",
|
||||
"mbid": "f6f5d7f0-b368-45c0-8505-4b33ac696035",
|
||||
"album": {
|
||||
"#text": "Fresh Cream (Remastered)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Cream/_/Spoonful",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/89387215.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/89387215.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/89387215.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/89387215.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:09",
|
||||
"uts": "1419001787"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Doors",
|
||||
"mbid": "9efff43b-3b29-4082-824e-bc82f646f93d"
|
||||
},
|
||||
"name": "Back Door Man",
|
||||
"streamable": "0",
|
||||
"mbid": "1976f693-f35f-4534-b341-31d51f46b208",
|
||||
"album": {
|
||||
"#text": "The Doors",
|
||||
"mbid": "8f3cf206-35f6-3c77-925e-766bdfbf6333"
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Doors/_/Back+Door+Man",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/88289473.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/88289473.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/88289473.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/88289473.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:06",
|
||||
"uts": "1419001574"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Yardbirds",
|
||||
"mbid": "191de76f-a224-445d-b041-54df16d65bf7"
|
||||
},
|
||||
"name": "I Ain't Got You",
|
||||
"streamable": "0",
|
||||
"mbid": "19ee6ab9-1716-41e1-8aa7-cada544f5695",
|
||||
"album": {
|
||||
"#text": "Five Live",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Yardbirds/_/I+Ain%27t+Got+You",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/87032633.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/87032633.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/87032633.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/87032633.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:04",
|
||||
"uts": "1419001453"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "The Who",
|
||||
"mbid": "9fdaa16b-a6c4-4831-b87c-bc9ca8ce7eaa"
|
||||
},
|
||||
"name": "Substitute (Remixed Live At Leeds Version)",
|
||||
"streamable": "0",
|
||||
"mbid": "",
|
||||
"album": {
|
||||
"#text": "Live At Leeds (25th Anniversary Edition)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/The+Who/_/Substitute+(Remixed+Live+At+Leeds+Version)",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/82286267.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/82286267.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/82286267.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/82286267.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 15:01",
|
||||
"uts": "1419001281"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Cream",
|
||||
"mbid": "04cd0cfd-bfd1-4c36-bc38-95c35e2c045f"
|
||||
},
|
||||
"name": "Tales of Brave Ulysses",
|
||||
"streamable": "0",
|
||||
"mbid": "f5e62507-07f1-45eb-83c6-6742d5260d06",
|
||||
"album": {
|
||||
"#text": "Disraeli Gears (Remastered)",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Cream/_/Tales+of+Brave+Ulysses",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/57500153.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/57500153.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/57500153.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/57500153.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 14:58",
|
||||
"uts": "1419001115"
|
||||
}
|
||||
},
|
||||
{
|
||||
"artist": {
|
||||
"#text": "Jimi Hendrix",
|
||||
"mbid": "06fb1c8b-566e-4cb2-985b-b467c90781d4"
|
||||
},
|
||||
"name": "Johnny B. Goode (Live Berkeley Community Center, Berkeley, CA May 30, 1970)",
|
||||
"streamable": "0",
|
||||
"mbid": "",
|
||||
"album": {
|
||||
"#text": "In The West",
|
||||
"mbid": ""
|
||||
},
|
||||
"url": "http://www.last.fm/music/Jimi+Hendrix/_/Johnny+B.+Goode+(Live+Berkeley+Community+Center,+Berkeley,+CA+May+30,+1970)",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/78579114.png",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/78579114.png",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/78579114.png",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/78579114.png",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "19 Dec 2014, 14:53",
|
||||
"uts": "1419000831"
|
||||
}
|
||||
}
|
||||
],
|
||||
"@attr": {
|
||||
"user": "RJ",
|
||||
"page": "0",
|
||||
"perPage": "20",
|
||||
"totalPages": "3827",
|
||||
"total": "76526"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
{
|
||||
"lovedtracks": {
|
||||
"track": {
|
||||
"artist": {
|
||||
"#text": "Rick James",
|
||||
"mbid": "cba9cec2-be8d-41bd-91b4-a1cd7de39b0c"
|
||||
},
|
||||
"name": "Super Freak (Part 1) - 1981 Single Version",
|
||||
"streamable": "0",
|
||||
"mbid": "",
|
||||
"album": {
|
||||
"#text": "The Definitive Collection",
|
||||
"mbid": "f22c19bf-1c88-4651-a0d3-8c50735f3c93"
|
||||
},
|
||||
"url": "http://www.last.fm/music/Rick+James/_/Super+Freak+(Part+1)+-+1981+Single+Version",
|
||||
"image": [
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/34s/90462319.jpg",
|
||||
"size": "small"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/64s/90462319.jpg",
|
||||
"size": "medium"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/126/90462319.jpg",
|
||||
"size": "large"
|
||||
},
|
||||
{
|
||||
"#text": "http://userserve-ak.last.fm/serve/300x300/90462319.jpg",
|
||||
"size": "extralarge"
|
||||
}
|
||||
],
|
||||
"date": {
|
||||
"#text": "20 Dec 2014, 10:16",
|
||||
"uts": "1419070612"
|
||||
}
|
||||
},
|
||||
"@attr": {
|
||||
"user": "RJ",
|
||||
"page": "0",
|
||||
"perPage": "1",
|
||||
"totalPages": "76536",
|
||||
"total": "76536"
|
||||
}
|
||||
}
|
||||
}
|
@ -19,7 +19,7 @@ namespace IF.Lastfm.Core.Tests.Resources {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class UserApiResponses {
|
||||
@ -60,6 +60,36 @@ internal UserApiResponses() {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
public static byte[] UserGetLovedTracksError {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("UserGetLovedTracksError", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
public static byte[] UserGetLovedTracksMultiple {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("UserGetLovedTracksMultiple", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
public static byte[] UserGetLovedTracksSingle {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("UserGetLovedTracksSingle", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
|
@ -118,6 +118,15 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="UserGetLovedTracksError" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>UserApi\UserGetLovedTracksError.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="UserGetLovedTracksMultiple" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>UserApi\UserGetLovedTracksMultiple.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="UserGetLovedTracksSingle" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>UserApi\UserGetLovedTracksSingle.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="UserGetRecentTracksEmpty" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>userapi\usergetrecenttracksempty.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
|
@ -0,0 +1,52 @@
|
||||
using System;
|
||||
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.getLovedTracks")]
|
||||
internal class GetLovedTracksCommand : GetAsyncCommandBase<PageResponse<LastTrack>>
|
||||
{
|
||||
public string Username { get; set; }
|
||||
public GetLovedTracksCommand(ILastAuth auth, string username) : base(auth)
|
||||
{
|
||||
Username = username;
|
||||
}
|
||||
|
||||
public override void SetParameters()
|
||||
{
|
||||
Parameters.Add("user", Username);
|
||||
|
||||
this.AddPagingParameters();
|
||||
this.DisableCaching();
|
||||
}
|
||||
|
||||
public override async Task<PageResponse<LastTrack>> 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).SelectToken("lovedtracks");
|
||||
var itemsToken = jtoken.SelectToken("track");
|
||||
var attrToken = jtoken.SelectToken("@attr");
|
||||
|
||||
return PageResponse<LastTrack>.CreateSuccessResponse(
|
||||
itemsToken,
|
||||
attrToken,
|
||||
LastTrack.ParseJToken,
|
||||
LastPageResultsType.Attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -37,5 +37,7 @@ Task<PageResponse<LastShout>> GetShoutsAsync(string username,
|
||||
Task<LastResponse<LastUser>> GetInfoAsync(string username);
|
||||
|
||||
Task<LastResponse> AddShoutAsync(string recipient, string message);
|
||||
|
||||
Task<PageResponse<LastTrack>> GetLovedTracks(string username, int pagenumber, int count);
|
||||
}
|
||||
}
|
@ -118,5 +118,19 @@ public async Task<LastResponse> AddShoutAsync(string recipient, string message)
|
||||
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
|
||||
public async Task<PageResponse<LastTrack>> GetLovedTracks(
|
||||
string username,
|
||||
int pagenumber = 1,
|
||||
int count = LastFm.DefaultPageLength)
|
||||
{
|
||||
var command = new GetLovedTracksCommand(auth: Auth, username: username)
|
||||
{
|
||||
Page = pagenumber,
|
||||
Count = count,
|
||||
HttpClient = HttpClient
|
||||
};
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user