/// <summary> /// Read <see cref="JsonElement"/> as OData value. /// </summary> /// <param name="node">The JSON element.</param> /// <returns>The OData value.</returns> public static IODataValue ParseAsODataValue(this JsonElement node) { switch (node.ValueKind) { case JsonValueKind.Object: // A JSON object. ODataObject odataObject = new ODataObject(); foreach (JsonProperty property in node.EnumerateObject()) { odataObject[property.Name] = ParseAsODataValue(property.Value); } return(odataObject); case JsonValueKind.Array: // A JSON array. ODataArray odataArray = new ODataArray(); foreach (JsonElement element in node.EnumerateArray()) { odataArray.Add(ParseAsODataValue(element)); } return(odataArray); case JsonValueKind.String: // A JSON string. return(new ODataString(node.GetString())); case JsonValueKind.Number: // A JSON number. return(ReadNumber(node)); case JsonValueKind.True: // A JSON true. return(ODataBoolean.True); case JsonValueKind.False: // A JSON false. return(ODataBoolean.False); case JsonValueKind.Null: // A JSON null. return(ODataNull.Null); case JsonValueKind.Undefined: default: throw new ODataException($"Found an Undefined JSON element '{node.GetRawText()}'!"); } }
public static Uri GetObjectUri(this ODataObject oDataObject, bool useStreamId = false) { if (useStreamId && oDataObject is Item) { var item = oDataObject as Item; if (!string.IsNullOrEmpty(item.StreamID)) { if (oDataObject.url != null) { return(new Uri(oDataObject.url.ToString().Replace(item.Id, item.StreamID))); } return(oDataObject.ComposeUri((oDataObject as Item).StreamID)); } } if (oDataObject.url == null) { oDataObject.url = oDataObject.ComposeUri((oDataObject).Id); } return(oDataObject.url); }
public ODataObject CreateFromUrl(string Url, ODataObject oDataObject, JsonSerializer serializer) { var odataExpression = @"^(?<cast>[^$\(]+)\((?<id>[^\)]+)\)"; Uri uri = new Uri(Url); string type = null; string id = null; var uriSegments = uri.GetSegments(); foreach (var segment in uriSegments) { var match = Regex.Match(segment, odataExpression, RegexOptions.IgnoreCase); if (match.Success) { type = match.Groups["cast"].Value; id = match.Groups["id"].Value; } } if (type == null && uriSegments.Length > 0) { type = uriSegments[uriSegments.Length - 1]; } if (type != null) { var o = Create(oDataObject.GetType(), type, oDataObject, serializer); if (!string.IsNullOrEmpty(id)) { o.Id = id; } return(o); } if (oDataObject != null) { return(oDataObject); } return(null); }
public static void AddProperty(this ODataObject oDataObject, string key, object value) { if (value == null) { return; } if (oDataObject.Properties == null) { oDataObject.Properties = new Dictionary <string, JToken>(); } var token = value as JToken; if (token != null) { oDataObject.Properties[key] = token; } else { oDataObject.Properties[key] = JToken.FromObject(value); } }
public async Task <JsonResult> TotalRetido() { var res = await ApiClient.GetAsync(GetUri("Coin")); IList <TotalCurrencyViewModel> totalCurrency = new List <TotalCurrencyViewModel>(); ODataObject <CurrencyViewModel> odataObj = JsonConvert.DeserializeObject <ODataObject <CurrencyViewModel> >(await res.Content.ReadAsStringAsync()); foreach (var item in odataObj.Value) { res = await ApiClient.GetAsync(GetUri(string.Format("TotalCurrency(userId={0},currencyId={1})", Convert.ToInt32(HttpContext.Session.GetInt32("IdUser")), item.Id))); totalCurrency.Add(new TotalCurrencyViewModel() { Describe = item.Describe, Value = (double)((dynamic)JObject.Parse(await res.Content.ReadAsStringAsync())).value }); } return(Json(new { data = totalCurrency })); }
public static object GetSharing(Content content) { var gc = EnsureContent(content); return(gc.Sharing.Items.Select(sd => ODataObject.Create(SafeSharingData.Create(sd)))); }
public static void ComposeUri(this ODataObject oDataObject) { oDataObject.ComposeUri(oDataObject.Id); }