@@ -1,4 +1,4 @@
|
||||
version: 0.2.{build}
|
||||
version: 0.3.{build}
|
||||
configuration: Release
|
||||
notifications:
|
||||
- provider: Webhook
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
@@ -6,7 +7,6 @@ using RestSharp;
|
||||
using Untappd.Net.Client;
|
||||
using Untappd.Net.Request;
|
||||
using Untappd.Net.Responses.BeerInfo;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Untappd.Net.UnitTests.Request
|
||||
{
|
||||
@@ -19,7 +19,7 @@ namespace Untappd.Net.UnitTests.Request
|
||||
var mockCreds = new Mock<IUnAuthenticatedUntappdCredentials>();
|
||||
mockCreds.Setup(a => a.ClientId).Returns("id");
|
||||
mockCreds.Setup(a => a.ClientSecret).Returns("secret");
|
||||
var bodyParam = new Dictionary<string, string> {{"key", "value"}};
|
||||
var bodyParam = new Dictionary<string, object> {{"key", "value"}};
|
||||
var client = new Mock<IRestClient>();
|
||||
var request = new Mock<IRestRequest>();
|
||||
request.Setup(a => a.AddParameter(It.IsAny<string>(), It.IsAny<string>()));
|
||||
@@ -67,9 +67,9 @@ namespace Untappd.Net.UnitTests.Request
|
||||
public void ConfirmConfigureGetRequestClearsParams()
|
||||
{
|
||||
var constructorTest = new Repository();
|
||||
constructorTest.Request.Parameters.Add(new Parameter(){Name = "param"});
|
||||
constructorTest.Request.Parameters.Add(new Parameter {Name = "param"});
|
||||
Assert.IsTrue(constructorTest.Request.Parameters.Count > 0);
|
||||
constructorTest.ConfigureGetRequest("endpoint");
|
||||
constructorTest.ConfigureRequest("endpoint");
|
||||
Assert.IsTrue(constructorTest.Request.Parameters.Count == 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using NUnit.Framework;
|
||||
using Untappd.Net.Responses.Actions;
|
||||
|
||||
namespace Untappd.Net.UnitTests.Responses.Actions
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestCheckInAction
|
||||
{
|
||||
[Test]
|
||||
public void TestAccessors()
|
||||
{
|
||||
Assert.Throws<ArgumentNullException>(() => { new CheckIn(string.Empty, "timezone", 1); });
|
||||
Assert.Throws<ArgumentNullException>(() => { new CheckIn("1", string.Empty, 1); });
|
||||
var checkin = new CheckIn("offset", "timezone", 1);
|
||||
Assert.IsNotNullOrEmpty(checkin.RequestMethod.ToString());
|
||||
Assert.Throws<ArgumentOutOfRangeException>(() => { checkin.Rating = -1; });
|
||||
Assert.Throws<ArgumentOutOfRangeException>(() => { checkin.Rating = 6; });
|
||||
Assert.Throws<ArgumentOutOfRangeException>(() => { checkin.Shout = new String('d', 141); });
|
||||
checkin.Rating = 3;
|
||||
Assert.AreEqual(3, checkin.Rating);
|
||||
var t = "tst";
|
||||
checkin.Shout = t;
|
||||
Assert.IsNotNullOrEmpty(checkin.EndPoint);
|
||||
Assert.AreEqual(checkin.Shout, t);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDictionaryGeneration()
|
||||
{
|
||||
var checkin = new CheckIn("offset", "timezone", 1);
|
||||
Assert.AreEqual(checkin.BodyParameters["gmt_offset"], "offset");
|
||||
Assert.AreEqual(checkin.BodyParameters["timezone"], "timezone");
|
||||
Assert.AreEqual(checkin.BodyParameters["bid"], 1);
|
||||
|
||||
Assert.IsFalse(checkin.BodyParameters.ContainsKey("geolat"));
|
||||
checkin.Geolat = 4;
|
||||
Assert.IsTrue(checkin.BodyParameters.ContainsKey("geolat"));
|
||||
Assert.AreEqual(checkin.BodyParameters["geolat"], 4);
|
||||
|
||||
Assert.IsFalse(checkin.BodyParameters.ContainsKey("geolng"));
|
||||
checkin.Geolng = 4;
|
||||
Assert.IsTrue(checkin.BodyParameters.ContainsKey("geolng"));
|
||||
Assert.AreEqual(checkin.BodyParameters["geolng"], 4);
|
||||
|
||||
Assert.IsFalse(checkin.BodyParameters.ContainsKey("shout"));
|
||||
checkin.Shout = "shout";
|
||||
Assert.IsTrue(checkin.BodyParameters.ContainsKey("shout"));
|
||||
Assert.AreEqual(checkin.BodyParameters["shout"], "shout");
|
||||
|
||||
Assert.IsFalse(checkin.BodyParameters.ContainsKey("rating"));
|
||||
checkin.Rating = 2;
|
||||
Assert.IsTrue(checkin.BodyParameters.ContainsKey("rating"));
|
||||
Assert.AreEqual(checkin.BodyParameters["rating"], 2);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using NUnit.Framework;
|
||||
using Untappd.Net.Responses.Actions;
|
||||
|
||||
namespace Untappd.Net.UnitTests.Responses.Actions
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestSimpleActions
|
||||
{
|
||||
[Test]
|
||||
public void TestFriends()
|
||||
{
|
||||
var accept = new AcceptFriend("targetid");
|
||||
Assert.IsNotNullOrEmpty(accept.RequestMethod.ToString());
|
||||
Assert.IsTrue(accept.EndPoint.Contains("targetid"));
|
||||
Assert.IsNotNull(accept.BodyParameters);
|
||||
|
||||
var add = new AddFriend("targetid");
|
||||
Assert.IsNotNullOrEmpty(add.RequestMethod.ToString());
|
||||
Assert.IsTrue(add.EndPoint.Contains("targetid"));
|
||||
Assert.IsNotNull(add.BodyParameters);
|
||||
|
||||
var toast = new ToastUntoast("targetid");
|
||||
Assert.IsNotNullOrEmpty(toast.RequestMethod.ToString());
|
||||
Assert.IsTrue(toast.EndPoint.Contains("targetid"));
|
||||
Assert.IsNotNull(toast.BodyParameters);
|
||||
|
||||
var remove = new RemoveFriend("targetid");
|
||||
Assert.IsNotNullOrEmpty(remove.RequestMethod.ToString());
|
||||
Assert.IsTrue(remove.EndPoint.Contains("targetid"));
|
||||
Assert.IsNotNull(remove.BodyParameters);
|
||||
|
||||
var removeWish = new RemoveFromWishList(1);
|
||||
Assert.IsNotNullOrEmpty(removeWish.RequestMethod.ToString());
|
||||
Assert.IsNotNullOrEmpty(removeWish.EndPoint);
|
||||
Assert.AreEqual(removeWish.BodyParameters["bid"], 1);
|
||||
|
||||
|
||||
var addWish = new AddToWishList(1);
|
||||
Assert.IsNotNullOrEmpty(addWish.RequestMethod.ToString());
|
||||
Assert.IsNotNullOrEmpty(addWish.EndPoint);
|
||||
Assert.AreEqual(addWish.BodyParameters["bid"], 1);
|
||||
|
||||
var comment = new AddComment("checkin", "shout");
|
||||
Assert.IsNotNullOrEmpty(comment.RequestMethod.ToString());
|
||||
Assert.IsTrue(comment.EndPoint.Contains("checkin"));
|
||||
Assert.AreEqual(comment.BodyParameters["shout"], "shout");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestPendingFriends()
|
||||
{
|
||||
var pending = new PendingFriends();
|
||||
Assert.IsNotNullOrEmpty(pending.RequestMethod.ToString());
|
||||
Assert.IsNotNullOrEmpty(pending.EndPoint);
|
||||
Assert.IsNotNull(pending.BodyParameters);
|
||||
Assert.IsFalse(pending.BodyParameters.ContainsKey("limit"));
|
||||
pending.Limit = 1;
|
||||
Assert.IsTrue(pending.BodyParameters.ContainsKey("limit"));
|
||||
Assert.IsFalse(pending.BodyParameters.ContainsKey("offset"));
|
||||
pending.Offset = 1;
|
||||
Assert.IsTrue(pending.BodyParameters.ContainsKey("offset"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestArgumentNull()
|
||||
{
|
||||
Assert.Throws<ArgumentNullException>(() => { new AcceptFriend(string.Empty); });
|
||||
Assert.Throws<ArgumentNullException>(() => { new AddFriend(string.Empty); });
|
||||
Assert.Throws<ArgumentNullException>(() => { new RemoveFriend(string.Empty); });
|
||||
Assert.Throws<ArgumentNullException>(() => { new ToastUntoast(string.Empty); });
|
||||
Assert.Throws<ArgumentNullException>(() => { new AddComment(string.Empty, "ds"); });
|
||||
Assert.Throws<ArgumentNullException>(() => { new AddComment("ds", string.Empty); });
|
||||
Assert.Throws<ArgumentOutOfRangeException>(() => { new AddComment("ds", new String('d', 141)); });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
@@ -16,7 +17,6 @@ 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
|
||||
{
|
||||
@@ -31,7 +31,7 @@ namespace Untappd.Net.UnitTests
|
||||
{
|
||||
var credentials = new AuthenticatedUntappdCredentials("");
|
||||
|
||||
Dictionary<string, string> parameters = new Dictionary<string, string>();
|
||||
Dictionary<string, object> parameters = new Dictionary<string, object>();
|
||||
parameters.Add("q", "wild rose");
|
||||
|
||||
var repo = new Repository();
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using NUnit.Framework;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
|
||||
@@ -69,6 +69,8 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Responses\Actions\TestCheckInAction.cs" />
|
||||
<Compile Include="Responses\Actions\TestSimpleActions.cs" />
|
||||
<Compile Include="Responses\TestDeserializer.cs" />
|
||||
<Compile Include="Authentication\TestAuthenticationHelper.cs" />
|
||||
<Compile Include="Client\TestAuthenticatedUntappdCredentials.cs" />
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
namespace Untappd.Net.Exception
|
||||
using System;
|
||||
|
||||
namespace Untappd.Net.Exception
|
||||
{
|
||||
[System.Serializable]
|
||||
[Serializable]
|
||||
public class EndpointConfigurationException : BaseUntappdException
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
12
src/Untappd.Net/Request/IAction.cs
Normal file
12
src/Untappd.Net/Request/IAction.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
|
||||
namespace Untappd.Net.Request
|
||||
{
|
||||
public interface IAction
|
||||
{
|
||||
Method RequestMethod { get; }
|
||||
string EndPoint { get; }
|
||||
IDictionary<string, object> BodyParameters { get; }
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,11 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Client;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
|
||||
namespace Untappd.Net.Request
|
||||
{
|
||||
public class Repository
|
||||
public partial class Repository
|
||||
{
|
||||
internal IRestClient Client;
|
||||
internal IRestRequest Request;
|
||||
@@ -24,7 +22,7 @@ namespace Untappd.Net.Request
|
||||
Request = request;
|
||||
}
|
||||
|
||||
internal void ConfigureGetRequest(string endPoint, Method webMethod = Method.GET, IDictionary<string, string> bodyParameters = null)
|
||||
internal void ConfigureRequest(string endPoint, IDictionary<string, object> bodyParameters = null , Method webMethod = Method.GET)
|
||||
{
|
||||
Request.Resource = endPoint;
|
||||
Request.Method = webMethod;
|
||||
@@ -38,83 +36,13 @@ namespace Untappd.Net.Request
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the things!
|
||||
/// </summary>
|
||||
/// <typeparam name="TResult">What you want to request</typeparam>
|
||||
/// <param name="credentials">Pass in a credentials object</param>
|
||||
/// <param name="urlParameter">this is the main parameter for a request. ie v4/user/checkins/urlParameter. Consult the untappd docs, this can be null for a few requests</param>
|
||||
/// <param name="bodyParameters">Any additional params you wish to add to the request</param>
|
||||
/// <returns></returns>
|
||||
public TResult Get<TResult> (IUnAuthenticatedUntappdCredentials credentials, string urlParameter, IDictionary<string, string> bodyParameters = null)
|
||||
where TResult : IUnAuthenticatedRequest,new()
|
||||
private TResult ExecuteRequest<TResult>()
|
||||
{
|
||||
var result = new TResult();
|
||||
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>
|
||||
/// <typeparam name="TResult"></typeparam>
|
||||
/// <param name="credentials">Pass in a credentials object</param>
|
||||
/// <param name="urlParameter">this is the main parameter for a request. ie v4/user/checkins/urlParameter. Consult the untappd docs, this can be null for a few requests</param>
|
||||
/// <param name="bodyParameters">Any additional params you wish to add to the request</param>
|
||||
/// <returns></returns>
|
||||
public TResult Get<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 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 response = Client.Execute(this.Request);
|
||||
var response = Client.Execute(Request);
|
||||
return JsonConvert.DeserializeObject<TResult>(response.Content);
|
||||
}
|
||||
|
||||
private async Task<TResult> DoRestRequestAsync<TResult>()
|
||||
private async Task<TResult> ExecuteRequestAsync<TResult>()
|
||||
{
|
||||
var response = await Client.ExecuteTaskAsync(Request);
|
||||
return JsonConvert.DeserializeObject<TResult>(response.Content);
|
||||
|
||||
79
src/Untappd.Net/Request/RepositoryGet.cs
Normal file
79
src/Untappd.Net/Request/RepositoryGet.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Untappd.Net.Client;
|
||||
|
||||
namespace Untappd.Net.Request
|
||||
{
|
||||
public partial class Repository
|
||||
{
|
||||
/// <summary>
|
||||
/// Get the things!
|
||||
/// </summary>
|
||||
/// <typeparam name="TResult">What you want to request</typeparam>
|
||||
/// <param name="credentials">Pass in a credentials object</param>
|
||||
/// <param name="urlParameter">this is the main parameter for a request. ie v4/user/checkins/urlParameter. Consult the untappd docs, this can be null for a few requests</param>
|
||||
/// <param name="bodyParameters">Any additional params you wish to add to the request</param>
|
||||
/// <returns></returns>
|
||||
public TResult Get<TResult>(IUnAuthenticatedUntappdCredentials credentials, string urlParameter, IDictionary<string, object> bodyParameters = null)
|
||||
where TResult : IUnAuthenticatedRequest, new()
|
||||
{
|
||||
var result = new TResult();
|
||||
ConfigureRequest(result.EndPoint(urlParameter), bodyParameters);
|
||||
Request.AddParameter("client_id", credentials.ClientId);
|
||||
Request.AddParameter("client_secret", credentials.ClientSecret);
|
||||
return ExecuteRequest<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, object> bodyParameters = null)
|
||||
where TResult : IUnAuthenticatedRequest, new()
|
||||
{
|
||||
var result = new TResult();
|
||||
ConfigureRequest(result.EndPoint(urlParameter), bodyParameters);
|
||||
Request.AddParameter("client_id", credentials.ClientId);
|
||||
Request.AddParameter("client_secret", credentials.ClientSecret);
|
||||
return ExecuteRequestAsync<TResult>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the things! authenticated!
|
||||
/// </summary>
|
||||
/// <typeparam name="TResult"></typeparam>
|
||||
/// <param name="credentials">Pass in a credentials object</param>
|
||||
/// <param name="urlParameter">this is the main parameter for a request. ie v4/user/checkins/urlParameter. Consult the untappd docs, this can be null for a few requests</param>
|
||||
/// <param name="bodyParameters">Any additional params you wish to add to the request</param>
|
||||
/// <returns></returns>
|
||||
public TResult Get<TResult>(IAuthenticatedUntappdCredentials credentials, string urlParameter = "", IDictionary<string, object> bodyParameters = null)
|
||||
where TResult : IAuthenticatedRequest, new()
|
||||
{
|
||||
var result = new TResult();
|
||||
ConfigureRequest(result.EndPoint(urlParameter), bodyParameters);
|
||||
Request.AddParameter("access_token", credentials.AccessToken);
|
||||
return ExecuteRequest<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, object> bodyParameters = null)
|
||||
where TResult : IAuthenticatedRequest, new()
|
||||
{
|
||||
var result = new TResult();
|
||||
ConfigureRequest(result.EndPoint(urlParameter), bodyParameters);
|
||||
Request.AddParameter("access_token", credentials.AccessToken);
|
||||
return ExecuteRequestAsync<TResult>();
|
||||
}
|
||||
}
|
||||
}
|
||||
34
src/Untappd.Net/Request/RepositoryPost.cs
Normal file
34
src/Untappd.Net/Request/RepositoryPost.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System.Threading.Tasks;
|
||||
using Untappd.Net.Client;
|
||||
|
||||
namespace Untappd.Net.Request
|
||||
{
|
||||
public partial class Repository
|
||||
{
|
||||
/// <summary>
|
||||
/// do a post with actions
|
||||
/// </summary>
|
||||
/// <param name="credentials"></param>
|
||||
/// <param name="action"></param>
|
||||
/// <returns>returns dynamic since often the return doesn't matter</returns>
|
||||
public dynamic Post(IAuthenticatedUntappdCredentials credentials, IAction action)
|
||||
{
|
||||
ConfigureRequest(action.EndPoint, action.BodyParameters, action.RequestMethod);
|
||||
Request.AddParameter("access_token", credentials.AccessToken);
|
||||
return ExecuteRequest<dynamic>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// do a post with actions, Async!
|
||||
/// </summary>
|
||||
/// <param name="credentials"></param>
|
||||
/// <param name="action"></param>
|
||||
/// <returns>returns dynamic since often the return doesn't matter</returns>
|
||||
public Task<dynamic> PostAsync(IAuthenticatedUntappdCredentials credentials, IAction action)
|
||||
{
|
||||
ConfigureRequest(action.EndPoint, action.BodyParameters, action.RequestMethod);
|
||||
Request.AddParameter("access_token", credentials.AccessToken);
|
||||
return ExecuteRequestAsync<dynamic>();
|
||||
}
|
||||
}
|
||||
}
|
||||
22
src/Untappd.Net/Responses/Actions/AcceptFriend.cs
Normal file
22
src/Untappd.Net/Responses/Actions/AcceptFriend.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class AcceptFriend : IAction
|
||||
{
|
||||
public Method RequestMethod { get { return Method.GET; } }
|
||||
public string EndPoint { get; private set; }
|
||||
public IDictionary<string, object> BodyParameters { get { return new Dictionary<string, object>(); } }
|
||||
public AcceptFriend(string target_id)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(target_id))
|
||||
{
|
||||
throw new ArgumentNullException("target_id");
|
||||
}
|
||||
EndPoint = string.Format("v4/friend/accept/{0}", target_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
32
src/Untappd.Net/Responses/Actions/AddComment.cs
Normal file
32
src/Untappd.Net/Responses/Actions/AddComment.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class AddComment : IAction
|
||||
{
|
||||
public Method RequestMethod { get {return Method.POST;} }
|
||||
public string EndPoint { get; private set; }
|
||||
public IDictionary<string, object> BodyParameters { get; private set; }
|
||||
public AddComment(string checkinId, string shout)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(checkinId))
|
||||
{
|
||||
throw new ArgumentNullException("checkinId");
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(shout))
|
||||
{
|
||||
throw new ArgumentNullException("shout");
|
||||
}
|
||||
if (shout.Length > 140)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("shout", shout, "Shout cannot be more than 140 characters");
|
||||
}
|
||||
EndPoint = string.Format("v4/checkin/addcomment/{0}", checkinId);
|
||||
BodyParameters = new Dictionary<string, object> {{shout, shout}};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
22
src/Untappd.Net/Responses/Actions/AddFriend.cs
Normal file
22
src/Untappd.Net/Responses/Actions/AddFriend.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class AddFriend : IAction
|
||||
{
|
||||
public Method RequestMethod { get{return Method.GET;} }
|
||||
public string EndPoint { get; private set; }
|
||||
public IDictionary<string, object> BodyParameters { get{ return new Dictionary<string, object>();} }
|
||||
public AddFriend(string target_id)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(target_id))
|
||||
{
|
||||
throw new ArgumentNullException("target_id");
|
||||
}
|
||||
EndPoint = string.Format("v4/friend/request/{0}", target_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
src/Untappd.Net/Responses/Actions/AddToWishList.cs
Normal file
18
src/Untappd.Net/Responses/Actions/AddToWishList.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class AddToWishList : IAction
|
||||
{
|
||||
public Method RequestMethod { get {return Method.GET;} }
|
||||
public string EndPoint { get { return "v4/user/wishlist/add"; } }
|
||||
public IDictionary<string, object> BodyParameters { get; private set; }
|
||||
public AddToWishList(int beerId)
|
||||
{
|
||||
BodyParameters = new Dictionary<string, object>() { { "bid", beerId } };
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
93
src/Untappd.Net/Responses/Actions/CheckIn.cs
Normal file
93
src/Untappd.Net/Responses/Actions/CheckIn.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class CheckIn : IAction
|
||||
{
|
||||
private short _rating;
|
||||
private string _shout;
|
||||
public Method RequestMethod { get{ return Method.POST;} }
|
||||
public string EndPoint { get { return "v4/checkin/add"; } }
|
||||
|
||||
public IDictionary<string, object> BodyParameters
|
||||
{
|
||||
get
|
||||
{
|
||||
var dict = new Dictionary<string, object>
|
||||
{
|
||||
{"gmt_offset", GmtOffset},
|
||||
{"timezone", Timezone},
|
||||
{"bid", Bid}
|
||||
};
|
||||
if (Geolat.HasValue)
|
||||
{
|
||||
dict.Add("geolat", Geolat.Value);
|
||||
}
|
||||
if (Geolng.HasValue)
|
||||
{
|
||||
dict.Add("geolng", Geolng.Value);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(Shout) && Shout.Length <= 140)
|
||||
{
|
||||
dict.Add("shout", Shout);
|
||||
}
|
||||
if (Rating > 0 && Rating < 6)
|
||||
{
|
||||
dict.Add("rating", Rating);
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
|
||||
public string GmtOffset { get; private set; }
|
||||
public string Timezone { get; private set; }
|
||||
public int Bid { get; private set; }
|
||||
public int? Geolat { get; set; }
|
||||
public int? Geolng { get; set; }
|
||||
|
||||
public string Shout
|
||||
{
|
||||
get { return _shout; }
|
||||
set
|
||||
{
|
||||
if (value.Length > 140)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("value", value,"Shout can be no more than 140 characters");
|
||||
}
|
||||
_shout = string.Copy(value);
|
||||
}
|
||||
}
|
||||
|
||||
public short Rating
|
||||
{
|
||||
get { return _rating; }
|
||||
set
|
||||
{
|
||||
if (value < 1 || value > 5)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("value", value, "Ratings should be between 1 and 5");
|
||||
}
|
||||
_rating = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public CheckIn(string gmtOffset, string timezone, int bid)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(gmtOffset))
|
||||
{
|
||||
throw new ArgumentNullException("gmtOffset");
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(timezone))
|
||||
{
|
||||
throw new ArgumentNullException("timezone");
|
||||
}
|
||||
GmtOffset = string.Copy(gmtOffset);
|
||||
Timezone = string.Copy(timezone);
|
||||
Bid = bid;
|
||||
}
|
||||
}
|
||||
}
|
||||
32
src/Untappd.Net/Responses/Actions/PendingFriends.cs
Normal file
32
src/Untappd.Net/Responses/Actions/PendingFriends.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class PendingFriends : IAction
|
||||
{
|
||||
public Method RequestMethod { get {return Method.GET;} }
|
||||
public string EndPoint { get { return "v4/user/pending"; }}
|
||||
|
||||
public IDictionary<string, object> BodyParameters
|
||||
{
|
||||
get
|
||||
{
|
||||
var dict = new Dictionary<string, object>();
|
||||
if (Offset.HasValue)
|
||||
{
|
||||
dict.Add("offset", Offset.Value);
|
||||
}
|
||||
if (Limit.HasValue)
|
||||
{
|
||||
dict.Add("limit", Limit.Value);
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
|
||||
public int? Offset { get; set; }
|
||||
public int? Limit { get; set; }
|
||||
}
|
||||
}
|
||||
22
src/Untappd.Net/Responses/Actions/RemoveFriend.cs
Normal file
22
src/Untappd.Net/Responses/Actions/RemoveFriend.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class RemoveFriend : IAction
|
||||
{
|
||||
public Method RequestMethod { get { return Method.GET; } }
|
||||
public string EndPoint { get; private set; }
|
||||
public IDictionary<string, object> BodyParameters { get { return new Dictionary<string, object>(); } }
|
||||
public RemoveFriend(string target_id)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(target_id))
|
||||
{
|
||||
throw new ArgumentNullException("target_id");
|
||||
}
|
||||
EndPoint = string.Format("v4/friend/reject/{0}", target_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
22
src/Untappd.Net/Responses/Actions/RemoveFromWishList.cs
Normal file
22
src/Untappd.Net/Responses/Actions/RemoveFromWishList.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class RemoveFromWishList : IAction
|
||||
{
|
||||
public Method RequestMethod { get {return Method.GET;} }
|
||||
public string EndPoint { get { return "v4/user/wishlist/delete"; } }
|
||||
public IDictionary<string, object> BodyParameters { get; private set; }
|
||||
public RemoveFromWishList(int beerId)
|
||||
{
|
||||
BodyParameters = new Dictionary<string, object>() { { "bid", beerId } };
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
27
src/Untappd.Net/Responses/Actions/ToastUntoast.cs
Normal file
27
src/Untappd.Net/Responses/Actions/ToastUntoast.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RestSharp;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net.Responses.Actions
|
||||
{
|
||||
public class ToastUntoast : IAction
|
||||
{
|
||||
public Method RequestMethod { get { return Method.POST; } }
|
||||
public IDictionary<string, object> BodyParameters { get { return new Dictionary<string, object>(); } }
|
||||
public string EndPoint { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="checkinId"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
public ToastUntoast(string checkinId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(checkinId))
|
||||
{
|
||||
throw new ArgumentNullException("checkinId");
|
||||
}
|
||||
EndPoint = string.Format("v4/checkin/toast/{0}", checkinId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using Untappd.Net.Request;
|
||||
|
||||
namespace Untappd.Net
|
||||
{
|
||||
|
||||
@@ -47,6 +47,18 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Authentication\AuthenticationHelper.cs" />
|
||||
<Compile Include="Request\IAction.cs" />
|
||||
<Compile Include="Request\RepositoryGet.cs" />
|
||||
<Compile Include="Request\RepositoryPost.cs" />
|
||||
<Compile Include="Responses\Actions\RemoveFromWishList.cs" />
|
||||
<Compile Include="Responses\Actions\AddToWishList.cs" />
|
||||
<Compile Include="Responses\Actions\AddComment.cs" />
|
||||
<Compile Include="Responses\Actions\CheckIn.cs" />
|
||||
<Compile Include="Responses\Actions\PendingFriends.cs" />
|
||||
<Compile Include="Responses\Actions\AcceptFriend.cs" />
|
||||
<Compile Include="Responses\Actions\RemoveFriend.cs" />
|
||||
<Compile Include="Responses\Actions\AddFriend.cs" />
|
||||
<Compile Include="Responses\Actions\ToastUntoast.cs" />
|
||||
<Compile Include="SingleObjectArrayConverter.cs" />
|
||||
<Compile Include="Client\AuthenticatedUntappdCredentials.cs" />
|
||||
<Compile Include="Client\IAuthenticatedUntappdCredentials.cs" />
|
||||
@@ -79,9 +91,7 @@
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Responses\Actions\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
Reference in New Issue
Block a user