指定されたユーザのレポジトリ一覧

GitHubAPIを使って、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.
$

どうもユーザエージェントが必要らしい。

CURLOPT_USERAGENT

適当にユーザエージェントをセットすると、

$ 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