Merge pull request #26 from tparnell8/asyncThings

async things, and other minor changes
This commit is contained in:
Tommy Parnell
2015-04-23 22:45:43 -04:00
6 changed files with 94 additions and 19 deletions

View File

@@ -6,6 +6,7 @@ using RestSharp;
using Untappd.Net.Client;
using Untappd.Net.Request;
using Untappd.Net.Responses.BeerInfo;
using System.Threading.Tasks;
namespace Untappd.Net.UnitTests.Request
{
@@ -30,12 +31,29 @@ namespace Untappd.Net.UnitTests.Request
client.Setup(a => a.Execute(It.IsAny<IRestRequest>())).Callback(() =>
{
}).Returns(response.Object);
client.Setup(a => a.ExecuteTaskAsync(It.IsAny<IRestRequest>())).Callback(() =>
{
}).Returns(Task.Run(()=> response.Object));
var repository = new Repository(client.Object, request.Object);
repository.Get<BeerInfo>(mockCreds.Object, "awesome", bodyParam);
request.Verify(a => a.AddParameter("client_id", mockCreds.Object.ClientId));
request.Verify(a => a.AddParameter("client_secret", mockCreds.Object.ClientSecret));
request.Verify(a => a.AddParameter("key", "value"));
repository.GetAsync<BeerInfo>(mockCreds.Object, "awesome", bodyParam).Wait();
request.Verify(a => a.AddParameter("client_id", mockCreds.Object.ClientId));
request.Verify(a => a.AddParameter("client_secret", mockCreds.Object.ClientSecret));
request.Verify(a => a.AddParameter("key", "value"));
var mockAuthCreds = new Mock<IAuthenticatedUntappdCredentials>();
mockAuthCreds.Setup(a => a.AccessToken).Returns("accessToken");
repository.Get<BeerInfo>(mockAuthCreds.Object, "awesome", bodyParam);
request.Verify(a => a.AddParameter("key", "value"));
request.Verify(a => a.AddParameter("access_token", "accessToken"));
repository.GetAsync<BeerInfo>(mockAuthCreds.Object, "awesome", bodyParam).Wait();
request.Verify(a => a.AddParameter("key", "value"));
request.Verify(a => a.AddParameter("access_token", "accessToken"));
}
[Test]

View File

@@ -16,6 +16,7 @@ using Untappd.Net.Responses.UserInfo;
using Untappd.Net.Responses.VenueInfo;
using UserDistinctBeers = Untappd.Net.Responses.UserDistinctBeer;
using UserWishList = Untappd.Net.Responses.UserWishlist;
using System;
namespace Untappd.Net.UnitTests
{
@@ -125,5 +126,18 @@ namespace Untappd.Net.UnitTests
var json = File.ReadAllText(string.Format(ResponsePath, "UserActivityFeed.json"));
var jsonresult = JsonConvert.DeserializeObject<UserActivityFeed>(json);
}
[Test]
[ExpectedException(typeof(NotImplementedException))]
public void testNotImplementedException()
{
new SingleObjectArrayConverter<UserActivityFeed>().WriteJson(null, null, null);
}
[Test]
public void testTypeValid()
{
Assert.IsTrue(new SingleObjectArrayConverter<UserActivityFeed>().CanConvert(typeof(UserActivityFeed)));
}
}
}

View File

@@ -27,5 +27,15 @@ namespace Untappd.Net.UnitTests.Responses
&& myType.GetInterface("IRequest") != null).Select(type => (IRequest) Activator.CreateInstance(type)).ToList();
objects.ForEach(a=>Assert.IsNotNullOrEmpty(a.EndPoint("t")));
}
[Test]
public void RunAllEndpointsWithEmptyString()
{
var objects = Assembly.GetAssembly(typeof (IRequest)).GetTypes().Where(myType =>
myType.IsClass
&& !myType.IsAbstract
&& myType.GetInterface("IRequest") != null).Select(type => (IRequest) Activator.CreateInstance(type)).ToList();
objects.ForEach(a=>Assert.IsNotNullOrEmpty(a.EndPoint(string.Empty)));
}
}
}

View File

