diff --git a/appveyor.yml b/appveyor.yml index f132c85..488e610 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,11 @@ version: 0.2.{build} configuration: Release +notifications: +- provider: Webhook + url: https://webhooks.gitter.im/e/cff271c9681834896234 + on_build_success: true + on_build_failure: true + on_build_status_changed: true assembly_info: patch: true file: '**\AssemblyInfo.*' diff --git a/src/Untappd.Net.UnitTests/Request/TestRepository.cs b/src/Untappd.Net.UnitTests/Request/TestRepository.cs index b405557..9a5b815 100644 --- a/src/Untappd.Net.UnitTests/Request/TestRepository.cs +++ b/src/Untappd.Net.UnitTests/Request/TestRepository.cs @@ -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())).Callback(() => { }).Returns(response.Object); + client.Setup(a => a.ExecuteTaskAsync(It.IsAny())).Callback(() => + { + }).Returns(Task.Run(()=> response.Object)); var repository = new Repository(client.Object, request.Object); repository.Get(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(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(); + mockAuthCreds.Setup(a => a.AccessToken).Returns("accessToken"); + + repository.Get(mockAuthCreds.Object, "awesome", bodyParam); + request.Verify(a => a.AddParameter("key", "value")); + request.Verify(a => a.AddParameter("access_token", "accessToken")); + repository.GetAsync(mockAuthCreds.Object, "awesome", bodyParam).Wait(); + request.Verify(a => a.AddParameter("key", "value")); + request.Verify(a => a.AddParameter("access_token", "accessToken")); } [Test] diff --git a/src/Untappd.Net.UnitTests/Responses/TestDeserializer.cs b/src/Untappd.Net.UnitTests/Responses/TestDeserializer.cs index 06fc9c4..bd9da1e 100644 --- a/src/Untappd.Net.UnitTests/Responses/TestDeserializer.cs +++ b/src/Untappd.Net.UnitTests/Responses/TestDeserializer.cs @@ -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(json); } + + [Test] + [ExpectedException(typeof(NotImplementedException))] + public void testNotImplementedException() + { + new SingleObjectArrayConverter().WriteJson(null, null, null); + } + + [Test] + public void testTypeValid() + { + Assert.IsTrue(new SingleObjectArrayConverter().CanConvert(typeof(UserActivityFeed))); + } } } diff --git a/src/Untappd.Net.UnitTests/Responses/TestResponseEndpoints.cs b/src/Untappd.Net.UnitTests/Responses/TestResponseEndpoints.cs index 959d8bb..deba7af 100644 --- a/src/Untappd.Net.UnitTests/Responses/TestResponseEndpoints.cs +++ b/src/Untappd.Net.UnitTests/Responses/TestResponseEndpoints.cs @@ -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))); + } } } diff --git a/src/Untappd.Net/Exception/EndpointConfigurationException.cs b/src/Untappd.Net/Exception/EndpointConfigurationException.cs index 30f8324..2d9786d 100644 --- a/src/Untappd.Net/Exception/EndpointConfigurationException.cs +++ b/src/Untappd.Net/Exception/EndpointConfigurationException.cs @@ -1,5 +1,6 @@ namespace Untappd.Net.Exception { + [System.Serializable] public class EndpointConfigurationException : BaseUntappdException { /// diff --git a/src/Untappd.Net/Request/Repository.cs b/src/Untappd.Net/Request/Repository.cs index 946cc2f..d398ff8 100644 --- a/src/Untappd.Net/Request/Repository.cs +++ b/src/Untappd.Net/Request/Repository.cs @@ -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 bodyParameters = null) + internal void ConfigureGetRequest(string endPoint, Method webMethod = Method.GET, IDictionary 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(); } + /// + /// Get the things! Async! + /// + /// + /// + /// + /// + /// + public Task GetAsync(IUnAuthenticatedUntappdCredentials credentials, string urlParameter, IDictionary 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(); + } + /// /// Get the things! authenticated! /// @@ -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(); } + /// + /// Get the things Authenticated! Async!! + /// + /// + /// + /// + /// + /// + public Task GetAsync(IAuthenticatedUntappdCredentials credentials, string urlParameter = "", IDictionary 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(); + } + private TResult DoRestRequest() { - var client = new RestClient(Constants.BaseRequestString); - var resp = client.Execute(Request); - return JsonConvert.DeserializeObject(resp.Content); + var response = Client.Execute(this.Request); + return JsonConvert.DeserializeObject(response.Content); } - //private async Task DoRestRequestAsync(IRestRequest request) - //{ - // var client = new RestClient(Constants.BaseRequestString); - // var cancellationTokenSource = new CancellationTokenSource(); - // var resp = await client.ExecuteTaskAsync(request, cancellationTokenSource.Token); - // return JsonConvert.DeserializeObject(resp.Content); - //} + private async Task DoRestRequestAsync() + { + var response = await Client.ExecuteTaskAsync(Request); + return JsonConvert.DeserializeObject(response.Content); + } } } diff --git a/src/Untappd.Net/SingleObjectArrayConverter.cs b/src/Untappd.Net/SingleObjectArrayConverter.cs index 75d6c40..32664d7 100644 --- a/src/Untappd.Net/SingleObjectArrayConverter.cs +++ b/src/Untappd.Net/SingleObjectArrayConverter.cs @@ -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) {