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("\n".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+"\r\n";
listPath.Add(n.filePath.path);
} ); }
} listPath.Sort();
allPath = "";
foreach (var s in listPath) {
allPath += s+"\r\n";
} 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\r\n"; }
pageIndex++; } string links = "";
foreach (var s in urlList)
{
links += s + "\r\n";
}
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; }
} }

  

c# get all Blackfish match source file path list use API的更多相关文章

  1. Maven group, artifact or version defined in the pom file do not match the file ...

    在把library上传到bintray空间的时候报以下错误 Could not upload to 'https://api.bintray.com/content/ping/maven/comm-a ...

  2. 报错:Can't find a source file at "xxxxx“Locate the file or edit the source lookup path to include its location.

    调试问题: Can't find a source file at "/tmp/TI_MKLIB6sLCzz/SRC/exit.c" Locate the file or edit ...

  3. Solved Unable to copy the source file ./installer/services.sh to the destination file /etc/vmware-t

    Sometimes when you intall vmwaretools there will be some problems such as "Unable to copy the s ...

  4. (转)Eclipse - CDT使用GDB调试C++的问题-无源文件命名(No source file named)

    http://tech.ddvip.com/2014-09/1411618782213496.html Eclipse CDT调试C++, 使用的Unix的调试器GDB; 由于在Unix下, 文件的目 ...

  5. eclipse调试(debug)的时候,出现Source not found,Edit Source Lookup Path,一闪而过

    问题描述 使用Eclipse调试代码的时候,打了断点,经常出现Source not found,网上找了半天,大部分提示点击Edit Source Lookup Path,添加被调试的工程,然而往往没 ...

  6. [LeetCode] Longest Absolute File Path 最长的绝对文件路径

    Suppose we abstract our file system by a string in the following manner: The string "dir\n\tsub ...

  7. Longest Absolute File Path

    Suppose we abstract our file system by a string in the following manner: The string "dir\n\tsub ...

  8. Error: pathspec '*' did not match any file(s) known to git.

    git切换分支报错 error: pathspec 'develop' did not match any file(s) known to git. 解决办法如下: plumm@MACY-PC MI ...

  9. Leetcode: Longest Absolute File Path

    Suppose we abstract our file system by a string in the following manner: The string "dir\n\tsub ...

  10. eclipse debug时老提示edit source lookup path解决方案

    用myeclipse debug web应用的时候,总提示edit source lookup path,每次都得手动选择项目,费时费力.在网上终于找到了方法. 搬运:http://www.educi ...

随机推荐

  1. 谷歌跨域错误解决:request client is not a secure context and the resource is in more-private address

    chrome://flags/  

  2. Robot_Parkour_Learning分享报告关键词记录

    fraction noise minecraft perlin noise 作为一种fraction noise 跑酷 深度相机,不然被挡住不知道是要下蹲还是要跳过去 issacGym的激光雷达的模拟 ...

  3. win10子系统docker搭建gitlab Server

    心血来潮想搞一套cicd玩玩,结果开始就掉坑里了. 遇到问题 不会写文,所以语言组织比较差,将就看着吧!就当记录一下这个坑以后没准还能用的上. 参照https://blog.csdn.net/Mono ...

  4. mobile频段要查找、设置并获取相关参数,该怎么破?

    ​ 今天我们一起来学习查找和设置mobile频段,并获取相关参数. 一.mobile概述 1.1 简介 "4G mobile"指的是第四代移动通信技术,常用于描述通过4G网络进行的 ...

  5. 数据结构课程设计报告-C 语言整数单链表的表示和实现

    数据结构课程设计报告 专业名称:计算机科学与技术 课程名称:数据结构        实训题目:整数单链表的表示和实现                            实训环境:C 语言实现( D ...

  6. PA1-总结

    前言 代码全是自己写的,没看过参考代码,思路也有部分和指导书不一样,算是个原创?然后毕竟pa1是简单的部分,也没有什么值得骄傲的地方,只是作为一次记录. 毕竟自己的水平还是有限,可能部分地方会有些bu ...

  7. select2的搜索框不能输入内容

    select2的搜索框不能输入内容 原因:原来是模态对话框强制使自己处于焦点状态,导致select2的搜索框无法获取焦点所致. 解决办法:在初始化中重写模态对话框的enforceFocus函数 $.f ...

  8. 详解 Eclipse 中的快速 Java 编码(代码模板)

    http://hi.baidu.com/twlk28/blog/item/f3ca4d905f1c6696a877a462.html 简介: Eclipse 提供了通过定义和使用代码模板来提高工作效率 ...

  9. TypeScript 笔记(一)

    1. TypeScript 的介绍 完整教程TypeScript 入门教程 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准,由微软开发的自由和开源的编 ...

  10. vue 新鼠标移入移出事件

    @mouseover 鼠标移入 @mouseleave 鼠标移出