Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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));
        }