2012-02-11 6 views
7

GitHubにはファイルのソースとしてjsonp apiがありますか?私はBitBucketが持っていることを知っていますが、私はGitHubsの情報を見つけることができません。GitHub jsonpソースコードap

そうではありませんか?そうでない場合は、バマー...

答えて

0

GitHubには、ファイルのソースを抽出するAPIはありません。彼らおそらく、特定の(コミットHEADでリポジトリに存在するソースファイルを見つけることがTrees APIを使用することができコールバックを指定しているがJSONPコールバックを持っていない=任意のAPI呼び出しの後funciton(すなわち、curl https://api.github.com?callback=foo

マスターブランチ)。次に、あなただけのファイルの生バージョンのURLを使用してソースを取得することができます(つまり、https://raw.github.com/robbyrussell/oh-my-zsh/master/lib/directories.zsh

3

AがGitHub API documentationに記載されている、すべてのコールはJSONPのinvokationモードをサポートしています。

ます?callbackパラメータをGET呼び出しに送信して、JSON関数で結果をラップすることができます。これは一般に、クロスドメインの問題を回避することによって、ブラウザがGitHubコンテンツをWebページに埋め込む場合に使用されます。レスポンスには、通常のAPIと同じデータ出力と関連するHTTPヘッダー情報が含まれます。

ファイル(またはそれの任意のバージョン)の電流源を取得するためならば、あなたはそれがに格納されているBlobSHAを知っているのいずれかがあります。この詳細は、Git Database APIを参照してください。トピック。

多くの場合、SHAは認識されず、作業ディレクトリ内のファイルへの相対パスのみが認識されます。 GETは、/リポジトリ/::ユーザーが/:レポは/ Gitは/コミット

次に、あなたは

  • 構文はリストからSHAをコミット選んで、次の手順を実行する必要があります
  • 例:https://api.github.com/repos/git/git/commitsは、Gitプロジェクトのコミットの一覧を取得するには

はそれが指す木を取得し、再帰的にすべてのエントリ(木とブロブ)

データの内容を取得するためのAPIがあり

+0

これは役立ちます!ありがとうございました!! –

8

を、あなたのブロブが検索パスにマッチする検索そのSHAを見つけると、最初のプロセスを適用githubから。それはv3 github APIの一部です。

あなたは

https://api.github.com/repos/{username}/{repository name}/contents/{filepath and name} 

例えばへの要求を行いますhttps://api.github.com/repos/mono/monodevelop/contents/README

acceptsヘッダーを設定しない限り、ファイルの内容がbase64でエンコードされたJSONが返されます。あなたはこれをデコードする必要があります。これはnode.jsで非常に簡単ですが、ブラウザにはもっと苦労します。 Base64デコーダは、javascriptで、他の質問ではかなり簡単にstackoverflowで見つけることができます。注目すべきは、githubから戻ってきたbase64コードには改行文字が入っていて、フォーマットがうまくできていて、多くのbase64デコーダが改行に対応できないため、それらを削除したり、デコーダを修正する必要があるかもしれません。

おそらくコンテンツを必要とし、jsonの他のもの(shaや長さなど)を必要としないので、Acceptヘッダーをapplication/vnd.github.3.rawに設定することで簡単に作業できます。あなたがあなたのことを行うには、ブラウザ内で実行している場合は、ノードやカールを使用している場合、今

curl -i https://api.github.com/repos/mono/monodevelop/contents/README --header "Accept: application/vnd.github.3.raw" 

それはおそらく大丈夫です、しかし:ここ

はカールを使用してヘッダーを受け入れて例ですCORSを使う必要があります。 Githubは、OAuthアプリケーションとして登録されているホストからのアクセスのみを許可します。これを行うことは特に難しいことではありませんが、私のusecase(bookmarkletlet)では、これはオプションではありませんでした。

CORSを使用せずにアクセスする方法があります.JSONPを使用するとアクセスできます。 ?callback=_processGithubResponseを使用して、スクリプトタグ(応答とともに_processGithubResponseという関数を呼び出す)を組み込むのに適したjavascript出力を取得します。残念ながら、その上にacceptsヘッダーを設定することはできませんので、この場合はbase64のデコードに悩まされます。

node.jsを使用している場合は、node-githubを使用することをお勧めします。これにより、APIの使用がやや簡単になります。

+0

現在のバージョンのapiで動作しません – rakesh

関連する問題