• c# get all Blackfish match source file path list use API


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Newtonsoft.Json;
    namespace WindowsFormsApp1
    {
        public partial class BlackDuckTool : Form
        {
            public BlackDuckTool()
            {
                InitializeComponent();
    
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                // Use SecurityProtocolType.Ssl3 if needed for compatibility reasons
            }
            string baseProjectUrl = "https://xxx.app.blackduck.com/api/projects/17d8b108-4e2d-4321-95ff-a967da407efd/versions/1c04aecf-ba41-41c4-8048-2b4fcf2d98a1/components?offset={0}&limit=100&sort=projectName%20ASC";
            string linksPath = "C:\BlackDuck_MatckLinks.txt";
    
            private void btnDone_Click(object sender, EventArgs e)
            {
                getLinks();
                ParseAllSourcePaths();
            }
    
            void ParseAllSourcePaths()
            {
                string allPath = "";
                List<string> listPath = new List<string>();
                string links = File.ReadAllText(linksPath);
                var oklinks = links.Split("
    ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (string l in oklinks)
                {
                    if (string.IsNullOrEmpty(l)) { continue; };
    
                    var json = Httpget(l);
                    Matck.MatchObject mc = JsonConvert.DeserializeObject<Matck.MatchObject>(json);
                    if (mc != null && mc.items.Length > 0) {
                        mc.items.ToList().ForEach(
                            n => {
                                allPath+= n.filePath.path+"
    ";
                                listPath.Add(n.filePath.path);
                            }
                            
                            
                        );
                    
                    }
                }
    
                listPath.Sort();
                allPath = "";
                foreach (var s in listPath) {
                    allPath += s+"
    ";
                }
    
                File.WriteAllText("C:\BlackDuckAllFilePath.txt",allPath);
    
            }
    
    
    
            private void getLinks()
            {
                string err = "";
                int pageIndex = 0;
                List<string> urlList = new List<string>();
                for (int i = 0; i < 5; i++)
                {
                    string url = string.Format(baseProjectUrl, pageIndex * 100);
                    string json = Httpget(url);
    
                    if (json != "")
                    {
    
                        ResponseData data = JsonConvert.DeserializeObject<ResponseData>(json);
                        foreach (var d in data.items)
                        {
                            foreach (var o in d.origins)
                            {
                                o._meta.links.ToList().ForEach(n =>
                                {
                                    if (n.rel == "matched-files")
                                    {
                                        if (!urlList.Contains(n.href))
                                        {
                                            urlList.Add(n.href);
                                        }
                                    };
                                });
                            }
    
    
                        }
    
    
                    }
                    else
                    {
                        err += (pageIndex + 1) + " failed
    ";
    
                    }
                    pageIndex++;
    
                }
    
    
                string links = "";
                foreach (var s in urlList)
                {
                    links += s + "
    ";
                }
                File.WriteAllText("C:\BlackDuck_MatckLinks.txt", links);
    
                if (err != "")
                {
                    MessageBox.Show(err);
    
                }
                else
                {
                    MessageBox.Show("get URLS OK");
                }
    
    
    
    
            }
            string Httpget(string url)
            {
    
                try
                {
                    WebClient wc = new WebClient();
                    wc.Headers.Add("cookie", Properties.Resources.cookie);
    
                    string s = wc.DownloadString(url);
                    wc.Dispose();
                    wc = null;
                    return s;
                }
                catch (Exception ex)
                {
    
                    return "";
    
                }
    
    
            }
        }
    
    
    
        public class ResponseData
        {
            public int totalCount { get; set; }
            public Item[] items { get; set; }
            public object[] appliedFilters { get; set; }
            public _Meta _meta { get; set; }
        }
    
        public class _Meta
        {
            public string[] allow { get; set; }
            public string href { get; set; }
            public Link[] links { get; set; }
        }
    
        public class Link
        {
            public string rel { get; set; }
            public string href { get; set; }
            public string name { get; set; }
            public string label { get; set; }
        }
    
        public class Item
        {
            public string componentName { get; set; }
            public string componentVersionName { get; set; }
            public string component { get; set; }
            public string componentVersion { get; set; }
            public int totalFileMatchCount { get; set; }
            public License[] licenses { get; set; }
            public Origin[] origins { get; set; }
            public string[] usages { get; set; }
            public string[] matchTypes { get; set; }
            public DateTime releasedOn { get; set; }
            public Licenseriskprofile licenseRiskProfile { get; set; }
            public Securityriskprofile securityRiskProfile { get; set; }
            public Versionriskprofile versionRiskProfile { get; set; }
            public Activityriskprofile activityRiskProfile { get; set; }
            public Operationalriskprofile operationalRiskProfile { get; set; }
            public Activitydata activityData { get; set; }
            public string reviewStatus { get; set; }
            public string approvalStatus { get; set; }
            public string policyStatus { get; set; }
            public bool componentModified { get; set; }
            public _Meta1 _meta { get; set; }
        }
    
        public class Licenseriskprofile
        {
            public Count[] counts { get; set; }
        }
    
        public class Count
        {
            public string countType { get; set; }
            public int count { get; set; }
        }
    
        public class Securityriskprofile
        {
            public Count1[] counts { get; set; }
        }
    
        public class Count1
        {
            public string countType { get; set; }
            public int count { get; set; }
        }
    
        public class Versionriskprofile
        {
            public Count2[] counts { get; set; }
        }
    
        public class Count2
        {
            public string countType { get; set; }
            public int count { get; set; }
        }
    
        public class Activityriskprofile
        {
            public Count3[] counts { get; set; }
        }
    
        public class Count3
        {
            public string countType { get; set; }
            public int count { get; set; }
        }
    
        public class Operationalriskprofile
        {
            public Count4[] counts { get; set; }
        }
    
        public class Count4
        {
            public string countType { get; set; }
            public int count { get; set; }
        }
    
        public class Activitydata
        {
            public DateTime lastCommitDate { get; set; }
            public int newerReleases { get; set; }
            public int contributorCount12Month { get; set; }
            public int commitCount12Month { get; set; }
            public string trending { get; set; }
        }
    
        public class _Meta1
        {
            public string[] allow { get; set; }
            public string href { get; set; }
            public Link1[] links { get; set; }
        }
    
        public class Link1
        {
            public string rel { get; set; }
            public string href { get; set; }
        }
    
        public class License
        {
            public string licenseDisplay { get; set; }
            public string license { get; set; }
            public string spdxId { get; set; }
            public License1[] licenses { get; set; }
            public string licenseType { get; set; }
        }
    
        public class License1
        {
            public string licenseDisplay { get; set; }
            public string license { get; set; }
            public string spdxId { get; set; }
            public object[] licenses { get; set; }
        }
    
        public class Origin
        {
            public string name { get; set; }
            public string origin { get; set; }
            public string externalNamespace { get; set; }
            public string externalId { get; set; }
            public bool externalNamespaceDistribution { get; set; }
            public _Meta2 _meta { get; set; }
        }
    
        public class _Meta2
        {
            public object[] allow { get; set; }
            public Link2[] links { get; set; }
        }
    
        public class Link2
        {
            public string rel { get; set; }
            public string href { get; set; }
        }
    
    
    
    
        //---------------------
    
    
    
    }
    
    namespace WindowsFormsApp1.Matck
    {
    
    
        public class MatchObject
        {
            public int totalCount { get; set; }
            public Item[] items { get; set; }
            public object[] appliedFilters { get; set; }
            public _Meta _meta { get; set; }
        }
    
        public class _Meta
        {
            public string[] allow { get; set; }
            public string href { get; set; }
            public object[] links { get; set; }
        }
    
        public class Item
        {
            public Filepath filePath { get; set; }
            public string[] usages { get; set; }
            public _Meta1 _meta { get; set; }
        }
    
        public class Filepath
        {
            public string path { get; set; }
            public string archiveContext { get; set; }
            public string compositePathContext { get; set; }
            public string fileName { get; set; }
        }
    
        public class _Meta1
        {
            public Link[] links { get; set; }
        }
    
        public class Link
        {
            public string rel { get; set; }
            public string href { get; set; }
        }
    
    
    
    
    }
    

      

  • 相关阅读:
    BaseJob
    BaseWorkerForm
    MainForm()
    OperationSystemForm
    Job1
    ExeCuteManager
    ThreadPool
    LogEntry
    java学习阶段一 常量
    java学习阶段一 数据类型
  • 原文地址:https://www.cnblogs.com/wgscd/p/13952451.html
Copyright © 2020-2023  润新知