如何从给定 C# 链接的特定 GitHub 存储库中获取文件列表?

2024-04-17

如何从 GitHub 链接获取文件列表?

例如,来自此 GitHub 存储库链接:https://github.com/crs2007/ActiveReport/tree/master/ActiveReport/SQLFiles

我们可以看到有SQL文本文件:

我想获取这些文件的列表:

  • 腐败问题.sql
  • DBAlert.sql
  • 数据库信息.sql
  • 数据库默认登录.sql
  • 数据库文件.sql
  • 死锁.sql
  • 默认跟踪.sql
  • 磁盘信息.sql
  • 已安装的程序.sql
  • .等等...sql

我怎样才能做到这一点?


你应该能够使用GitHub 内容 API https://developer.github.com/v3/repos/contents/#get-contents

通过提出如下请求:

curl https://api.github.com/repos/crs2007/ActiveReport/contents/ActiveReport

Github 将返回包含目录内容的 JSON。

您可以通过多种方式在 C# 中执行此操作,例如使用类似Octokit https://github.com/octokit/octokit.net可能会推荐,因为他们解决了您可能遇到的大多数问题。如果您无法使用外部库,下面的示例展示了如何使用普通的 HttpClient 来实现相同的目的,尽管涉及更多的管道:

class Program
{
    static void Main()
    {
        Task.Factory.StartNew(async () =>
        {
            var repoOwner = "crs2007";
            var repoName = "ActiveReport";
            var path = "ActiveReport";

            var httpClientResults = await ListContents(repoOwner, repoName, path);
            PrintResults("From HttpClient", httpClientResults);

            var octokitResults = await ListContentsOctokit(repoOwner, repoName, path);
            PrintResults("From Octokit", octokitResults);

        }).Wait();
        Console.ReadKey();
    }

    static async Task<IEnumerable<string>> ListContents(string repoOwner, string repoName, string path)
    {
        using (var client = GetGithubHttpClient())
        {
            var resp = await client.GetAsync($"repos/{repoOwner}/{repoName}/contents/{path}");
            var bodyString = await resp.Content.ReadAsStringAsync();
            var bodyJson = JToken.Parse(bodyString);
            return bodyJson.SelectTokens("$.[*].name").Select(token => token.Value<string>());
        }
    }

    static async Task<IEnumerable<string>> ListContentsOctokit(string repoOwner, string repoName, string path)
    {
        var client = new GitHubClient(new ProductHeaderValue("Github-API-Test"));
        // client.Credentials = ... // Set credentials here, otherwise harsh rate limits apply.

        var contents = await client.Repository.Content.GetAllContents(repoOwner, repoName, path);
        return contents.Select(content => content.Name);
    }

    private static HttpClient GetGithubHttpClient()
    {
        return new HttpClient
        {
            BaseAddress = new Uri("https://api.github.com"),
            DefaultRequestHeaders =
            {
                // NOTE: You'll have to set up Authentication tokens in real use scenario
                // NOTE: as without it you're subject to harsh rate limits.
                {"User-Agent", "Github-API-Test"}
            }
        };
    }

