如何为GitHub为用户的固定存储库进行API调用?

问题描述:

在GitHub上,用户可以有pinned repositories如何为GitHub为用户的固定存储库进行API调用?

API的Repositories部分还描述了如何提出涉及回购的请求。您还可以按照another answer(可以固定)中的描述获取用户所属的组织信息。

但是,我想访问用户的固定回购。例如,给定以下配置:

enter image description here

我希望能够做到以下几点:

$ 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'