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; }
    }




}

  

原文地址:https://www.cnblogs.com/wgscd/p/13952451.html