2013-03-14 7 views
8

私は、当然のことながら、あなたがレポをダウンロードするために、資格情報を提供する必要があり、GitHubのレポのためのダウンロードパスは、民間レポのためにフォームC#の例では、プログラム

https://github.com/{username}/{reponame}/archive/{branchname}.zip 

であることがわかりプログラムでリポジトリをダウンロードできるように、誰でもHTTPS基本認証を提供する方法に関するC#の例を提供できますか?

おかげで、CURLと

答えて

0

curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG 

$ TOKENがあなたのgithubのプロフィール上のAPIトークン、ないAPIv3との通信に使用されるのOAuth2トークンです。

$ USERは、トークンが接続されているユーザーアカウントであり、必ずしもrepoが属する組織/他のユーザーではありません。 $ USERの2番目のインスタンスは、リポジトリのユーザー/アカウントです。

$ REPOがプライベートリポジトリの名前です

$ PKGTYPEはtarballのかzipballで、$ BRANCHorTAGは、マスタ、またはコミットのタグ名のように、ブランチです。

$ USERの最初のインスタンスは、$ USERの2番目のインスタンスに属するリポジトリにアクセスできる必要があります。

これはどこにも書かれていないので、もっと詳細な情報が必要な場合は少し書いてください。

+1

を使用して、しかし、私は 'curl'がマシンにインストールされていると仮定することはできませんので、残念ながら基本的な.Netプリミティブを使用しなければなりません。 – theburningmonk

-1

私は現在Okctokit.Netを探しています。試してみます。 NuGet:ここでインストール・パッケージOctokit

4

は、純粋なC#の方法です:

var githubToken = "[token]"; 
var url = "https://github.com/[username]/[repository]/archive/[sha1|tag].zip"; 
var path = @"[local path]"; 

using (var client = new System.Net.Http.HttpClient()) 
{ 
    var credentials = string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}:", githubToken); 
    credentials = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(credentials)); 
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials); 
    var contents = client.GetByteArrayAsync(url).Result; 
    System.IO.File.WriteAllBytes(path, contents); 
} 
+0

私はこれが非常に古い答えであることを認識していますが、動作させるのが難しいです。ブラウザにURLを入力すると正常にダウンロードしても常に404を返します。私は行方不明のものがありますか? –

0

私はあなたが他の質問から `curl`を使用することができます知っているgithubのトークン(https://help.github.com/articles/creating-an-access-token-for-command-line-use

 var githubToken = "token"; 
     var request = (HttpWebRequest)WebRequest.Create("https://api.github.com/repos/$OWNER/$REPO/contents/$PATH"); 
     request.Headers.Add(HttpRequestHeader.Authorization, string.Concat("token ", githubToken)); 
     request.Accept = "application/vnd.github.v3.raw"; 
     request.UserAgent = "test app"; //user agent is required https://developer.github.com/v3/#user-agent-required 
     using (var response = request.GetResponse()) 
     { 
      var encoding = System.Text.ASCIIEncoding.UTF8; 
      using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding)) 
      { 
       var fileContent = reader.ReadToEnd(); 
      } 
     }