IF.Lastfm/IF.Lastfm.Core/Api/Commands/GetAsyncCommandBase.cs

39 lines
1.1 KiB
C#
Raw Normal View History

2013-06-23 20:10:57 +01:00
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
namespace IF.Lastfm.Core.Api.Commands
{
2013-07-23 22:46:29 +01:00
internal abstract class GetAsyncCommandBase<T> : IAsyncCommand<T>
2013-06-23 20:10:57 +01:00
{
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)
{
Auth = auth;
}
2013-07-23 22:46:29 +01:00
public abstract Uri BuildRequestUrl();
2013-06-23 20:10:57 +01:00
2013-07-23 22:46:29 +01:00
public async Task<T> ExecuteAsync()
2013-06-23 20:10:57 +01:00
{
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(Url);
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());
}
}
}