GitHubのAPIを使って、GitHubの様々な情報を取得できる。
GitHub API v3 | GitHub Developer Guide
今回は、指定されたユーザのレポジトリ一覧を取得する。
(認証無しなのでpublicのみ)
Repositories | GitHub Developer Guide
libcurlを使って、
/* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ #include <string.h> /* 文字列処理 */ #include <curl/curl.h> /* curl */ /* main関数の定義 */ int main(void){ /* 変数の宣言 */ CURL *curl; /* CURL構造体curl. */ /* 初期化 */ curl = curl_easy_init(); /* curl_easy_initで初期化. */ /* URLのセット. */ curl_easy_setopt(curl, CURLOPT_URL, "https://api.github.com/users/bg1bgst333/repos"); /* curl_easy_setoptでURLに"https://api.github.com/users/bg1bgst333/repos"をセット. */ /* 実行 */ curl_easy_perform(curl); /* curl_easy_performで実行. */ /* 後始末 */ curl_easy_cleanup(curl); /* curl_easy_cleanupで破棄. */ /* プログラムの終了. */ return 0; /* 0を返して正常終了. */ }
とする。
しかし、実行すると、
$ vi main.c $ gccmain.c -o main -lcurl $ ./main Request forbidden by administrative rules. Please make sure your request has a User-Agent header (http://developer.github.com/v3/#user-agent-required). Check https://developer.github.com for other possible causes. $
どうもユーザエージェントが必要らしい。
適当にユーザエージェントをセットすると、
$ vi main.c $ gcc main.c -o main -lcurl $ ./main [{"id":185426457,"node_id":"MDEwOlJlcG9zaXRvcnkxODU0MjY0NTc=","name":"32feet","full_name":"bg1bgst333/32feet","private":false,"owner":{"login":"bg1bgst333","id":10162817,"node_id":"MDQ6VXNlcjEwMTYyODE3","avatar_url":"https://avatars0.githubusercontent.com/u/10162817?v=4","gravatar_id":"","url":"https://api.github.com/users/bg1bgst333","html_url":"https://github.com/bg1bgst333","followers_url":"https://api.github.com/users/bg1bgst333/followers","following_url":"https://api.github.com/users/bg1bgst333/following{/other_user}"," ... (省略) ... false,"open_issues_count":2,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":2,"watchers":0,"default_branch":"develop_vs2005_7"}]$
レポジトリ情報一覧が物凄く一杯取れた。
Sample/github/repos/list_repositories_for_a_user/src/repos at master · bg1bgst333/Sample · GitHub