GitHub の API と格闘する

久しぶりに、MochiKit の公式サイトにいったら、MochiKit Customizer が動いていない。
調べてみると、GitHub API の v2 が廃止されたのが理由らしい。
そこで、v3 に対応すべく奮闘した。
まず、つまづいたのが、そのままのロジックではどうにもならないのに参考にしすぎたから。

簡単に初期準備のロジックを説明。

  1. みっつの MochiKit.js の情報を取得する。
  2. ひとつは、commit から最終更新のファイル情報を。もうひとつは バージョン毎に付けているタグのファイル情報。3つめにローカルファイルから。
  3. ローカルファイルは、実行が http 経由で無い場合のみ。
  4. その情報で、form の select に追加。
  5. 選択している行のファイルを取得。起動時には1番目が選択されているので、それを。
  6. 取得したファイルを分離して、Module Sets にわける。

各 tree 情報から、目的のファイル(/packd/MochiKit/MochiKit.js) を取得していた。その tree 情報を取ってくればいいのか?と思ったのが間違い。
tree は Git DB API (Git Data) から取得できるので、そこだけでファイルが取得できると思ってしまった。

なんのことはない、Git DB API にある References API から取得したい tag とか branch とかの目的の名前を引っ張って来て、 Repos API にある Repo Contents API で取得したいファイルに目的の名前をオプションで指定すれば取ってこれる。
目的の名前をオプション指定しなければ、 master から取ってくる。

まだ完成してないが、ここまで判れば十分。

公開リポジトリサービスの API を自由に使えると、公式サイトに色々な情報を載せられるから、オープンソースを公開するなら必須だね。

mercurial が好きだから、 bitbucket をもっと使いたいが…。

追記
自分のリポジトリに Issue したと思ったら、本家にしてた。
でもって、本家が直してくれた。
する事が無くなった…。