🌊
Github clone数を APIで取得する例
概要:
Github clone数を、APIで取得するメモとなります
環境
- node 14
- next.js: 10.0.0
関連
https://qiita.com/naitwo2/items/22cb7089533bb1e03614
https://qiita.com/kz800/items/497ec70bff3e555dacd0
準備
- token が必要な為、上記参考と同様です
setting > Developer settings > Personal access tokens
- Generate new token
Select scopesのrepoにチェック 、作成できました。
- 生成されたToken、メモしておきます
- cloneの取得
curl -H "Authorization: token 【取得したToken】 " https://api.github.com/repos/【owner】/【repository】/traffic/clones
- ヘッダに、tokenを設定、週単位の集計の例 / curl
curl -H "Authorization: token 123" https://api.github.com/repos/hoge/repo1/traffic/clones?per=week
- レスポンス
下記、countの部分が clone数
{
"count": 20,
"uniques": 12,
"clones": [
{
"timestamp": "2021-03-08T00:00:00Z",
"count": 20,
"uniques": 12
}
]
}
参考のJS / Next.js
https://gist.github.com/kuc-arc-f/f05807e9f07a9dc63cedd891cf45aa9b
LibHeadless.js / get_count_items
LibHeadless.js
get_count_items: async function(items){
try{
var ret = []
var len = items.length
for(var i=0; i < len; i++){
//console.log(items[i].name );
var item = items[i]
var name = items[i].name
var url = process.env.GIT_API_URL + `/repos/${process.env.GIT_OWNER}/${name}/`
url += "traffic/clones?per=week"
//console.log(url)
var response = await fetch(url, {
method: 'GET', headers: { 'Authorization': 'token ' + process.env.GIT_TOKEN },
});
var status = await response.status
if (status === 200) {
var json = await response.json()
item.count = json.count
item.uniques = json.uniques
//console.log(json );
ret.push(item)
}
}
//console.log(ret );
return ret
} catch (err) {
console.log(err);
throw new Error('error, get_count_items');
}
},
....
Discussion