/// <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); }
public ApiMetaData(JObject metaNode) { var tempMeta = JsonConvert.DeserializeObject <ApiMetaData>(metaNode.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); ErrorMessages = tempMeta.ErrorMessages; ExtraMetaData = tempMeta.ExtraMetaData; Method = tempMeta.Method; StatusMsg = tempMeta.StatusMsg; StatusCode = tempMeta.StatusCode; Href = tempMeta.Href; }
private static List <T> ConvertToRestTokenObjectList <T>(SessionToken token, JToken resultData) where T : RestObject, new() { var result = new List <T>(); if (resultData != null) { JToken dataNode = resultData["data"]; if (dataNode != null) { var dataTypeToken = dataNode.SelectToken("dataType", false); if (dataTypeToken != null) { string dataType = dataTypeToken.Value <string>(); if (dataType.Equals("PagedData", StringComparison.OrdinalIgnoreCase)) { //The data for paged data resides in items JToken itemsNode = dataNode.SelectToken("items", false); if (itemsNode != null) { dataNode = itemsNode; } } } if (dataNode.Type == JTokenType.Array) { foreach (JToken dataItem in dataNode.Children()) { var item = JsonConvert.DeserializeObject <T>(dataItem.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); if (item != null) { item.PopulateSessionToken(token); item.Meta = resultData["meta"].ToObject <ApiMetaData>(); } result.Add(item); } } else { var item = JsonConvert.DeserializeObject <T>(dataNode.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); if (item != null) { item.PopulateSessionToken(token); item.Meta = resultData["meta"].ToObject <ApiMetaData>(); } result.Add(item); } } } return(result); }
private static Page <T> ConvertToRestTokenObjectPage <T>(SessionToken token, JToken resultData) where T : RestObject, new() { var result = new Page <T>(token); List <T> resultSet = new List <T>(); if (resultData != null) { JToken dataNode = resultData["data"]; if (dataNode != null) { var paginationToken = resultData.SelectToken("pagination", false); if (paginationToken != null) { result.Meta = resultData["meta"].ToObject <ApiMetaData>(); //Pull all the paged data information result.First = paginationToken["first"].Value <string>(); result.Last = paginationToken["last"].Value <string>(); result.Limit = paginationToken["limit"].Value <int>(); result.Next = paginationToken["next"].Value <string>(); result.Previous = paginationToken["previous"].Value <string>(); result.TotalRecords = paginationToken["totalRecords"].Value <int>(); } if (dataNode.Type == JTokenType.Array) { foreach (JToken dataItem in dataNode.Children()) { var item = JsonConvert.DeserializeObject <T>(dataItem.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); if (item != null) { item.PopulateSessionToken(token); item.Meta = resultData["meta"].ToObject <ApiMetaData>(); } resultSet.Add(item); } } else { var item = JsonConvert.DeserializeObject <T>(dataNode.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); if (item != null) { item.PopulateSessionToken(token); item.Meta = resultData["meta"].ToObject <ApiMetaData>(); } resultSet.Add(item); } } } result.Items = resultSet; return(result); }
private static T ConvertToRestTokenObject <T>(SessionToken token, JObject resultData) where T : RestObject, new() { T result = null; if (resultData != null) { JToken dataNode = resultData["data"]; if (dataNode != null) { if (dataNode.Type == JTokenType.Array) { if (dataNode.First != null) { result = JsonConvert.DeserializeObject <T>(dataNode.First.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); if (result != null) { result.PopulateSessionToken(token); result.Meta = resultData["meta"].ToObject <ApiMetaData>(); // JsonConvert.DeserializeObject<ApiMetaData>(resultData["meta"].ToString(), GlobalConfiguration.GetJsonSerializerSettings()); } } } else { result = JsonConvert.DeserializeObject <T>(dataNode.ToString(), GlobalConfiguration.GetJsonSerializerSettings()); if (result != null) { result.PopulateSessionToken(token); result.Meta = resultData["meta"].ToObject <ApiMetaData>(); } } } else { JToken metaNode = resultData["meta"]; if (metaNode != null) { LogEventManager.Error(string.Format("No data returned: {0}{1}", Environment.NewLine, metaNode.ToString())); } } } return(result); }