public EmailTemplateData?Convert(MarkdownFile file)
        {
            var helper = new MarkdownFileHelper(file, _logger);

            var subject   = helper.GetRequiredString("subject");
            var from      = helper.GetOptionalString("from");
            var isEnabled = helper.GetOptionalBoolean("enabled") ?? true;
            var cc        = helper.GetOptionalStringList("cc");
            var bcc       = helper.GetOptionalStringList("bcc");

            if (!helper.IsValid)
            {
                return(null);
            }

            var result = new EmailTemplateData(
                file.Name,
                from,
                cc,
                bcc,
                subject,
                isEnabled,
                ContentsType.Markdown,
                file.Markdown);

            return(result);
        }
        private async Task <MarkdownFile?> CreateMarkdownFileAsync(FileInfo fileInfo)
        {
            try
            {
                var    headers = new Dictionary <string, string>();
                string markdown;

                using (var streamReader = new StreamReader(fileInfo.OpenRead()))
                {
                    var line = await streamReader.ReadLineAsync();

                    if (line != "---")
                    {
                        _logger.LogWarning("File {file-name} is missing the header", fileInfo.Name);
                        return(null);
                    }

                    while ((line = await streamReader.ReadLineAsync()) != "---")
                    {
                        if (line == null)
                        {
                            _logger.LogWarning("Unable to parse header for file {file-name}", fileInfo.Name);
                            return(null);
                        }

                        var(key, value) = ParseHeaderLine(fileInfo.Name, line);
                        if (key != null)
                        {
                            headers.Add(key, value);
                        }
                    }

                    markdown = await streamReader.ReadToEndAsync();
                }

                var result = new MarkdownFile(fileInfo.Name, headers, markdown);
                return(result);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Could not create blog post from {file}", fileInfo.FullName);
                return(null);
            }
        }
示例#3
0
        public PostData?Convert(MarkdownFile file)
        {
            var helper = new MarkdownFileHelper(file, _logger);

            var title       = helper.GetRequiredString("title");
            var author      = helper.GetRequiredString("author");
            var email       = helper.GetOptionalString("email");
            var publishedOn = helper.GetRequiredDate("date");
            var isPublished = helper.GetOptionalBoolean("published") ?? true;
            var isListed    = helper.GetOptionalBoolean("listed") ?? true;

            var metaAuthor      = helper.GetOptionalString("meta-author");
            var metaDescription = helper.GetOptionalString("meta-description");
            var metaKeywords    = helper.GetOptionalString("meta-keywords");

            if (!helper.IsValid)
            {
                return(null);
            }

            var metaData = new PageMetaData(
                metaAuthor ?? author,
                metaDescription,
                metaKeywords);

            var result = new PostData(
                file.Name,
                title,
                author,
                email,
                publishedOn,
                isPublished,
                isListed,
                file.Markdown,
                metaData);

            return(result);
        }
示例#4
0
        public StaticPageData?Convert(MarkdownFile file)
        {
            var helper = new MarkdownFileHelper(file, _logger);

            var title        = helper.GetRequiredString("title");
            var uriSegment   = helper.GetRequiredString("uri-segment");
            var isPublished  = helper.GetOptionalBoolean("published") ?? true;
            var menuIcon     = helper.GetOptionalString("menu-icon");
            var menuText     = helper.GetOptionalString("menu-text");
            var menuSequence = helper.GetOptionalInt32("menu-sequence");

            var metaAuthor      = helper.GetOptionalString("meta-author");
            var metaDescription = helper.GetOptionalString("meta-description");
            var metaKeywords    = helper.GetOptionalString("meta-keywords");

            if (!helper.IsValid)
            {
                return(null);
            }

            var metaData = new PageMetaData(
                metaAuthor,
                metaDescription,
                metaKeywords);

            var result = new StaticPageData(
                file.Name,
                title,
                uriSegment,
                isPublished,
                menuSequence,
                menuIcon,
                menuText,
                file.Markdown,
                metaData);

            return(result);
        }
 public MarkdownFileHelper(MarkdownFile file, ILogger logger)
 {
     _file   = file;
     _logger = logger;
 }