mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Merge pull request #62 from kasthack/master
library.removeTrack, library.removeScrobble, LastResponseStatus parsing
This commit is contained in:
commit
e3139e98bd
@ -101,9 +101,9 @@ public async Task<PageResponse<LastShout>> GetShoutsForArtistAsync(string artist
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
|
||||
public async Task<LastResponse> AddShoutAsync(string artistname, string messaage)
|
||||
public async Task<LastResponse> AddShoutAsync(string artistname, string message)
|
||||
{
|
||||
var command = new AddShoutCommand(Auth, artistname, messaage);
|
||||
var command = new AddShoutCommand(Auth, artistname, message);
|
||||
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
|
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Helpers;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
using IF.Lastfm.Core.Objects;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands.Library {
|
||||
internal class RemoveScrobbleCommand : PostAsyncCommandBase<LastResponse> {
|
||||
public string Artist { get; set; }
|
||||
|
||||
public string Track { get; set; }
|
||||
public DateTimeOffset Timestamp { get; set; }
|
||||
|
||||
public RemoveScrobbleCommand( ILastAuth auth, string artist, string track, DateTimeOffset timestamp ) : base( auth ) {
|
||||
Method = "library.removeScrobble";
|
||||
|
||||
Artist = artist;
|
||||
Track = track;
|
||||
Timestamp = timestamp;
|
||||
}
|
||||
|
||||
|
||||
public override void SetParameters() {
|
||||
Parameters.Add( "artist", Artist );
|
||||
Parameters.Add( "track", Track );
|
||||
Parameters.Add( "timestamp", Timestamp.AsUnixTime().ToString() );
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse( HttpResponseMessage response ) {
|
||||
return await LastResponse.HandleResponse( response );
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Helpers;
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands.Library {
|
||||
internal class RemoveTrackCommand : PostAsyncCommandBase<LastResponse> {
|
||||
public string Artist { get; set; }
|
||||
|
||||
public string Track { get; set; }
|
||||
|
||||
public RemoveTrackCommand( ILastAuth auth, string artist, string track) : base( auth ) {
|
||||
Method = "library.removeTrack";
|
||||
|
||||
Artist = artist;
|
||||
Track = track;
|
||||
}
|
||||
|
||||
|
||||
public override void SetParameters() {
|
||||
Parameters.Add( "artist", Artist );
|
||||
Parameters.Add( "track", Track );
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse( HttpResponseMessage response ) {
|
||||
return await LastResponse.HandleResponse( response );
|
||||
}
|
||||
}
|
||||
}
|
@ -22,72 +22,72 @@ public enum LastResponseStatus
|
||||
/// <summary>
|
||||
/// The service requested does not exist (2)
|
||||
/// </summary>
|
||||
BadService,
|
||||
BadService = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The method requested does not exist in this service (3)
|
||||
/// </summary>
|
||||
BadMethod,
|
||||
BadMethod = 3,
|
||||
|
||||
/// <summary>
|
||||
/// This credential does not have permission to access the service requested (4)
|
||||
/// </summary>
|
||||
BadAuth,
|
||||
BadAuth = 4,
|
||||
|
||||
/// <summary>
|
||||
/// This service doesn't exist in the requested format
|
||||
/// </summary>
|
||||
BadFormat,
|
||||
BadFormat = 5,
|
||||
|
||||
/// <summary>
|
||||
/// Required parameters were missing from the request (6)
|
||||
/// </summary>
|
||||
MissingParameters,
|
||||
MissingParameters = 6,
|
||||
|
||||
/// <summary>
|
||||
/// The requested resource is invalid (7)
|
||||
/// </summary>
|
||||
BadResource,
|
||||
BadResource = 7,
|
||||
|
||||
/// <summary>
|
||||
/// An unknown failure occured when creating the response (8)
|
||||
/// </summary>
|
||||
Failure,
|
||||
Failure = 8,
|
||||
|
||||
/// <summary>
|
||||
/// The session has expired, reauthenticate before retrying (9)
|
||||
/// </summary>
|
||||
SessionExpired,
|
||||
SessionExpired = 9,
|
||||
|
||||
/// <summary>
|
||||
/// The provided API key was invalid (10)
|
||||
/// </summary>
|
||||
BadApiKey,
|
||||
BadApiKey = 10,
|
||||
|
||||
/// <summary>
|
||||
/// This service is temporarily offline, retry later (11)
|
||||
/// </summary>
|
||||
ServiceDown,
|
||||
ServiceDown = 11,
|
||||
|
||||
/// <summary>
|
||||
/// The request signature was invalid. Check that your API key and secret are valid. (13)
|
||||
/// You can generate new keys at http://www.last.fm/api/accounts
|
||||
/// </summary>
|
||||
BadMethodSignature,
|
||||
BadMethodSignature = 13,
|
||||
|
||||
/// <summary>
|
||||
/// There was a temporary error while processing the request, retry later (16)
|
||||
/// </summary>
|
||||
TemporaryFailure,
|
||||
TemporaryFailure = 16,
|
||||
|
||||
/// <summary>
|
||||
/// This API key has been suspended, please generate a new key at http://www.last.fm/api/accounts (26)
|
||||
/// </summary>
|
||||
KeySuspended,
|
||||
KeySuspended = 26,
|
||||
|
||||
/// <summary>
|
||||
/// This API key has been rate-limited because too many requests have been made in a short period. Retry later (29)
|
||||
/// </summary>
|
||||
RateLimited
|
||||
RateLimited = 29
|
||||
}
|
||||
}
|
@ -43,7 +43,7 @@ Task<PageResponse<LastShout>> GetShoutsForArtistAsync(string artistname,
|
||||
int count = LastFm.DefaultPageLength,
|
||||
bool autocorrect = false);
|
||||
|
||||
Task<LastResponse> AddShoutAsync(string artistname, string messaage);
|
||||
Task<LastResponse> AddShoutAsync(string artistname, string message);
|
||||
|
||||
Task<PageResponse<LastArtist>> SearchForArtistAsync(string artistname,
|
||||
int page = 1,
|
||||
|
@ -16,6 +16,11 @@ Task<PageResponse<LastTrack>> GetTracks(string username,
|
||||
DateTimeOffset since,
|
||||
int startIndex = 0,
|
||||
int endIndex = LastFm.DefaultPageLength);
|
||||
Task<LastResponse> RemoveScrobble(
|
||||
string artist,
|
||||
string track,
|
||||
DateTimeOffset timestamp );
|
||||
|
||||
Task<LastResponse> RemoveTrack( string artist, string track );
|
||||
}
|
||||
}
|
@ -8,8 +8,10 @@ namespace IF.Lastfm.Core.Api
|
||||
{
|
||||
public class LibraryApi : ILibraryApi
|
||||
{
|
||||
public LibraryApi( ILastAuth auth ) { Auth = auth; }
|
||||
public ILastAuth Auth { get; private set; }
|
||||
|
||||
|
||||
public async Task<PageResponse<LastTrack>> GetTracks(string username, string artist, string album, DateTimeOffset since, int pagenumber = 0, int count = LastFm.DefaultPageLength)
|
||||
{
|
||||
var command = new GetTracksCommand(Auth, username, artist, album, since)
|
||||
@ -20,5 +22,14 @@ public async Task<PageResponse<LastTrack>> GetTracks(string username, string art
|
||||
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
|
||||
public async Task<LastResponse> RemoveScrobble( string artist, string track, DateTimeOffset timestamp ) {
|
||||
var command = new RemoveScrobbleCommand( Auth, artist, track, timestamp );
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
public async Task<LastResponse> RemoveTrack( string artist, string track ) {
|
||||
var command = new RemoveTrackCommand( Auth, artist, track );
|
||||
return await command.ExecuteAsync();
|
||||
}
|
||||
}
|
||||
}
|
@ -61,6 +61,8 @@
|
||||
<Compile Include="Api\Commands\Artist\GetTagsByUserCommand.cs" />
|
||||
<Compile Include="Api\Commands\Artist\GetTopTagsCommand.cs" />
|
||||
<Compile Include="Api\Commands\Library\GetTracksCommand.cs" />
|
||||
<Compile Include="Api\Commands\Library\RemoveScrobbleCommand.cs" />
|
||||
<Compile Include="Api\Commands\Library\RemoveTrackCommand.cs" />
|
||||
<Compile Include="Api\Commands\Track\ScrobbleCommand.cs" />
|
||||
<Compile Include="Api\Commands\Track\UpdateNowPlayingCommand.cs" />
|
||||
<Compile Include="Api\Commands\UnauthenticatedPostAsyncCommandBase.cs" />
|
||||
|
@ -114,51 +114,7 @@ public static bool IsResponseValid(string json, out LastResponseStatus status)
|
||||
int code;
|
||||
if (Int32.TryParse(codeString, out code))
|
||||
{
|
||||
switch (code)
|
||||
{
|
||||
case 2:
|
||||
status = LastResponseStatus.BadService;
|
||||
break;
|
||||
case 3:
|
||||
status = LastResponseStatus.BadMethod;
|
||||
break;
|
||||
case 4:
|
||||
status = LastResponseStatus.BadAuth;
|
||||
break;
|
||||
case 5:
|
||||
status = LastResponseStatus.BadFormat;
|
||||
break;
|
||||
case 6:
|
||||
status = LastResponseStatus.MissingParameters;
|
||||
break;
|
||||
case 7:
|
||||
status = LastResponseStatus.BadResource;
|
||||
break;
|
||||
case 8:
|
||||
status = LastResponseStatus.Failure;
|
||||
break;
|
||||
case 9:
|
||||
status = LastResponseStatus.SessionExpired;
|
||||
break;
|
||||
case 10:
|
||||
status = LastResponseStatus.BadApiKey;
|
||||
break;
|
||||
case 11:
|
||||
status = LastResponseStatus.ServiceDown;
|
||||
break;
|
||||
case 13:
|
||||
status = LastResponseStatus.BadMethodSignature;
|
||||
break;
|
||||
case 16:
|
||||
status = LastResponseStatus.TemporaryFailure;
|
||||
break;
|
||||
case 26:
|
||||
status = LastResponseStatus.KeySuspended;
|
||||
break;
|
||||
case 29:
|
||||
status = LastResponseStatus.RateLimited;
|
||||
break;
|
||||
}
|
||||
status = (LastResponseStatus) code;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user