public async Task <ContentChangeSet> UpdateFile(string relativePath, ContentItem item) { var fullPath = GetFullPath(relativePath); var existingItem = await this.GetAllContents(fullPath); if (existingItem == null || existingItem.Count == 0) { throw new FileNotFoundException(string.Format("Can't update \"{0}\", file doesn't exist", relativePath)); } var response = await this._client.Repository.Content.UpdateFile( this._ownerName, this._repositoryName, fullPath, new UpdateFileRequest(string.Format("Update {0}", relativePath), Encoding.UTF8.GetString(item.ByteContent), existingItem[0].Sha)); var createdItem = response.Content.ToContentItem(); createdItem.Path = relativePath; var changeSet = new ContentChangeSet(response.Commit.Sha, new[] { new ContentItemInfo(createdItem) }); return(changeSet); }
public async Task <ContentChangeSet> GetChangeSet(string relativePath, IContentLoadCriteria criteria) { // try to get contents of the path first var result = await GetAllContents(GetFullPath(relativePath)); // return nothing if there is not result if (result == null || result.Count == 0) { return(null); } var sha1 = result[0].Sha; // get list of all sub trees var trees = await this._client.GitDatabase.Tree.GetRecursive(_ownerName, this._repositoryName, sha1); // get all blob entries var blobs = trees.Tree.Where(x => x.Type == TreeType.Blob); // TODO: sha1 here is incorrect, need to get the latest commit sha1 instead var items = blobs.Select(blob => blob.ToContentItem()).ToArray(); var changeSet = new ContentChangeSet(sha1, items.Select(x => new ContentItemInfo(x)).ToArray()); return(changeSet); }
public async Task <ContentChangeSet> CreateFile(string relativePath, ContentItem item) { var fullPath = GetFullPath(relativePath); var response = await this._client.Repository.Content.CreateFile( this._ownerName, this._repositoryName, fullPath, new CreateFileRequest(string.Format("Create {0}", relativePath), Encoding.UTF8.GetString(item.ByteContent))); var createdItem = response.Content.ToContentItem(); createdItem.Path = relativePath; var changeSet = new ContentChangeSet(response.Commit.Sha, new[] { new ContentItemInfo(createdItem) }); return(changeSet); }