mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Changed command structure to reduce repetition
This commit is contained in:
parent
73e1831986
commit
db00dfd8ed
@ -19,16 +19,11 @@ public AddShoutCommand(IAuth auth, string album, string artist, string message)
|
|||||||
Message = message;
|
Message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("album", Album);
|
||||||
{
|
Parameters.Add("artist", Artist);
|
||||||
{"album", Album},
|
Parameters.Add("message", Message);
|
||||||
{"artist", Artist},
|
|
||||||
{"message", Message}
|
|
||||||
};
|
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -23,19 +23,13 @@ public GetAlbumInfoCommand(IAuth auth, string artistname, string albumname) : ba
|
|||||||
AlbumName = albumname;
|
AlbumName = albumname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("artist", ArtistName);
|
||||||
{
|
Parameters.Add("album", AlbumName);
|
||||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||||
{"album", Uri.EscapeDataString(AlbumName)},
|
|
||||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.DisableCaching(parameters);
|
base.DisableCaching();
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(apiUrl, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse<Album>> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse<Album>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -25,22 +25,16 @@ public GetAlbumShoutsCommand(IAuth auth, string albumname, string artistname)
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("album", AlbumName);
|
||||||
{
|
Parameters.Add("artist", ArtistName);
|
||||||
{"album", Uri.EscapeDataString(AlbumName)},
|
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
|
||||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.AddPagingParameters(parameters);
|
base.AddPagingParameters();
|
||||||
base.DisableCaching(parameters);
|
base.DisableCaching();
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(apiUrl, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
string json = await response.Content.ReadAsStringAsync();
|
||||||
|
@ -17,15 +17,10 @@ public AddShoutCommand(IAuth auth, string artist, string message) : base(auth)
|
|||||||
Message = message;
|
Message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("artist", Artist);
|
||||||
{
|
Parameters.Add("message", Message);
|
||||||
{"artist", Artist},
|
|
||||||
{"message", Message}
|
|
||||||
};
|
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -24,18 +24,15 @@ public GetArtistInfoCommand(IAuth auth, string artistname)
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
/// <summary>
|
||||||
|
/// TODO Bio language
|
||||||
|
/// </summary>
|
||||||
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("artist", ArtistName);
|
||||||
{
|
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
|
||||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.DisableCaching(parameters);
|
base.DisableCaching();
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(apiUrl, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse<Artist>> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse<Artist>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
@ -11,7 +9,7 @@
|
|||||||
|
|
||||||
namespace IF.Lastfm.Core.Api.Commands.ArtistApi
|
namespace IF.Lastfm.Core.Api.Commands.ArtistApi
|
||||||
{
|
{
|
||||||
internal class GetArtistShoutsCommand : GetAsyncCommandBase<PageResponse<Shout>>
|
public class GetArtistShoutsCommand : GetAsyncCommandBase<PageResponse<Shout>>
|
||||||
{
|
{
|
||||||
public string ArtistName { get; set; }
|
public string ArtistName { get; set; }
|
||||||
public bool Autocorrect { get; set; }
|
public bool Autocorrect { get; set; }
|
||||||
@ -23,22 +21,16 @@ public GetArtistShoutsCommand(IAuth auth, string artistname)
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("artist", ArtistName);
|
||||||
{
|
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
|
||||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.AddPagingParameters(parameters);
|
base.AddPagingParameters();
|
||||||
base.DisableCaching(parameters);
|
base.DisableCaching();
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(apiUrl, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
public override async Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
string json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
@ -54,7 +46,5 @@ public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessa
|
|||||||
return PageResponse<Shout>.CreateErrorResponse(error);
|
return PageResponse<Shout>.CreateErrorResponse(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,29 +1,24 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace IF.Lastfm.Core.Api.Commands
|
namespace IF.Lastfm.Core.Api.Commands
|
||||||
{
|
{
|
||||||
internal abstract class GetAsyncCommandBase<T> : IAsyncCommand<T>
|
public abstract class GetAsyncCommandBase<T> : LastAsyncCommandBase<T>
|
||||||
{
|
{
|
||||||
public string Method { get; protected set; }
|
|
||||||
public Uri Url { get; protected set; }
|
|
||||||
public IAuth Auth { get; protected set; }
|
|
||||||
|
|
||||||
public int Page { get; set; }
|
|
||||||
public int Count { get; set; }
|
|
||||||
|
|
||||||
protected GetAsyncCommandBase(IAuth auth)
|
protected GetAsyncCommandBase(IAuth auth)
|
||||||
{
|
{
|
||||||
Auth = auth;
|
Auth = auth;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Uri BuildRequestUrl();
|
public async override Task<T> ExecuteAsync()
|
||||||
|
|
||||||
public async Task<T> ExecuteAsync()
|
|
||||||
{
|
{
|
||||||
|
SetParameters();
|
||||||
|
|
||||||
|
EscapeParameters();
|
||||||
|
|
||||||
Url = BuildRequestUrl();
|
Url = BuildRequestUrl();
|
||||||
|
|
||||||
var httpClient = new HttpClient();
|
var httpClient = new HttpClient();
|
||||||
@ -31,22 +26,18 @@ public async Task<T> ExecuteAsync()
|
|||||||
return await HandleResponse(response);
|
return await HandleResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Task<T> HandleResponse(HttpResponseMessage response);
|
protected override Uri BuildRequestUrl()
|
||||||
|
|
||||||
protected void AddPagingParameters(Dictionary<string, string> parameters)
|
|
||||||
{
|
{
|
||||||
parameters.Add("page", Page.ToString());
|
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, Parameters);
|
||||||
parameters.Add("limit", Count.ToString());
|
return new Uri(apiUrl, UriKind.Absolute);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private void EscapeParameters()
|
||||||
/// Annoying workaround for Windows Phone's caching...
|
|
||||||
/// see http://stackoverflow.com/questions/6334788/windows-phone-7-webrequest-caching
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="parameters"></param>
|
|
||||||
protected void DisableCaching(Dictionary<string, string> parameters)
|
|
||||||
{
|
{
|
||||||
parameters.Add("disablecachetoken", DateTime.UtcNow.Ticks.ToString());
|
foreach (var key in Parameters.Keys.ToList())
|
||||||
|
{
|
||||||
|
Parameters[key] = Uri.EscapeDataString(Parameters[key]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,9 @@
|
|||||||
using System;
|
using System.Threading.Tasks;
|
||||||
using System.Net.Http;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace IF.Lastfm.Core.Api.Commands
|
namespace IF.Lastfm.Core.Api.Commands
|
||||||
{
|
{
|
||||||
internal interface IAsyncCommand<T>
|
internal interface IAsyncCommand<T>
|
||||||
{
|
{
|
||||||
Uri BuildRequestUrl();
|
|
||||||
Task<T> ExecuteAsync();
|
Task<T> ExecuteAsync();
|
||||||
Task<T> HandleResponse(HttpResponseMessage response);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
43
IF.Lastfm.Core/Api/Commands/LastAsyncCommandBase.cs
Normal file
43
IF.Lastfm.Core/Api/Commands/LastAsyncCommandBase.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IF.Lastfm.Core.Api.Commands
|
||||||
|
{
|
||||||
|
public abstract class LastAsyncCommandBase<T> : IAsyncCommand<T>
|
||||||
|
{
|
||||||
|
public string Method { get; protected set; }
|
||||||
|
public Uri Url { get; protected set; }
|
||||||
|
public IAuth Auth { get; protected set; }
|
||||||
|
public int Page { get; set; }
|
||||||
|
public int Count { get; set; }
|
||||||
|
|
||||||
|
protected Dictionary<string, string> Parameters { get; set; }
|
||||||
|
|
||||||
|
protected LastAsyncCommandBase()
|
||||||
|
{
|
||||||
|
Parameters = new Dictionary<string, string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void SetParameters();
|
||||||
|
protected abstract Uri BuildRequestUrl();
|
||||||
|
public abstract Task<T> ExecuteAsync();
|
||||||
|
public abstract Task<T> HandleResponse(HttpResponseMessage response);
|
||||||
|
|
||||||
|
protected void AddPagingParameters()
|
||||||
|
{
|
||||||
|
Parameters.Add("page", Page.ToString());
|
||||||
|
Parameters.Add("limit", Count.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Annoying workaround for Windows Phone's caching...
|
||||||
|
/// see http://stackoverflow.com/questions/6334788/windows-phone-7-webrequest-caching
|
||||||
|
/// </summary>
|
||||||
|
protected void DisableCaching()
|
||||||
|
{
|
||||||
|
Parameters.Add("disablecachetoken", DateTime.UtcNow.Ticks.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,51 +5,36 @@
|
|||||||
|
|
||||||
namespace IF.Lastfm.Core.Api.Commands
|
namespace IF.Lastfm.Core.Api.Commands
|
||||||
{
|
{
|
||||||
internal abstract class PostAsyncCommandBase<T> : IAsyncCommand<T>
|
internal abstract class PostAsyncCommandBase<T> : LastAsyncCommandBase<T>
|
||||||
{
|
{
|
||||||
public string Method { get; protected set; }
|
|
||||||
public Uri Url { get; private set; }
|
|
||||||
public IAuth Auth { get; protected set; }
|
|
||||||
|
|
||||||
public int Page { get; set; }
|
|
||||||
public int Count { get; set; }
|
|
||||||
|
|
||||||
protected PostAsyncCommandBase(IAuth auth)
|
protected PostAsyncCommandBase(IAuth auth)
|
||||||
{
|
{
|
||||||
Auth = auth;
|
Auth = auth;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uri BuildRequestUrl()
|
protected override Uri BuildRequestUrl()
|
||||||
{
|
{
|
||||||
return new Uri(LastFm.ApiRoot, UriKind.Absolute);
|
return new Uri(LastFm.ApiRoot, UriKind.Absolute);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Task<T> ExecuteAsync();
|
public override async Task<T> ExecuteAsync()
|
||||||
|
|
||||||
protected async Task<T> ExecuteInternal(Dictionary<string, string> parameters)
|
|
||||||
{
|
{
|
||||||
|
SetParameters();
|
||||||
|
|
||||||
Url = BuildRequestUrl();
|
Url = BuildRequestUrl();
|
||||||
|
|
||||||
parameters.Add("sk", Auth.User.Token);
|
Parameters.Add("sk", Auth.User.Token);
|
||||||
|
|
||||||
var apisig = Auth.GenerateMethodSignature(Method, parameters);
|
var apisig = Auth.GenerateMethodSignature(Method, Parameters);
|
||||||
|
|
||||||
var postContent = LastFm.CreatePostBody(Method,
|
var postContent = LastFm.CreatePostBody(Method,
|
||||||
Auth.ApiKey,
|
Auth.ApiKey,
|
||||||
apisig,
|
apisig,
|
||||||
parameters);
|
Parameters);
|
||||||
|
|
||||||
var httpClient = new HttpClient();
|
var httpClient = new HttpClient();
|
||||||
var response = await httpClient.PostAsync(Url, postContent);
|
var response = await httpClient.PostAsync(Url, postContent);
|
||||||
return await HandleResponse(response);
|
return await HandleResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Task<T> HandleResponse(HttpResponseMessage response);
|
|
||||||
|
|
||||||
protected void AddPagingParameters(Dictionary<string, string> parameters)
|
|
||||||
{
|
|
||||||
parameters.Add("page", Page.ToString());
|
|
||||||
parameters.Add("limit", Count.ToString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Net.Http;
|
||||||
using System.Net.Http;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api.Helpers;
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
|
|
||||||
@ -19,16 +18,11 @@ public AddShoutCommand(IAuth auth, string track, string artist, string message)
|
|||||||
Message = message;
|
Message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("track", Track);
|
||||||
{
|
Parameters.Add("artist", Artist);
|
||||||
{"track", Track},
|
Parameters.Add("message", Message);
|
||||||
{"artist", Artist},
|
|
||||||
{"message", Message}
|
|
||||||
};
|
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
using IF.Lastfm.Core.Api.Helpers;
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
@ -27,24 +24,16 @@ public GetTrackInfoCommand(IAuth auth, string trackname, string artistname)
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("track", TrackName);
|
||||||
{
|
Parameters.Add("artist", ArtistName);
|
||||||
{"track", Uri.EscapeDataString(TrackName)},
|
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
|
||||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(Username))
|
if (!string.IsNullOrWhiteSpace(Username))
|
||||||
{
|
{
|
||||||
parameters.Add("username", Username);
|
Parameters.Add("username", Username);
|
||||||
}
|
}
|
||||||
|
|
||||||
DisableCaching(parameters);
|
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(apiUrl, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse<Track>> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse<Track>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
using IF.Lastfm.Core.Api.Helpers;
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
@ -25,20 +22,14 @@ public GetTrackShoutsCommand(IAuth auth, string trackname, string artistname) :
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("track", TrackName);
|
||||||
{
|
Parameters.Add("artist", ArtistName);
|
||||||
{"track", Uri.EscapeDataString(TrackName)},
|
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
|
||||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.AddPagingParameters(parameters);
|
AddPagingParameters();
|
||||||
base.DisableCaching(parameters);
|
DisableCaching();
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(apiUrl, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -20,15 +20,10 @@ public LoveTrackCommand(IAuth auth, string trackname, string artistname)
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("track", TrackName);
|
||||||
{
|
Parameters.Add("artist", ArtistName);
|
||||||
{"track", TrackName},
|
|
||||||
{"artist", ArtistName}
|
|
||||||
};
|
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -20,15 +20,10 @@ public UnloveTrackCommand(IAuth auth, string trackname, string artistname)
|
|||||||
ArtistName = artistname;
|
ArtistName = artistname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("track", TrackName);
|
||||||
{
|
Parameters.Add("artist", ArtistName);
|
||||||
{"track", TrackName},
|
|
||||||
{"artist", ArtistName}
|
|
||||||
};
|
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
using System;
|
using System.Net.Http;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
|
||||||
using IF.Lastfm.Core.Api.Helpers;
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
|
|
||||||
namespace IF.Lastfm.Core.Api.Commands.UserApi
|
namespace IF.Lastfm.Core.Api.Commands.UserApi
|
||||||
@ -19,15 +16,10 @@ public AddShoutCommand(IAuth auth, string recipient, string message) : base(auth
|
|||||||
Message = message;
|
Message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("user", Recipient);
|
||||||
{
|
Parameters.Add("message", Message);
|
||||||
{"user", Recipient},
|
|
||||||
{"message", Message}
|
|
||||||
};
|
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -22,19 +22,13 @@ public GetRecentScrobblesCommand(IAuth auth, string username, DateTime from) : b
|
|||||||
From = from;
|
From = from;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("user", Username);
|
||||||
{
|
Parameters.Add("from", From.ToUnixTimestamp().ToString());
|
||||||
{"user", Uri.EscapeDataString(Username)},
|
|
||||||
{"from", From.ToUnixTimestamp().ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.AddPagingParameters(parameters);
|
AddPagingParameters();
|
||||||
base.DisableCaching(parameters);
|
DisableCaching();
|
||||||
|
|
||||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(uristring, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -21,16 +21,11 @@ public GetRecentStationsCommand(IAuth auth, string username) : base(auth)
|
|||||||
Username = username;
|
Username = username;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Station>> ExecuteAsync()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("user", Username);
|
||||||
{
|
|
||||||
{"user", Username}
|
|
||||||
};
|
|
||||||
|
|
||||||
AddPagingParameters(parameters);
|
AddPagingParameters();
|
||||||
|
|
||||||
return await ExecuteInternal(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Station>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<Station>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -23,19 +23,13 @@ public GetTopAlbumsCommand(IAuth auth, string username, LastStatsTimeSpan span)
|
|||||||
TimeSpan = span;
|
TimeSpan = span;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("username", Username);
|
||||||
{
|
Parameters.Add("period", TimeSpan.GetApiName());
|
||||||
{"username", Uri.EscapeDataString(Username)},
|
|
||||||
{"period", TimeSpan.GetApiName()}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.AddPagingParameters(parameters);
|
AddPagingParameters();
|
||||||
base.DisableCaching(parameters);
|
DisableCaching();
|
||||||
|
|
||||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(uristring, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -20,19 +20,13 @@ public GetUserInfoCommand(IAuth auth, string username) : base(auth)
|
|||||||
Username = username;
|
Username = username;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("user", Username);
|
||||||
{
|
|
||||||
{"user", Uri.EscapeDataString(Username)}
|
|
||||||
};
|
|
||||||
|
|
||||||
base.DisableCaching(parameters);
|
DisableCaching();
|
||||||
|
|
||||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(uristring, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<LastResponse<User>> HandleResponse(HttpResponseMessage response)
|
public async override Task<LastResponse<User>> HandleResponse(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
string json = await response.Content.ReadAsStringAsync();
|
string json = await response.Content.ReadAsStringAsync();
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
@ -20,18 +18,12 @@ public GetUserShoutsCommand(IAuth auth, string username) : base(auth)
|
|||||||
Username = username;
|
Username = username;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Uri BuildRequestUrl()
|
public override void SetParameters()
|
||||||
{
|
{
|
||||||
var parameters = new Dictionary<string, string>
|
Parameters.Add("user", Username);
|
||||||
{
|
|
||||||
{"user", Uri.EscapeDataString(Username)},
|
|
||||||
};
|
|
||||||
|
|
||||||
base.AddPagingParameters(parameters);
|
AddPagingParameters();
|
||||||
base.DisableCaching(parameters);
|
DisableCaching();
|
||||||
|
|
||||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
|
||||||
return new Uri(uristring, UriKind.Absolute);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
<Compile Include="Api\Commands\ArtistApi\GetArtistInfoCommand.cs" />
|
<Compile Include="Api\Commands\ArtistApi\GetArtistInfoCommand.cs" />
|
||||||
<Compile Include="Api\Commands\ArtistApi\GetArtistShoutsCommand.cs" />
|
<Compile Include="Api\Commands\ArtistApi\GetArtistShoutsCommand.cs" />
|
||||||
<Compile Include="Api\Commands\GetAsyncCommandBase.cs" />
|
<Compile Include="Api\Commands\GetAsyncCommandBase.cs" />
|
||||||
|
<Compile Include="Api\Commands\LastAsyncCommandBase.cs" />
|
||||||
<Compile Include="Api\Commands\PostAsyncCommandBase.cs" />
|
<Compile Include="Api\Commands\PostAsyncCommandBase.cs" />
|
||||||
<Compile Include="Api\Commands\TrackApi\AddShoutCommand.cs" />
|
<Compile Include="Api\Commands\TrackApi\AddShoutCommand.cs" />
|
||||||
<Compile Include="Api\Commands\TrackApi\GetTrackInfoCommand.cs" />
|
<Compile Include="Api\Commands\TrackApi\GetTrackInfoCommand.cs" />
|
||||||
|
@ -61,6 +61,7 @@ public static FormUrlEncodedContent CreatePostBody(string method, string apikey,
|
|||||||
{"format", ResponseFormat}
|
{"format", ResponseFormat}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO ordering
|
||||||
var requestParameters = init.Concat(parameters);
|
var requestParameters = init.Concat(parameters);
|
||||||
|
|
||||||
return new FormUrlEncodedContent(requestParameters);
|
return new FormUrlEncodedContent(requestParameters);
|
||||||
|
Loading…
Reference in New Issue
Block a user