/// <summary> /// A method that will throw an exception which looks like { errors: "some error message"} /// </summary> public async Task ThrowStringException() { var request = RequestEngine.CreateRequest("api_permissions/current.json", Method.GET); //Make request await RequestEngine.ExecuteRequestAsync(_RestClient, request); }
/// <summary> /// A method that will throw an exception which looks like { errors: { "order" : "some error message" } } /// </summary> /// <returns></returns> public async Task ThrowObjectException() { var request = RequestEngine.CreateRequest("orders.json", Method.POST); //Make request await RequestEngine.ExecuteRequestAsync(_RestClient, request); }
/// <summary> /// Authorizes an application installation, generating an access token for the given shop. /// </summary> /// <param name="code">The authorization code generated by Bizweb OAuth, which should be a parameter named 'code' on the request querystring.</param> /// <param name="myApiUrl">The store's *.bizwebvietnam.net URL, which should be a paramter named 'shop' on the request querystring.</param> /// <param name="apiKey">Your app's public API key.</param> /// <param name="apiSecretKey">Your app's secret key.</param> /// <returns>The <see cref="OAuthResult"/> that's contain access token.</returns> public static async Task <OAuthResult> AuthorizeWithResultAsync(string code, string myApiUrl, string apiKey, string apiSecretKey) { var authState = new BizwebAuthorizationState { ApiUrl = myApiUrl }; //Build request body var content = new JsonContent(new { client_id = apiKey, client_secret = apiSecretKey, code }); using (var reqMsg = RequestEngine.CreateRequest(authState, "oauth/access_token", HttpMethod.Post, content)) { var response = await RequestEngine.ExecuteRequestAsync(reqMsg, new DefaultRequestExecutionPolicy()); var accessToken = response.Value <string>("access_token"); IEnumerable <string> scopes = null; var scope = response.Value <string>("scope"); if (scope != null) { scope = scope.Replace(" ", ","); // only for bizweb scopes = scope.Split(','); } return(new OAuthResult(accessToken, scopes)); } }
private static IRestRequest CreateRestRequest(string path, Method method, string rootElement = null, object payload = null, List <Parameter> parameters = null) { var request = RequestEngine.CreateRequest(path, method, rootElement); request.RequestFormat = DataFormat.Json; request.JsonSerializer = new ZiaJsonSerializer(new JsonSerializer()); request.AddHeader("Content-Type", "application/json"); if (parameters != null) { foreach (var param in parameters) { request.AddParameter(param); } } if (payload == null) { return(request); } if (method != Method.GET && method != Method.DELETE) { request.AddBody(payload); } else { } return(request); }
/// <summary> /// Deletes a data in API. /// </summary> /// <param name="apiPath">API query and path, not include domain.</param> public async Task DeleteAsync(string apiPath) { using (var req = RequestEngine.CreateRequest(_AuthState, apiPath, HttpMethod.Delete)) { await RequestEngine.ExecuteRequestToStringAsync(req, ExecutionPolicy); } }
/// <summary> /// Gets a results in API. /// </summary> /// <param name="apiPath">API query and path, not include domain.</param> public async Task <string> GetAsync(string apiPath) { using (var req = RequestEngine.CreateRequest(_AuthState, apiPath, HttpMethod.Get)) { return(await RequestEngine.ExecuteRequestToStringAsync(req, ExecutionPolicy)); } }
/// <summary> /// Lists subscribers for the ConvertKit account. /// </summary> /// <param name="page">The page of subscribers to get.</param> /// <returns>The <see cref="ConvertKitSubscriberList"/>.</returns> public async Task <ConvertKitSubscriberList> ListAsync(int page = 1) { var req = RequestEngine.CreateRequest("subscribers", Method.GET); if (page > 1) { req.AddParameter("page", page); } return(await RequestEngine.ExecuteRequestAsync <ConvertKitSubscriberList>(_RestClient, req)); }
/// <summary> /// Subscribes a person to multiple <see cref="ConvertKitCourse" />s. /// </summary> /// <param name="email">The subscriber's email address.</param> /// <param name="firstName">The subscriber's first name.</param> /// <param name="courseIds">A list of Course ids to subscribe them to.</param> /// <returns>The subscriber.</returns> public async Task <ConvertKitSubscriber> SubscribeToCourses(string email, string firstName, IEnumerable <long> courseIds) { long?defaultCourse = courseIds.FirstOrDefault(); if (defaultCourse == null) { throw new NullReferenceException("You must specify at least one course id to subscribe to."); } var req = RequestEngine.CreateRequest($"Courses/{defaultCourse}/subscribe", Method.POST, "subscription"); if (courseIds.Count() > 1) { req.AddQueryParameter("courses", string.Join(",", courseIds.Where(f => f != defaultCourse))); } return(await RequestEngine.ExecuteRequestAsync <ConvertKitSubscriber>(_RestClient, req)); }
/// <summary> /// A method that will throw an exception which looks like { errors: { "order" : [ "some error message" ] } } /// </summary> /// <returns></returns> public async Task ThrowArrayException() { var request = RequestEngine.CreateRequest("orders.json", Method.POST); //Creating an order with tax lines on both line items and the order will return an error var order = new ShopifyOrder() { CreatedAt = DateTime.UtcNow, LineItems = new List <ShopifyLineItem>() { new ShopifyLineItem() { Title = "Click Keyboard", Price = 99.99, Grams = 600, Quantity = 1, TaxLines = new List <ShopifyTaxLine>() { new ShopifyTaxLine() { Price = 1.0, Rate = 0.01, Title = "Keyboard tax" } } } }, TaxLines = new List <ShopifyTaxLine>() { new ShopifyTaxLine() { Price = 6.0, Rate = 0.06, Title = "State tax" } } }; request.AddJsonBody(new { order }); //Make request await RequestEngine.ExecuteRequestAsync <ShopifyOrder>(_RestClient, request); }
private async Task <string> PostOrPutAsync(HttpMethod method, string apiPath, object data, string rootElement = null) { JsonContent content = null; if (string.IsNullOrEmpty(rootElement)) { content = new JsonContent(data); } else { var body = new Dictionary <string, object> { { rootElement, data } }; content = new JsonContent(body); } using (var req = RequestEngine.CreateRequest(_AuthState, apiPath, method, content, rootElement)) { return(await RequestEngine.ExecuteRequestToStringAsync(req, ExecutionPolicy)); } }
private static BizwebRequestMessage CreateRequestMessage(BizwebAuthorizationState authState, string path, HttpMethod method, string rootElement = null, object payload = null) { JsonContent content = null; if (payload == null) { return(RequestEngine.CreateRequest(authState, path, method, rootElement: rootElement)); } if (method != HttpMethod.Get && method != HttpMethod.Delete) { content = new JsonContent(payload); } else if (payload is Parameterizable) { path = RequestEngine.CreateUriPathAndQuery(path, ((Parameterizable)payload).ToParameters()); } else { //foreach (var propertyInfo in payload.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)) //{ // req.AddParameter(propertyInfo.Name, propertyInfo.GetValue(payload)); //} var token = JToken.FromObject(payload); var queryParams = token.Select(s => { var i = (JProperty)s; return(new KeyValuePair <string, object>(i.Name, i.Value)); }); path = RequestEngine.CreateUriPathAndQuery(path, queryParams); } return(RequestEngine.CreateRequest(authState, path, method, content, rootElement)); }
/// <summary> /// Subscribes a person to a <see cref="ConvertKitCourse"/>. /// </summary> /// <param name="email">The subscriber's email address.</param> /// <param name="firstName">The subscriber's first name.</param> /// <param name="courseId">The id of the Course to subscribe them to.</param> /// <returns>The subscriber.</returns> public async Task <ConvertKitSubscriber> SubscribeToCourse(string email, string firstName, long courseId) { var req = RequestEngine.CreateRequest($"courses/{courseId}/subscribe", Method.POST, "subscription"); return(await RequestEngine.ExecuteRequestAsync <ConvertKitSubscriber>(_RestClient, req)); }
/// <summary> /// Lists all <see cref="ConvertKitCourse"/>s on the user's account. /// </summary> /// <returns></returns> public async Task <IEnumerable <ConvertKitCourse> > ListAsync() { var req = RequestEngine.CreateRequest("courses", Method.GET, "courses"); return(await RequestEngine.ExecuteRequestAsync <List <ConvertKitCourse> >(_RestClient, req)); }
public virtual async Task <ShopifyProvince> GetAsync(long countryId, long id) { var request = RequestEngine.CreateRequest($"admin/countries/{countryId}/provinces/{id}.json", RestSharp.Method.GET, "province"); return(await RequestEngine.ExecuteRequestAsync <ShopifyProvince>(_RestClient, request)); }
/// <summary> /// Unsubscribes a current <see cref="ConvertKitSubscriber"/>. /// </summary> /// <param name="email">The subscriber's email address.</param> public async Task UnsubscribeAsync(string email) { var req = RequestEngine.CreateRequest("subscribers", Method.PUT); await RequestEngine.ExecuteRequestAsync(_RestClient, req); }
/// <summary> /// Updates a <see cref="ConvertKitSubscriber"/>. /// </summary> /// <param name="subscriber">The subscriber.</param> /// <returns>The updated subscriber.</returns> public async Task <ConvertKitSubscriber> UpdateAsync(long subscriberId, ConvertKitSubscriber subscriber) { var req = RequestEngine.CreateRequest($"subscribers/{subscriberId}", Method.PUT, "subscriber"); return(await RequestEngine.ExecuteRequestAsync <ConvertKitSubscriber>(_RestClient, req)); }