如何为GitHub为用户的固定存储库进行API调用?
问题描述:
在GitHub上,用户可以有pinned repositories。如何为GitHub为用户的固定存储库进行API调用?
API的Repositories部分还描述了如何提出涉及回购的请求。您还可以按照another answer(可以固定)中的描述获取用户所属的组织信息。
但是,我想访问用户的固定回购。例如,给定以下配置:
我希望能够做到以下几点:
$ curl -s <some endpoint with some parameters> | <some pipeline with some filtering>
str
liffy_diffy
spiralify
micro-twitter
kit
xdoc
所以我想知道:
- 什么端点和参数是否需要获得用户的固定回购?
我能够使用nokogiri gem来解析html。然而,好像我应该是API来完成同样的事情用一个简单的HTTP请求:
$ ./get_user_pinned_repos mbigras
str
liffy_diffy
spiralify
micro-twitter
kit
xdoc
代码:
#!/usr/bin/env ruby
# get a user's pinned repos
require 'rubygems'
require 'nokogiri'
require 'open-uri'
if ARGV.length != 1
STDERR.puts "usage: get_user_pinned_repos <username>"
exit 1
end
username = ARGV.first
profile_url = "https://github.com/#{username}"
page = Nokogiri::HTML(open(profile_url))
page.css("span.repo").each { |repo| puts repo.text }
答
可以得到固定存储库GrapQL API(尝试here):
:{
repositoryOwner(login: "bertrandmartel") {
... on User {
pinnedRepositories(first:6) {
edges {
node {
name
}
}
}
}
}
}
您可以用卷曲提出要求
您可以分析与jq
JSON解析器将JSON输出:
username=bertrandmartel
curl -s -H "Authorization: bearer TOKEN" \
-X POST \
-d '{ "query": "query { repositoryOwner(login: \"'"$username"'\") { ... on User { pinnedRepositories(first:6) { edges { node { name } } } } } }" }' \
https://api.github.com/graphql | \
jq -r '.data.repositoryOwner.pinnedRepositories.edges[].node.name'