Можете ли вы использовать необработанный синтаксис graphQL для запроса github API v4 в C# с помощью библиотеки octokit.net?
Я пытаюсь использовать graphQL для запросов к репозиториям и их содержимому, но не могу понять, как создать нужный запрос в LinQ. Можно ли как-нибудь выполнить необработанный запрос GraphQL, избегая синтаксиса LinQ?
Мой функциональный запрос 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
0 ответов
Вы можете использовать GraphQl.Client
пакет nuget и используйте необработанный запрос 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].@object.byteSize;