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. NOIP2024模拟赛10:热烈张扬

    NOIP2024模拟赛10:热烈张扬 T1 一句话题意:给定一颗树和两个玩家的起点 \(a,b\) 和各自的移动速度 \(da,db\).问:如果二人均以最优策略移动,问最后谁是赢家(先走到对方当前位 ...

  2. openresty操作mongodb

    最近项目中使用openresty,需要通过openresty连接mongo,经过几番折腾终于有了一个结果,现将其记录下来,也感谢模块提供者 使用openresty操作mongo 1.引入第三方的模块 ...

  3. 5.7 Linux Vim可视化模式

    相信大家都使用过带图形界面的操作系统中的文字编辑器,用户可以使用鼠标来选择要操作的文本,非常方便.在 Vim 编辑器中也有类似的功能,但不是通过鼠标,而是通过键盘来选择要操作的文本. 在 Vim 中, ...

  4. Typora实现双击图片放大 Mac

    前置条件 Typora LightBox: github下载 添加LightBox拓展 打开应用程序,找到typora,右键选择"显示包内容". 解压lightbox2代码,将di ...

  5. npm报错error:0308010C:digital envelope routines::unsupported

    error:0308010C:digital envelope routines::unsupported 出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而Open ...

  6. 版本管理客户端工具SourceTree

    [使用] 1.设置SSH客户端 工具 > 选项 设置OpenSSH, SSH 密钥这一栏自然会去选择当前用户下的 .ssh 目录下的 id_rsa 这个私钥:

  7. VSCode关于编译scss的插件

    先安装两个插件,live server和 live sass compiler两个插件 然后将下面的代码复制到设置(文件---首选项----设置----打开设置json)中 "liveSas ...

  8. Pytorch 手写数字识别 深度学习基础分享

    本篇是一次内部分享,给项目开发的同事分享什么是深度学习.用最简单的手写数字识别做例子,讲解了大概的原理. 手写数字识别 展示首先数字识别项目的使用.项目实现过程: 训练出模型 准备html手写板 fl ...

  9. ESRI资源

    AO帮助 http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/: 桌面帮助 10.1:http://resources. ...

  10. uni-app小程序(抖音)text组件使用踩坑

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在开发一 ...