2017-04-11 108 views
3

在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 } 

回答

4

可以得到固定存儲庫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' 
相關問題