public async Task UpdateItem(string list, StorageItem item, CancellationToken cancellationToken) { var idConditions = new[] { new EqualCondition(x => x.Id, item.Id) }; var listItems = (await this.GetListItems(list, idConditions, cancellationToken)).ToArray(); this.EnsureSingleItemReturned(listItems); var existingListItem = listItems.First(); var updateItemUrl = this.GetListItemsUrl(list, false); updateItemUrl += $"({existingListItem.Id})"; var listItemType = await this.GetListItemType(list, cancellationToken); var requestData = this.StorageItemToListItemRequest(item, listItemType); var request = SharepointRequest .Create(HttpMethod.Post, updateItemUrl) .WithContent(requestData) .WithIfMatchHeader() .WithXHttpMethodHeader("MERGE"); await this.requestExecutor.ExecuteSharepointRequest <SharepointListItem>(request, cancellationToken); }
private async Task <string> GetListItemType(string list, CancellationToken cancellationToken) { var listUrl = $"{this.GetListUrl(list)}?$select=ListItemEntityTypeFullName"; var request = SharepointRequest.Create(HttpMethod.Get, listUrl); var response = await this.requestExecutor.ExecuteSharepointRequest <SharepointListResponse>(request, cancellationToken); return(response.ListItemEntityTypeFullName); }
public async Task <StorageItem> AddItem(string list, StorageItem item, CancellationToken cancellationToken) { var listItemType = await this.GetListItemType(list, cancellationToken); var requestData = this.StorageItemToListItemRequest(item, listItemType); var request = SharepointRequest .Create(HttpMethod.Post, this.GetListItemsUrl(list)) .WithContent(requestData); var addedItem = await this.requestExecutor.ExecuteSharepointRequest <SharepointListItem>(request, cancellationToken); return(this.ListItemToStorageItem(addedItem)); }
private async Task <IEnumerable <SharepointListItem> > GetListItems( string list, IEnumerable <ICondition> conditions, CancellationToken cancellationToken) { var itemsUrl = this.GetListItemsUrl(list); var conditionsUrlPart = this.conditionsCompiler.CompileConditions(conditions); if (conditionsUrlPart != null) { itemsUrl += $"&{conditionsUrlPart}"; } var request = SharepointRequest.Create(HttpMethod.Get, itemsUrl); var response = await this.requestExecutor.ExecuteSharepointRequest <SharepointListItemsResponse>(request, cancellationToken); return(response.Value); }
public async Task DeleteItem(string list, string itemId, CancellationToken cancellationToken) { var idConditions = new[] { new EqualCondition(x => x.Id, itemId) }; var listItems = (await this.GetListItems(list, idConditions, cancellationToken)).ToArray(); this.EnsureSingleItemReturned(listItems); var existingListItem = listItems.First(); var deleteItemUrl = this.GetListItemsUrl(list, false); deleteItemUrl += $"({existingListItem.Id})"; var request = SharepointRequest .Create(HttpMethod.Post, deleteItemUrl) .WithIfMatchHeader() .WithXHttpMethodHeader("DELETE"); await this.requestExecutor.ExecuteSharepointRequest(request, cancellationToken); }