public async Task <IContentIdentifier> CommitContentAsync(IContentIdentifier uncommittedContentIdentifier) { System.Diagnostics.Debug.Assert(uncommittedContentIdentifier.Uncommitted); var uncommittedContent = GetContent(uncommittedContentIdentifier); _contentHashValidator.ValidateHash(uncommittedContent, uncommittedContentIdentifier.Hash); var uncommittedContentName = _contentNameProvider.GetContentName(uncommittedContentIdentifier); var contentIdentifier = _contentIdentifierGenerator.GetCommittedContentIdentifier(uncommittedContentIdentifier); var contentName = _contentNameProvider.GetContentName(contentIdentifier); await RenameContentAsync(uncommittedContentName, contentName); return(contentIdentifier); }
private IContentIdentifier GenerateUniqueContentIdentifier(IContainer container, string hash, string extention) { var result = Enumerable.Range(1, 5) .Select(x => _contentIdentifierGenerator.GenerateContentIdentifier(hash, extention)) .Where(x => (!container.ContentExists(x)) && (!container.ContentExists(_contentIdentifierGenerator.GetCommittedContentIdentifier(x)))) .FirstOrDefault(); if (result == null) { throw new UserException("Could not generate unique content name"); } return(result); }