@@ -1,5 +1,6 @@
namespace Untappd.Net.Exception
{
[System.Serializable]
public class EndpointConfigurationException : BaseUntappdException
{
/// <summary>

View File

@@ -2,6 +2,8 @@
using Newtonsoft.Json;
using RestSharp;
using Untappd.Net.Client;
using System.Threading.Tasks;
using System.Threading;
namespace Untappd.Net.Request
{
@@ -22,10 +24,10 @@ namespace Untappd.Net.Request
Request = request;
}
internal void ConfigureGetRequest(string endPoint, IDictionary<string, string> bodyParameters = null)
internal void ConfigureGetRequest(string endPoint, Method webMethod = Method.GET, IDictionary<string, string> bodyParameters = null)
{
Request.Resource = endPoint;
Request.Method = Method.GET;
Request.Method = webMethod;
if (Request.Parameters != null) Request.Parameters.Clear();
if (bodyParameters == null) return;
@@ -48,14 +50,30 @@ namespace Untappd.Net.Request
where TResult : IUnAuthenticatedRequest,new()
{
var result = new TResult();
ConfigureGetRequest(result.EndPoint(urlParameter), bodyParameters);
ConfigureGetRequest(result.EndPoint(urlParameter), Method.GET, bodyParameters);
Request.AddParameter("client_id", credentials.ClientId);
Request.AddParameter("client_secret", credentials.ClientSecret);
return DoRestRequest<TResult>();
}
/// <summary>
/// Get the things! Async!
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="credentials"></param>
/// <param name="urlParameter"></param>
/// <param name="bodyParameters"></param>
/// <returns></returns>
public Task<TResult> GetAsync<TResult>(IUnAuthenticatedUntappdCredentials credentials, string urlParameter, IDictionary<string, string> bodyParameters = null)
where TResult : IUnAuthenticatedRequest, new()
{
var result = new TResult();
ConfigureGetRequest(result.EndPoint(urlParameter), Method.GET, bodyParameters);
Request.AddParameter("client_id", credentials.ClientId);
Request.AddParameter("client_secret", credentials.ClientSecret);
return DoRestRequestAsync<TResult>();
}
/// <summary>
/// Get the things! authenticated!
/// </summary>
@@ -68,26 +86,38 @@ namespace Untappd.Net.Request
where TResult : IAuthenticatedRequest, new()
{
var result = new TResult();
ConfigureGetRequest(result.EndPoint(urlParameter), bodyParameters);
ConfigureGetRequest(result.EndPoint(urlParameter), Method.GET, bodyParameters);
Request.AddParameter("access_token", credentials.AccessToken);
return DoRestRequest<TResult>();
}
/// <summary>
/// Get the things Authenticated! Async!!
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="credentials"></param>
/// <param name="urlParameter"></param>
/// <param name="bodyParameters"></param>
/// <returns></returns>
public Task<TResult> GetAsync<TResult>(IAuthenticatedUntappdCredentials credentials, string urlParameter = "", IDictionary<string, string> bodyParameters = null)
where TResult : IAuthenticatedRequest, new()
{
var result = new TResult();
ConfigureGetRequest(result.EndPoint(urlParameter), Method.GET, bodyParameters);
Request.AddParameter("access_token", credentials.AccessToken);
return DoRestRequestAsync<TResult>();
}
private TResult DoRestRequest<TResult>()
{
var client = new RestClient(Constants.BaseRequestString);
var resp = client.Execute(Request);
return JsonConvert.DeserializeObject<TResult>(resp.Content);
var response = Client.Execute(this.Request);
return JsonConvert.DeserializeObject<TResult>(response.Content);
}
//private async Task<TResult> DoRestRequestAsync<TResult>(IRestRequest request)
//{
// var client = new RestClient(Constants.BaseRequestString);
// var cancellationTokenSource = new CancellationTokenSource();
// var resp = await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);
// return JsonConvert.DeserializeObject<TResult>(resp.Content);
//}
private async Task<TResult> DoRestRequestAsync<TResult>()
{
var response = await Client.ExecuteTaskAsync(Request);
return JsonConvert.DeserializeObject<TResult>(response.Content);
}
}
}

View File

@@ -1,5 +1,6 @@
using System;
using Newtonsoft.Json;
using Untappd.Net.Request;
namespace Untappd.Net
{
@@ -15,11 +16,12 @@ namespace Untappd.Net
public override bool CanConvert(Type objectType)
{
return true;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var retval = new Object();
var retval = new object();
switch (reader.TokenType)
{