2016-08-23 6 views
1

私がしようとしているのは、私の組織private reposのすべてのレポと問題を読むことです。私は自分のWindows 7からcmd.exeR-curl GithubプライベートレポにアクセスするためのAPI

curl -u "user:pass" https://api.github.com/orgs/:org/repos 

を実行し、私は戻って私のリポジトリのすべてを取得することができます。これをファイルにパイプすることができます:

curl -u "user:pass" https://api.github.com/orgs/:org/repos > "C:\Users\Location\file.txt" 

これはJSON出力を保存します。私はRでこれを複製することができますが、恐ろしい方法のように思えます。

fullRepos = system('curl -s -u "user:pass" -G https://api.github.com/orgs/:org/repos', 
        intern=T,show.output.on.console = F) 

これは出力(intern = T)をキャプチャし、私はラインを崩壊し、データフレームにそれを回すことができるように-sは、プログレスバーを取り除きます。これにより、すべてのリポジトリが公開と非公開に戻されます。

私はRCurlを使って同じことを試みましたが、以下のコードは公開リポジトリのみを提供しています。 httpheaderは、APIが自分の呼び出しを拒否するためです。

RCurl::getURL(url="https://api.github.com/orgs/:org/repos",userpwd ="user:pass", 
       httpheader = c('User-Agent' = "A user agent")) 

また、私はhttrを試しましたが、それは公開リポジトリも提供しています。

httr::GET(url="https://api.github.com/orgs/:org/repos",userpwd="user:pass") 

私はRCurlhttrで間違って何をしているのですか?むしろ、システムコマンドを作成せずに線を貼り付けるワークフローを用意したいと思います。

+0

ありますか? – hrbrmstr

+0

私は彼らがすべてプライベートレポジトリへのアクセスを与えないOAuthに基づいていると思います。少なくとも私のアプリケーションでプライベートレポジトリへのアクセスをリクエストする方法はわかりません。しかし、Github特有の性質にかかわらず、私は 'RCurl'や' httr'の 'curl'呼び出しをなぜ複製できないのかにも興味があります。 – Mark

+0

'httr :: GET(url =" https://api.github.com/orgs/:org/repos "、httr :: authenticate(" user "、" pass ")、httr :: verbose())を試してみてください' – hrbrmstr

答えて

1

httrauthenticate()ヘルパー機能を使用して、手動で作成する必要のない認証ヘッダーを作成することができます。また、verbose()はデバッグHTTPの問題に使用することができます:R.なぜ3 githubの-APIパッケージは、あなたがそれらを使用していない(IIRC)

httr::GET(url="https://api.github.com/orgs/:‌​org/repos", 
      httr::authenticate("user", "pass"), 
      httr::verbose()) 
関連する問題