/// <summary> /// Trigger a call to do an HttpDelete /// </summary> /// <typeparam name="T"></typeparam> /// <param name="virtualPath">The virtual path, with optional format tokens: ~/SomeEndpoint/{0}/</param> /// <param name="queryString"></param> /// <param name="token"></param> /// <param name="virtualPathParameters"></param> /// <returns></returns> public static JObject Delete(string virtualPath, string queryString, SessionToken token, params object[] virtualPathArgs) { var client = new HttpClient(); JObject resultData = null; CleanupVirtualPathArgs(virtualPathArgs); string url = token.CreateUrl(string.Format(virtualPath, virtualPathArgs), queryString, HttpMethod.Delete); string signature = CreateAuthorization(client.DefaultRequestHeaders, new Uri(url), "DELETE", string.Empty, token.DeveloperKey, token.DeveloperSecret); client.DefaultRequestHeaders.Add("X-Authorization", signature); OutputCurlCommand(client, HttpMethod.Delete, url, null); Task task = client.DeleteAsync(url).ContinueWith(async taskwithresponse => { try { JObject result = await taskwithresponse.Result.Content.ReadAsAsync <JObject>(); resultData = ProcessResultData(result, url, HttpMethod.Delete); } catch (Exception ex) { HandleTaskException(taskwithresponse, ex, HttpMethod.Delete); } }); task.Wait(); return(resultData); }
/// <summary> /// Posts to the server using Json data /// </summary> /// <param name="virtualPath">Path you want to access based on the base url of the token. Start it with '~/'</param> /// <param name="queryString">The query string, already URL encoded</param> /// <param name="token">The current token.</param> /// <param name="postData">The data to post.</param> /// <param name="virtualPathArgs">The parameters to replace tokens in the virtualPath with.</param> /// <returns></returns> public static JObject Put(string virtualPath, string queryString, SessionToken token, object postData, params object[] virtualPathArgs) { var client = new HttpClient(); JObject resultData = null; CleanupVirtualPathArgs(virtualPathArgs); string url = token.CreateUrl(string.Format(virtualPath, virtualPathArgs), queryString, HttpMethod.Put); token.PrepPostPutHeaders(client); PreProcessPostData(postData, url, HttpMethod.Put); string jsonToPut = string.Empty; if (postData != null) { jsonToPut = JsonConvert.SerializeObject(postData, GlobalConfiguration.GetJsonSerializerSettings()); } string signature = CreateAuthorization(client.DefaultRequestHeaders, new Uri(url), "PUT", jsonToPut, token.DeveloperKey, token.DeveloperSecret); client.DefaultRequestHeaders.Add("X-Authorization", signature); var content = new StringContent(jsonToPut); content.Headers.ContentType.MediaType = "application/json"; OutputCurlCommand(client, HttpMethod.Put, url, content); Task task = client.PutAsync(url, content).ContinueWith(async taskwithresponse => { try { JObject result = await taskwithresponse.Result.Content.ReadAsAsync <JObject>(); resultData = ProcessResultData(result, url, HttpMethod.Post); } catch (Exception ex) { HandleTaskException(taskwithresponse, ex, HttpMethod.Put); } }); task.Wait(); return(resultData); }