示例#1
0
        /// <summary>
        /// Parse method. Reads given repo. Finds all md files. Parses them to jsons. Saves to given File Share.
        /// </summary>
        /// <param name="appName">application name</param>
        /// <param name="owner">GitHub repo owner</param>
        /// <param name="repoName">GitHub repo name</param>
        /// <param name="branch">GitHub repo branch</param>
        /// <param name="storageAccConnectionString">data connection string to storage where jsons will be saved.</param>
        /// <param name="fileShareName">file Share name in storage</param>
        /// <returns>true if success. false if failed</returns>
        public static async Task <bool> Parse(string appName, string owner, string repoName, string branch,
                                              string storageAccConnectionString, string fileShareName)
        {
            var github  = new GitHubClient(new ProductHeaderValue(appName));
            var mdFiles = new List <Tuple <string, string> >();

            Console.WriteLine("Finding all markdown files in repo...");
            mdFiles.AddRange(await GetMdFiles(github, owner, repoName, branch, string.Empty));
            var jsonList = new List <Tuple <string, string> >();

            Console.WriteLine($"{mdFiles.Count} items found. Parsing...");
            try
            {
                foreach (var mdFile in mdFiles)
                {
                    var mdParser = new MarkdownParser.MarkdownParser();
                    var jsonText = mdParser.CreateJson(mdFile.Item2);
                    jsonList.Add(new Tuple <string, string>($"{mdFile.Item1}.json", jsonText));
                    Console.WriteLine($"{mdFile.Item1} parsed.");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"An error occured while parsing markdown files. Details: {e}");
                return(false);
            }
            Console.WriteLine("Writing jsons to file share...");
            return(await Utilities.WriteJsonFilesToFileShareTask(jsonList, storageAccConnectionString, fileShareName));
        }
        /// <summary>
        /// Prepare json with MdParser.
        /// </summary>
        /// <param name="mdFiles">list tuples with md files data</param>
        /// <param name="log">traceWriter for logging exceptions</param>
        /// <returns>List of tuple with two strings. First is fileName, second is json content</returns>
        public static List <Tuple <string, string> > PrepareJsonData(List <Tuple <string, string> > mdFiles,
                                                                     TraceWriter log)
        {
            var jsonList = new List <Tuple <string, string> >();

            try
            {
                foreach (var mdFile in mdFiles)
                {
                    var mdParser = new MarkdownParser.MarkdownParser();
                    var jsonText = mdParser.CreateJson(mdFile.Item2);
                    jsonList.Add(new Tuple <string, string>($"{mdFile.Item1}.json", jsonText));
                }
            }
            catch (Exception e)
            {
                log.Info("There was an exception thrown during preparation of Json data: " + e.Message);
                return(new List <Tuple <string, string> >());
            }
            return(jsonList);
        }