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.Client;
using Untappd.Net.Request; using Untappd.Net.Request;
using Untappd.Net.Responses.BeerInfo; using Untappd.Net.Responses.BeerInfo;
using System.Threading.Tasks;
namespace Untappd.Net.UnitTests.Request namespace Untappd.Net.UnitTests.Request
{ {
@@ -30,12 +31,29 @@ namespace Untappd.Net.UnitTests.Request
client.Setup(a => a.Execute(It.IsAny<IRestRequest>())).Callback(() => client.Setup(a => a.Execute(It.IsAny<IRestRequest>())).Callback(() =>
{ {
}).Returns(response.Object); }).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); var repository = new Repository(client.Object, request.Object);
repository.Get<BeerInfo>(mockCreds.Object, "awesome", bodyParam); repository.Get<BeerInfo>(mockCreds.Object, "awesome", bodyParam);
request.Verify(a => a.AddParameter("client_id", mockCreds.Object.ClientId)); 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("client_secret", mockCreds.Object.ClientSecret));
request.Verify(a => a.AddParameter("key", "value")); 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] [Test]

View File

@@ -16,6 +16,7 @@ using Untappd.Net.Responses.UserInfo;
using Untappd.Net.Responses.VenueInfo; using Untappd.Net.Responses.VenueInfo;
using UserDistinctBeers = Untappd.Net.Responses.UserDistinctBeer; using UserDistinctBeers = Untappd.Net.Responses.UserDistinctBeer;
using UserWishList = Untappd.Net.Responses.UserWishlist; using UserWishList = Untappd.Net.Responses.UserWishlist;
using System;
namespace Untappd.Net.UnitTests namespace Untappd.Net.UnitTests
{ {
@@ -125,5 +126,18 @@ namespace Untappd.Net.UnitTests
var json = File.ReadAllText(string.Format(ResponsePath, "UserActivityFeed.json")); var json = File.ReadAllText(string.Format(ResponsePath, "UserActivityFeed.json"));
var jsonresult = JsonConvert.DeserializeObject<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(); && myType.GetInterface("IRequest") != null).Select(type => (IRequest) Activator.CreateInstance(type)).ToList();
objects.ForEach(a=>Assert.IsNotNullOrEmpty(a.EndPoint("t"))); 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 namespace Untappd.Net.Exception
{ {
[System.Serializable]
public class EndpointConfigurationException : BaseUntappdException public class EndpointConfigurationException : BaseUntappdException
{ {
/// <summary> /// <summary>

View File

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

View File

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