您可以使用octokit.net库使用raw graphQL语法在C#中查询github API v4吗?

吉日梅伦

我正在尝试使用graphQL查询存储库及其内容,但无法弄清楚如何在LinQ中构建所需的查询。有什么办法可以避免LINQ语法来执行原始GraphQL查询?

我的功能性GraphQL查询如下所示:

{
  repositoryOwner(login: "userLogin") {
    repositories(first: 99) {
      nodes {
        name
        rootFolder: object(expression: "master:") {
          id
          ... on Tree {
            entries {
              name
              object {
                ... on Blob {
                  byteSize
                }
              }
            }
          }
        }
      }
    }
  }
}

使用LinQ语法,我到了这一点:

var query = new Query()
   .RepositoryOwner("userLogin")
   .Repositories(first: 99)
   .Nodes.Select(repo => new
   {
       repo.Name
   }).Compile();

var result = await connection.Run(query);

而且我找不到在Blob选择器上实现这些的方法

编辑:

Cyril Durand的答案有效,但是很遗憾,它没有使用Octokit.net客户端,因此您无法将结果解析为提到的库中包含的类。您可以做的是创建自定义类以完全适合json结果。

首先,您查询数据。

var result = await Connection.PostQueryAsync(@"{
    user(login: """ + userName + @""") {
      login
      avatarUrl
    } 
  }");

然后将其设为JSON字符串。(需要Newtonsoft.Json库)

string JsonString = result.Data.user.ToString(Formatting.None);

并且您使用json2csharp转换器,该转换器使用JSON字符串中的属性创建确切的类。

对于此查询,生成的类如下所示

class User
{
    public string login { get; set; }
    public string avatarUrl { get; set; }
}

现在,您可以处理您的数据了。

这种方法不是最好的,但是解决了我的大部分查询问题,因此我将其标记为正确的答案。如果您有更好的解决方案的想法(也许可以在其中实际使用octokit库的想法),请随时回答:)

西里尔·杜兰德

您可以使用GraphQl.Clientnuget包并使用raw graphql查询:

var client = new GraphQLClient("https://api.github.com/graphql");
client.DefaultRequestHeaders.Add("Authorization", $"bearer {token}");
client.DefaultRequestHeaders.Add("User-Agent", userLogin );
var result = await client.PostQueryAsync(@"{
  repositoryOwner(login: """ + userLogin + @""") {
    repositories(first: 99) {
      nodes {
        name
        rootFolder: object(expression: ""master:"") {
          id
          ... on Tree {
            entries {
              name
              object {
                ... on Blob {
                  byteSize
                }
              }
            }
          }
        }
      }
    }
  }
}");

然后使用类似以下内容访问结果:

var size = result.Data.repositoryOwner.repositories.nodes[0].rootFolder.entries[0][email protected];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用GitHub GraphQL API v4查询单个存储库中的所有提交

使用GraphQL(v4 API)在GitHub中搜索代码

您可以使用私有API来挂接iOS中的系统函数调用吗?

如何使用Github的v4 GraphQL API按编号查询拉取请求?

如何使用Github的v4 GraphQL API按用户查询审阅请求?

我可以使用 carto.js (v4) 和 google maps api (Javascript) 从 carto 编辑图层吗?

您可以使用PHP查询Sql Server视图吗?

使用Github Api V4从Github存储库中获取最新的x个提交

您可以使用Yahoo Finance API使用熊猫提取当前或过去的股息数据吗?

使用Python在Google Sheets API v4中编写

您可以使用v模型添加/删除数组中的元素吗?

您可以使用C#中没有字段的属性吗?

您可以使用itextsharp C#设置字体中字母之间的距离吗

您可以使用旧的运行时库进行Visual c ++ 2013构建吗?

您可以使用 Powershell 3 或 4 中的命令将 .CSV 数据导入 SQL Server 吗?

如何使用graphql(v4 API)访问github存储库内容?

使用github API v4 graphQL获取提交更改的文件和补丁

您可以使用Sklearn的Transformer API一致地跟踪列标签吗?

您可以使用访存API设置主机标头吗

您可以使用Azure DevOps rest api获得测试步骤的通过或失败状态吗?

是否存在任何可与GitHub API v4配合使用的nodejs库?

是否可以使用Google Sheets API v4获取可用的货币格式?

Delphi 5 可以使用 C# .Net 库吗?

我可以使用Guzzle来使用GraphQL API吗?

您可以使用新的范围库进行压缩吗?

您可以使用JNI在从Java调用的c ++函数中创建新的JVM吗?

您可以使用#define宏在C中创建文件吗?

您可以使用AWS Appsync查询编写器来测试IAM用户吗?

您可以使用ruby中的消息从特定错误中解救吗?