Пример #1
0
        /// <summary>
        /// Gets the <see cref="ILocalizedTemplateContentReader"/> for the <see cref="TemplateDefinition"/>.
        /// </summary>
        /// <param name="templateDefinition">The <see cref="TemplateDefinition"/>.</param>
        /// <returns>The <see cref="ILocalizedTemplateContentReader"/> for the <see cref="TemplateDefinition"/>.</returns>
        protected virtual async Task <ILocalizedTemplateContentReader> CreateInternalAsync(
            TemplateDefinition templateDefinition)
        {
            var virtualPath = templateDefinition.GetVirtualFilePath();

            if (virtualPath == null)
            {
                return(NullLocalizedTemplateContentReader.Instance);
            }

            var fileInfo = VirtualFileProvider.GetFileInfo(virtualPath);

            if (!fileInfo.Exists)
            {
                var directoryContents = VirtualFileProvider.GetDirectoryContents(virtualPath);
                if (!directoryContents.Exists)
                {
                    throw new Exception("Could not find a file/folder at the location: " + virtualPath);
                }

                fileInfo = new VirtualDirectoryFileInfo(virtualPath, virtualPath, DateTimeOffset.UtcNow);
            }

            if (fileInfo.IsDirectory)
            {
                var folderReader = new VirtualFolderLocalizedTemplateContentReader();
                await folderReader.ReadContentsAsync(VirtualFileProvider, virtualPath);

                return(folderReader);
            }
            else //File
            {
                var singleFileReader = new FileInfoLocalizedTemplateContentReader();
                await singleFileReader.ReadContentsAsync(fileInfo);

                return(singleFileReader);
            }
        }