    static void PrintResults(string source, IEnumerable<string> files)
    {
        Console.WriteLine(source);
        foreach (var file in files)
        {
            Console.WriteLine($" -{file}");
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从给定 C# 链接的特定 GitHub 存储库中获取文件列表? 的相关文章

  • 自 2012 年 6 月升级 SDK 1.7 以来,Azure 部署不断回收

    我有一个之前运行成功的部署 从那时起 我已升级到 2012 年 6 月的 SDK 当我部署时 它会不断回收 如果我通过远程桌面进入实例 我可以手动打开应用程序并且它会运行 没有黄屏死机 因此必须有一些有关部署的信息 在事件查看器中我看到错误
  • 使用 git,如何在冲突期间“使用他们的”?

    使用 git 如何执行 使用他们的 类型的分支合并命令 该命令应该用原始版本覆盖我的本地版本 要将您的 master 替换为 origin master git checkout master git branch M master old
  • OrderBy / ThenBy 循环 - C# 中的嵌套列表

    我有一个嵌套列表 List
  • 了解 C# 中的自签名证书

    最近我遇到了这个c 代码 var dn new X500DistinguishedName CN appSettings CommonName OU appSettings OrganizationalUnit X500Distinguis
  • 迭代时跳过相同的多重映射值

    有没有什么好方法可以实现下面所需的输出 而不必删除相同的值或创建另一个列表 向量等 我正在尝试将不同文档中找到的单词映射到其文档名称 如所需输出中所示 include
  • 迭代 C++ 映射中的键

    有没有办法迭代键 而不是 C 映射对 地图是关联容器 因此 迭代器是一对key val 如果您只需要键 则可以忽略该对中的值部分 for std map
  • 如何在 GitHub 页面上添加与 index.md 共享相同主题的新页面?

    目前 我的 GitHub 帐户上有一个主页 https
  • 如何将 C# 6 与网站项目类型一起使用?

    更新了现有的Web Site项目类型Visual Studio 2015 我将Framework更改为4 6 然后我希望在我的代码隐藏文件中可以使用所有这些新功能 不幸的是我收到如下错误 错误 CS8026 功能 表达式主体属性 在 C 5
  • 登录成功后身份服务器不重定向

    我正在尝试使用 MVC 客户端设置 IdentityServer4 一切工作正常 直到我想添加 ASP 身份 当我添加代码来使用 SQL Server 和 Identity 时 成功登录后 Identity 服务器不会将我重定向回客户端 而
  • Mac OS X El Capitan 可以运行为 Yosemite 编译且需要 /usr/gnu64/lib 中的库的软件吗?

    Sorry there s a bit of background necessary you could try skipping to the Question heading 自远古以来 无论如何 在上个千年的某个时候 我创建了诸如
  • CTAD 可以在模板类的成员内部使用吗?

    C 有一个有用的功能 即模板参数隐含在模板类内的代码中A 然而 对于建筑来说 这似乎与 CTAD 发生冲突 如何让 CTAD 优先 例如 这里有一个错误f会员因为A被解释为A
  • std::线程构造和执行

    我在 中找不到任何信息文档 http en cppreference com w cpp thread thread thread是否能保证线程对象构造完成后线程实际上正在运行 换句话说 是否可以保证线程构造函数完成后线程函数已经被执行 一
  • 无法从 Windows Phone 8.1 访问 .NET 4.5 PCL 中的本地化资源

    我在访问针对 NET 4 5 的可移植类库中的本地化字符串资源时遇到问题 我允许用户在第一页上选择语言 并在其他页面上获得本地化体验 我试图通过代码获取资源来实现这一点 MyTextBloxk Text PasswordResetMetho
  • Web API 获取多部分/表单数据响应的最简单方法

    我有问题 但我看不到我做错了什么 我想用最简单的方法来让它工作 稍后我会让它变得更复杂 但目前只想命中 post 方法 我什至不关心里面的代码当前是否正在工作 我唯一关心的是它会发回 OK 200 回复 目前 我要么收到内部服务器错误 50
  • 如何保护Linux中的堆内存?

    我想将一块堆内存设置为只读 为此我尝试过memalign with mprotect 但是从 memalignment 中我能得到什么 memalign 从进程堆中分配内存 我想将堆的某些部分设为只读 有什么帮助吗 malloc gt mm
  • Git 中“瓷器”一词是什么意思?

    瓷器 一词偶尔出现在 Git 文档中 这是什么意思 瓷器 是通常制造厕所 有时也制造洗脸盆等其他固定装置 的材料 这与 管道 实际的管道和排水管 不同 在 管道 中 瓷器为管道提供了更用户友好的界面 Git 类比地使用这个术语 将用户通常不
  • 起订量中的匹配设置问题

    我过去一周左右一直在使用 Moq 直到今天才遇到任何问题 我在获取时遇到问题VerifyAll 以正确匹配我的模拟的设置 我目前正在为我的应用程序的 API 编写单元测试 该应用程序的结构如下 API lt gt Service lt gt
  • 布局兼容类型的联合

    看这段代码 struct A short s int i struct B short s int i union U A a B b int fn U u u a i 1 return u b i 是否保证fn 回报1 注意 这是一个后续
  • 加速Cuda程序

    要更改哪一部分来加速此代码 代码到底在做什么 global void mat Matrix a Matrix b int tempData new int 2 tempData 0 threadIdx x tempData 1 blockI
  • 模板编译错误 - 没有匹配的调用函数

    我正在尝试将字符串转换为数字 为此 我找到了以下方法 include

随机推荐

  • 在 C++ 程序中包含 C 头文件

    我有一个 C 程序 cpp 在其中我希望使用 C 头文件中存在的一些函数 例如 stdio h conio h stdlib h graphics h devices h 等 我可以将 stdio h 库包含在我的 cpp 文件中 如下所示
  • 冲突:被其他getUpdates请求终止;确保只有一个机器人实例正在运行

    有人遇到这样的错误吗 我该如何修复它们 2021 11 07 08 29 38 643 telegram ext updater ERROR Error while getting Updates Conflict terminated b
  • 如何在角度指令中绑定布尔值?

    我想将一些布尔属性绑定 设置到指令 但我真的不知道如何做到这一点并实现以下行为 想象一下 我想为结构设置一个标志 假设列表是否可折叠 我有以下 HTML 代码
  • 源操作数和目标操作数是否需要相同大小?

    我刚刚尝试了这个问题 要求你解释一下代码行有什么问题 movl eax rdx 解决方案表明目标操作数的大小错误 仅当从较大尺寸变为较小尺寸时才 非法 还是源操作数和目标操作数对于所有指令 或至少 mov 类类型 必须具有相同的尺寸 是的
  • POV-Ray:在脚本中设置输出分辨率或宽度/高度比

    我有一个代码可以生成一堆 pov使用 POV Ray 进行可视化的文件 不幸的是 它们具有不同的纵横比 宽度 高度 该信息以向上 向右向量的形式存在于脚本中 但是 当我渲染没有任何额外参数的脚本时 即通过povray test pov PO
  • 如何在初始化数据库时显示启动屏幕?

    我创建了一个启动画面 效果非常好 现在我想在显示启动屏幕的同时加载数据库 并在数据库完全加载后显示应用程序 UI 我有以下代码来执行此操作 对吗 public class Splash extends Activity Override p
  • 从 MySQL 中的字符串中删除引号和逗号

    我正在从一个导入一些数据CSV文件 以及大于的数字1000变成1 100 etc 有什么好方法可以从中删除引号和逗号 以便我可以将其放入int field Edit 数据实际上已经在 MySQL 表中 所以我需要能够使用 SQL 来完成此操
  • JavaScript 正则表达式 - g 修饰符不起作用[重复]

    这个问题在这里已经有答案了 我有以下代码 var str 4 shnitzel 5 ducks var rgx new RegExp 0 9 g console log rgx exec str chrome 和 firefox 上的输出是
  • 如果Bokeh有很多图表,输出文件很重并且系统很慢

    我使用散景 我非常喜欢Bokeh 因为Bokeh有很多图表并且输出文件非常简单 我在半导体公司工作 有时我会分析半导体 数据 我有很多数据 我制作了很多图表 可能是 1000 4000 次图表操作 我用Bokeh来制作图表 但是Bokeh很
  • 在 PowerShell 中检查路径是否存在的更好方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 PowerShell 中是否有更简洁且不易出错的方法来检查路径是否不存在 对于这样一个常见的用例来说 客观上来说太冗长了 if not Test
  • Symfony2 创建自己的编码器来存储密码

    我是 Symfony2 的新手 我可能有一个关于在数据库中编码用户密码的简单问题 我想以这种方式编码并存储在数据库中我的用户密码 encoded password salt sha1 salt raw password 我找到了各种编码器
  • 是Pythonic吗:命名lambdas

    我开始欣赏 python 中 lambda 表达式的价值 特别是在函数式编程方面 map 函数返回函数 https stackoverflow com a 16509 1533474等等 但是 我也在函数中命名 lambda 因为 我多次需
  • fseek() 按行而不是字节?

    我有一个可以逐行解析大文件的脚本 当它遇到无法处理的错误时 它会停止 通知我们解析的最后一行 这真的是寻找文件中特定行的最佳 唯一方法吗 fseek 在我的情况下不可用
  • ASP.NET 日期和时间选择器?

    我将 ASP NET 2 0 与 SQL Server 2005 结合使用 我希望用户选择日期和时间 然后将这些值保存到数据库中 在 VS 中 我可以使用日历控件来获取日期 但是处理用户选择的日期以及用户还必须从控件中选择的时间有什么好处
  • 如何删除 Rmd 输出到 PDF 中代码块之间的空白?

    如何删除图表末尾与下一个图表之间的多余空白 我有一个闪亮的应用程序 运行参数化的 Rmd 输出为 html 和 PDF html 很好 但 PDF 中有太多空白 我应该将所有内容都放入两页中 因此边距 几何形状很软 但是我需要在第 1 页底
  • 使用 LaTeX,如何在每个部分的末尾提供参考文献列表? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想为每个部分生成参考书目 并将其放在该部分的末尾 当我现在这样做时 它会生成完整的参考书目并将其放置在每个部分之后 有没有办法可以做到这一点 建议h
  • AFJSONRequestOperation 数组填充,但无法在成功块之外填充 NSLog 内容

    以下代码摘自本教程 http mobile tutsplus com tutorials iphone ios sdk afnetworking 我以前用过这个片段 但之前从未注意到这个问题 数组内容的 NSLog 在委托方法中打印 但不在
  • Socket IO 涉及磁盘 IO 吗?

    如果一个进程通过套接字向同一台机器上的另一个进程发送数据 传输过程中发生磁盘读 写的可能性有多大 似乎有一个套接字文件类型 如果有空闲内存 这些文件是否保证在内存中 不直接 TCP UDP 网络套接字 本地主机或 UNIX 域套接字将在内存
  • 使用 NumPy 的数据类型大小

    在 NumPy 中 我可以通过以下方式获取特定数据类型的大小 以字节为单位 datatype itemsize or datatype nbytes 例如 np float32 5 itemsize 4 np float32 5 nbyte
  • 如何从给定 C# 链接的特定 GitHub 存储库中获取文件列表?

    如何从 GitHub 链接获取文件列表 例如 来自此 GitHub 存储库链接 https github com crs2007 ActiveReport tree master ActiveReport SQLFiles 我们可以看到有S