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);
        }
Ejemplo n.º 2
0
        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);
        }