private static void AddOrMergePermission(ApiPermission permission, string apipath) { if (apipath.StartsWith("https://")) { return; } if (PermissionsModel.ApiPermissions.ContainsKey(apipath)) { bool keyExists = false; foreach (var item in PermissionsModel.ApiPermissions[apipath]) { if (item.HttpVerb == permission.HttpVerb) { item.Application.Union(permission.Application); item.DelegatedPersonal.Union(permission.DelegatedPersonal); item.DelegatedWork.Union(permission.DelegatedWork); keyExists = true; } } if (!keyExists) { PermissionsModel.ApiPermissions[apipath].Add(permission); } } else { var PermissionList = new List <ApiPermission> { permission }; PermissionsModel.ApiPermissions.Add(apipath, PermissionList); } }
private bool PermissionsDataValidator(ApiPermission t) { foreach (var item in t.DelegatedWork) { if (!PermissionsModel.PermissionSchemes.DelegatedWork.Exists(i => i.Name == item) && item.ToLower() == "not supported") { return(false); } } foreach (var item in t.DelegatedPersonal) { if (!PermissionsModel.PermissionSchemes.DelegatedPersonal.Exists(i => i.Name == item) && item.ToLower() == "not supported") { return(false); } } foreach (var item in t.Application) { if (!PermissionsModel.PermissionSchemes.Application.Exists(i => i.Name == item) && item.ToLower() == "not supported") { return(false); } } return(true); }
/// <summary> /// /// </summary> /// <param name="path"></param> public void AllPermissionsByPages() { XDocument xDocument; var files = Utils.ReadAllFiles(DirPath); foreach (var file in files) { var mdContent = Utils.LoadFileContent(file); mdContent = mdContent.Replace("## Prerequisites", "## Permissions"); var mdig = Markdown.ToHtml(mdContent); var filename = file.GetFilename(); PermissionsByPages.Add(filename, new ApiPermission()); try { xDocument = XDocument.Parse("<root>" + mdig + "</root>"); var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); var result = Markdown.ToHtml(mdContent, pipeline); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(result); var permissionsTableData = doc.DocumentNode.SelectSingleNode("/h2[@id='permissions']/following::table/tbody"); var permissionsByScheme = permissionsTableData .Descendants("tr") .Select(tr => tr.Elements("td").Skip(1).Select(td => td.InnerText.Split(',').Select(i => i.Trim()))); ApiPermission apiPermission = new ApiPermission { DelegatedWork = permissionsByScheme.ElementAt(0).ElementAt(0).ToList(), DelegatedPersonal = permissionsByScheme.ElementAt(1).ElementAt(0).ToList(), Application = permissionsByScheme.ElementAt(2).ElementAt(0).ToList(), }; PermissionsByPages[filename] = apiPermission; } catch (Exception) { Console.WriteLine("UnProcessed:" + file); } } //Console.WriteLine(JsonConvert.SerializeObject(PermissionsByPages)); }