示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }