/// <summary> /// Create an entity with any type and insert it to an entity-set on the service. /// </summary> /// <param name="url">The URL of the entity-set on the service.</param> /// <param name="requestHeaders">The request headers.</param> /// <param name="entity">The non-media type entity template.</param> /// <param name="isMediaType">Indicate whether the inserted entity is media type or not.</param> /// <param name="additionInfos">The addition information. /// (This output parameter must be qualified with an 'ref' key word.)</param> /// <returns>Returns the response.</returns> public static Response CreateEntity(string url, IEnumerable <KeyValuePair <string, string> > requestHeaders, JObject entity, bool isMediaType, ref List <AdditionalInfo> additionalInfos) { Response resp = null; if (!Uri.IsWellFormedUriString(url, UriKind.Absolute) || null == entity) { return(resp); } if (isMediaType) { AdditionalInfo additionalInfo = null; resp = CreateMediaTypeEntity(url, requestHeaders, out additionalInfo); additionalInfos.RemoveAt(additionalInfos.Count - 1); additionalInfos.Add(additionalInfo); } else { resp = CreateEntity(url, entity.ToString(), requestHeaders); } return(resp); }
/// <summary> /// Create the entity with the media-type. /// </summary> /// <param name="url">The URL of an entity-set with media-type.</param> /// <param name="requestHeaders">The request headers.</param> /// <param name="additionalInfo">The additional information of the new inserted entity.</param> /// <returns>Returns the response.</returns> private static Response CreateMediaTypeEntity(string url, IEnumerable <KeyValuePair <string, string> > requestHeaders, out AdditionalInfo additionalInfo) { additionalInfo = null; if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { return(null); } string payload = string.Empty; var imageResp = CreateImage(url, requestHeaders, WebHelper.ImagePath); if (null != imageResp && HttpStatusCode.Created == imageResp.StatusCode) { string entity = string.Empty; using (var sr = new StreamReader(imageResp.GetResponseStream())) { string entityId = string.Empty; string etag = string.Empty; string mediaEtag = string.Empty; string mediaReadLink = string.Empty; string contextURL = string.Empty; payload = sr.ReadToEnd(); var mediaEntity = JObject.Parse(payload); var props = mediaEntity.Children <JProperty>(); foreach (var prop in props) { if (Constants.OdataV4JsonIdentity == prop.Name) { contextURL = prop.Value.ToString(); } else if (Constants.V4OdataMediaReadLink == prop.Name) { mediaReadLink = prop.Value.ToString(); } else if (Constants.V4OdataId == prop.Name) { entityId = prop.Value.ToString(); } else if (Constants.V4OdataEtag == prop.Name) { etag = prop.Value.ToString(); } else if (prop.Name.Contains(Constants.V4OdataMediaEtag)) { mediaEtag = prop.Value.ToString(); } } if (string.IsNullOrEmpty(entityId)) { if (!mediaReadLink.StartsWith("http")) { entityId = contextURL.Split('$')[0] + mediaReadLink; } else { entityId = mediaReadLink.Split('$')[0]; } } entityId = entityId.Split('$')[0]; additionalInfo = new AdditionalInfo(entityId, etag, mediaEtag); } } return(new Response(imageResp.StatusCode, imageResp.Headers.ToString(), payload)); }
/// <summary> /// Create the entity with the media-type. /// </summary> /// <param name="url">The URL of an entity-set with media-type.</param> /// <param name="requestHeaders">The request headers.</param> /// <param name="additionalInfo">The additional information of the new inserted entity.</param> /// <returns>Returns the response.</returns> private static Response CreateMediaTypeEntity(string url, IEnumerable<KeyValuePair<string, string>> requestHeaders, out AdditionalInfo additionalInfo) { additionalInfo = null; if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { return null; } string payload = string.Empty; var imageResp = CreateImage(url, requestHeaders, WebHelper.ImagePath); if (null != imageResp && HttpStatusCode.Created == imageResp.StatusCode) { string entity = string.Empty; using (var sr = new StreamReader(imageResp.GetResponseStream())) { string entityId = string.Empty; string etag = string.Empty; string mediaEtag = string.Empty; string mediaReadLink = string.Empty; string contextURL = string.Empty; payload = sr.ReadToEnd(); var mediaEntity = JObject.Parse(payload); var props = mediaEntity.Children<JProperty>(); foreach (var prop in props) { if (Constants.OdataV4JsonIdentity == prop.Name) { contextURL = prop.Value.ToString(); } else if (Constants.V4OdataMediaReadLink == prop.Name) { mediaReadLink = prop.Value.ToString(); } else if (Constants.V4OdataId == prop.Name) { entityId = prop.Value.ToString(); } else if (Constants.V4OdataEtag == prop.Name) { etag = prop.Value.ToString(); } else if (prop.Name.Contains(Constants.V4OdataMediaEtag)) { mediaEtag = prop.Value.ToString(); } } if (string.IsNullOrEmpty(entityId)) { if(!mediaReadLink.StartsWith("http")) { entityId = contextURL.Split('$')[0] + mediaReadLink; } else { entityId = mediaReadLink.Split('$')[0]; } } entityId = entityId.Split('$')[0]; additionalInfo = new AdditionalInfo(entityId, etag, mediaEtag); } } return new Response(imageResp.StatusCode, imageResp.Headers.ToString(), payload); }