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;
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"album", Album},
|
||||
{"artist", Artist},
|
||||
{"message", Message}
|
||||
};
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
Parameters.Add("album", Album);
|
||||
Parameters.Add("artist", Artist);
|
||||
Parameters.Add("message", Message);
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -23,19 +23,13 @@ public GetAlbumInfoCommand(IAuth auth, string artistname, string albumname) : ba
|
||||
AlbumName = albumname;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
||||
{"album", Uri.EscapeDataString(AlbumName)},
|
||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||
};
|
||||
Parameters.Add("artist", ArtistName);
|
||||
Parameters.Add("album", AlbumName);
|
||||
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(apiUrl, UriKind.Absolute);
|
||||
base.DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<LastResponse<Album>> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -25,22 +25,16 @@ public GetAlbumShoutsCommand(IAuth auth, string albumname, string artistname)
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"album", Uri.EscapeDataString(AlbumName)},
|
||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||
};
|
||||
Parameters.Add("album", AlbumName);
|
||||
Parameters.Add("artist", ArtistName);
|
||||
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||
|
||||
base.AddPagingParameters(parameters);
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(apiUrl, UriKind.Absolute);
|
||||
base.AddPagingParameters();
|
||||
base.DisableCaching();
|
||||
}
|
||||
|
||||
|
||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||
{
|
||||
string json = await response.Content.ReadAsStringAsync();
|
||||
|
@ -17,15 +17,10 @@ public AddShoutCommand(IAuth auth, string artist, string message) : base(auth)
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"artist", Artist},
|
||||
{"message", Message}
|
||||
};
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
Parameters.Add("artist", Artist);
|
||||
Parameters.Add("message", Message);
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -24,18 +24,15 @@ public GetArtistInfoCommand(IAuth auth, string artistname)
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
/// <summary>
|
||||
/// TODO Bio language
|
||||
/// </summary>
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||
};
|
||||
Parameters.Add("artist", ArtistName);
|
||||
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(apiUrl, UriKind.Absolute);
|
||||
base.DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<LastResponse<Artist>> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
@ -11,7 +9,7 @@
|
||||
|
||||
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 bool Autocorrect { get; set; }
|
||||
@ -23,22 +21,16 @@ public GetArtistShoutsCommand(IAuth auth, string artistname)
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||
};
|
||||
Parameters.Add("artist", ArtistName);
|
||||
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||
|
||||
base.AddPagingParameters(parameters);
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(apiUrl, UriKind.Absolute);
|
||||
base.AddPagingParameters();
|
||||
base.DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||
public override async Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||
{
|
||||
string json = await response.Content.ReadAsStringAsync();
|
||||
|
||||
@ -54,7 +46,5 @@ public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessa
|
||||
return PageResponse<Shout>.CreateErrorResponse(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -1,29 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands
|
||||
{
|
||||
internal abstract class GetAsyncCommandBase<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; }
|
||||
|
||||
public abstract class GetAsyncCommandBase<T> : LastAsyncCommandBase<T>
|
||||
{
|
||||
protected GetAsyncCommandBase(IAuth auth)
|
||||
{
|
||||
Auth = auth;
|
||||
}
|
||||
|
||||
public abstract Uri BuildRequestUrl();
|
||||
|
||||
public async Task<T> ExecuteAsync()
|
||||
public async override Task<T> ExecuteAsync()
|
||||
{
|
||||
SetParameters();
|
||||
|
||||
EscapeParameters();
|
||||
|
||||
Url = BuildRequestUrl();
|
||||
|
||||
var httpClient = new HttpClient();
|
||||
@ -31,22 +26,18 @@ public async Task<T> ExecuteAsync()
|
||||
return await HandleResponse(response);
|
||||
}
|
||||
|
||||
public abstract Task<T> HandleResponse(HttpResponseMessage response);
|
||||
|
||||
protected void AddPagingParameters(Dictionary<string, string> parameters)
|
||||
protected override Uri BuildRequestUrl()
|
||||
{
|
||||
parameters.Add("page", Page.ToString());
|
||||
parameters.Add("limit", Count.ToString());
|
||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, Parameters);
|
||||
return new Uri(apiUrl, UriKind.Absolute);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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)
|
||||
private void EscapeParameters()
|
||||
{
|
||||
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.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands
|
||||
{
|
||||
internal interface IAsyncCommand<T>
|
||||
{
|
||||
Uri BuildRequestUrl();
|
||||
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
|
||||
{
|
||||
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)
|
||||
{
|
||||
Auth = auth;
|
||||
}
|
||||
|
||||
public Uri BuildRequestUrl()
|
||||
protected override Uri BuildRequestUrl()
|
||||
{
|
||||
return new Uri(LastFm.ApiRoot, UriKind.Absolute);
|
||||
}
|
||||
|
||||
public abstract Task<T> ExecuteAsync();
|
||||
|
||||
protected async Task<T> ExecuteInternal(Dictionary<string, string> parameters)
|
||||
public override async Task<T> ExecuteAsync()
|
||||
{
|
||||
SetParameters();
|
||||
|
||||
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,
|
||||
Auth.ApiKey,
|
||||
apisig,
|
||||
parameters);
|
||||
Parameters);
|
||||
|
||||
var httpClient = new HttpClient();
|
||||
var response = await httpClient.PostAsync(Url, postContent);
|
||||
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 IF.Lastfm.Core.Api.Helpers;
|
||||
|
||||
@ -19,16 +18,11 @@ public AddShoutCommand(IAuth auth, string track, string artist, string message)
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"track", Track},
|
||||
{"artist", Artist},
|
||||
{"message", Message}
|
||||
};
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
Parameters.Add("track", Track);
|
||||
Parameters.Add("artist", Artist);
|
||||
Parameters.Add("message", Message);
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
using IF.Lastfm.Core.Api.Helpers;
|
||||
@ -27,24 +24,16 @@ public GetTrackInfoCommand(IAuth auth, string trackname, string artistname)
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"track", Uri.EscapeDataString(TrackName)},
|
||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||
};
|
||||
Parameters.Add("track", TrackName);
|
||||
Parameters.Add("artist", ArtistName);
|
||||
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||
|
||||
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)
|
||||
|
@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
using IF.Lastfm.Core.Api.Helpers;
|
||||
@ -25,20 +22,14 @@ public GetTrackShoutsCommand(IAuth auth, string trackname, string artistname) :
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"track", Uri.EscapeDataString(TrackName)},
|
||||
{"artist", Uri.EscapeDataString(ArtistName)},
|
||||
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||
};
|
||||
Parameters.Add("track", TrackName);
|
||||
Parameters.Add("artist", ArtistName);
|
||||
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
|
||||
|
||||
base.AddPagingParameters(parameters);
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(apiUrl, UriKind.Absolute);
|
||||
AddPagingParameters();
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<Shout>> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -20,15 +20,10 @@ public LoveTrackCommand(IAuth auth, string trackname, string artistname)
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"track", TrackName},
|
||||
{"artist", ArtistName}
|
||||
};
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
Parameters.Add("track", TrackName);
|
||||
Parameters.Add("artist", ArtistName);
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -20,15 +20,10 @@ public UnloveTrackCommand(IAuth auth, string trackname, string artistname)
|
||||
ArtistName = artistname;
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"track", TrackName},
|
||||
{"artist", ArtistName}
|
||||
};
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
Parameters.Add("track", TrackName);
|
||||
Parameters.Add("artist", ArtistName);
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
using IF.Lastfm.Core.Api.Helpers;
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands.UserApi
|
||||
@ -19,15 +16,10 @@ public AddShoutCommand(IAuth auth, string recipient, string message) : base(auth
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"user", Recipient},
|
||||
{"message", Message}
|
||||
};
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
Parameters.Add("user", Recipient);
|
||||
Parameters.Add("message", Message);
|
||||
}
|
||||
|
||||
public async override Task<LastResponse> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -22,19 +22,13 @@ public GetRecentScrobblesCommand(IAuth auth, string username, DateTime from) : b
|
||||
From = from;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"user", Uri.EscapeDataString(Username)},
|
||||
{"from", From.ToUnixTimestamp().ToString()}
|
||||
};
|
||||
Parameters.Add("user", Username);
|
||||
Parameters.Add("from", From.ToUnixTimestamp().ToString());
|
||||
|
||||
base.AddPagingParameters(parameters);
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(uristring, UriKind.Absolute);
|
||||
AddPagingParameters();
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -21,16 +21,11 @@ public GetRecentStationsCommand(IAuth auth, string username) : base(auth)
|
||||
Username = username;
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<Station>> ExecuteAsync()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"user", Username}
|
||||
};
|
||||
Parameters.Add("user", Username);
|
||||
|
||||
AddPagingParameters(parameters);
|
||||
|
||||
return await ExecuteInternal(parameters);
|
||||
AddPagingParameters();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<Station>> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -23,19 +23,13 @@ public GetTopAlbumsCommand(IAuth auth, string username, LastStatsTimeSpan span)
|
||||
TimeSpan = span;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"username", Uri.EscapeDataString(Username)},
|
||||
{"period", TimeSpan.GetApiName()}
|
||||
};
|
||||
Parameters.Add("username", Username);
|
||||
Parameters.Add("period", TimeSpan.GetApiName());
|
||||
|
||||
base.AddPagingParameters(parameters);
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(uristring, UriKind.Absolute);
|
||||
AddPagingParameters();
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessage response)
|
||||
|
@ -20,19 +20,13 @@ public GetUserInfoCommand(IAuth auth, string username) : base(auth)
|
||||
Username = username;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"user", Uri.EscapeDataString(Username)}
|
||||
};
|
||||
Parameters.Add("user", Username);
|
||||
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(uristring, UriKind.Absolute);
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
|
||||
public async override Task<LastResponse<User>> HandleResponse(HttpResponseMessage response)
|
||||
{
|
||||
string json = await response.Content.ReadAsStringAsync();
|
||||
|
@ -1,5 +1,3 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
@ -20,18 +18,12 @@ public GetUserShoutsCommand(IAuth auth, string username) : base(auth)
|
||||
Username = username;
|
||||
}
|
||||
|
||||
public override Uri BuildRequestUrl()
|
||||
public override void SetParameters()
|
||||
{
|
||||
var parameters = new Dictionary<string, string>
|
||||
{
|
||||
{"user", Uri.EscapeDataString(Username)},
|
||||
};
|
||||
Parameters.Add("user", Username);
|
||||
|
||||
base.AddPagingParameters(parameters);
|
||||
base.DisableCaching(parameters);
|
||||
|
||||
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||
return new Uri(uristring, UriKind.Absolute);
|
||||
AddPagingParameters();
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
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\GetArtistShoutsCommand.cs" />
|
||||
<Compile Include="Api\Commands\GetAsyncCommandBase.cs" />
|
||||
<Compile Include="Api\Commands\LastAsyncCommandBase.cs" />
|
||||
<Compile Include="Api\Commands\PostAsyncCommandBase.cs" />
|
||||
<Compile Include="Api\Commands\TrackApi\AddShoutCommand.cs" />
|
||||
<Compile Include="Api\Commands\TrackApi\GetTrackInfoCommand.cs" />
|
||||
|
@ -61,6 +61,7 @@ public static FormUrlEncodedContent CreatePostBody(string method, string apikey,
|
||||
{"format", ResponseFormat}
|
||||
};
|
||||
|
||||
// TODO ordering
|
||||
var requestParameters = init.Concat(parameters);
|
||||
|
||||
return new FormUrlEncodedContent(requestParameters);
|
||||
|
Loading…
Reference in New Issue
Block a user