public async Task <RetrieveMultipleResponse> RetrieveMultipleAsync(string entityCollection, RetrieveOptions options) { string fullUrl = ApiUrl + entityCollection; fullUrl = options.GetRetrieveUrl(new Uri(fullUrl)); var request = new HttpRequestMessage(new HttpMethod("GET"), fullUrl); foreach (string header in options.GetPreferList()) { request.Headers.Add("Prefer", header); } HttpResponseMessage response = await Authorization.GetHttpClient().SendAsync(request); ResponseValidator.EnsureSuccessStatusCode(response); string data = await response.Content.ReadAsStringAsync(); JObject result = JObject.Parse(data); var retrieveMultipleResponse = new RetrieveMultipleResponse(result); while (!string.IsNullOrWhiteSpace(retrieveMultipleResponse.NextLink)) { HttpResponseMessage nextResults = await Authorization.GetHttpClient().GetAsync(retrieveMultipleResponse.NextLink); ResponseValidator.EnsureSuccessStatusCode(nextResults); string nextData = await nextResults.Content.ReadAsStringAsync(); JObject nextValues = JObject.Parse(nextData); retrieveMultipleResponse.AddResult(nextValues); } string logicalName = WebApiMetadata.GetLogicalName(entityCollection); EntityDefinition entityDefinition = WebApiMetadata.EntityDefinitions.FirstOrDefault(e => e.LogicalName == logicalName); string primaryKey = entityDefinition?.PrimaryIdAttribute; foreach (Entity entity in retrieveMultipleResponse.Entities) { if (entity.Contains(primaryKey)) { entity.Id = Guid.Parse(entity.GetAttributeValue <string>(primaryKey)); } entity.LogicalName = logicalName; } return(retrieveMultipleResponse); }
public async Task <BatchRequestResponse> ExecuteBatchRequestAsync(BatchRequest batchRequest) { string requestBody = BatchRequestParser.GetRequestString(batchRequest, this); var request = new HttpRequestMessage(new HttpMethod("POST"), ApiUrl + "$batch"); SetRequestContent(request, requestBody, batchRequest.BatchId); HttpResponseMessage response = await Authorization.GetHttpClient().SendAsync(request); ResponseValidator.EnsureSuccessStatusCode(response); string data = await response.Content.ReadAsStringAsync(); var batchRequestResponse = new BatchRequestResponse(data); foreach (Entity entity in batchRequestResponse.Entities) { entity.LogicalName = WebApiMetadata.GetLogicalName(entity.LogicalName); } return(batchRequestResponse); }