2013-03-14 28 views
8

Ben, anlaşılır sen repo indirmek için kimlik bilgilerini sağlamanız gerekir, bir GitHub repo indirme yolu özel repo formaC# örneği programlı

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

ait olduğunu görüyoruz repo programını programlı olarak indirebilmem için bir HTTPS temel kimlik doğrulamasının nasıl sağlanacağı konusunda C# örneği sağlayabilir mi?

sayesinde CURL ile

cevap

0

:

$ TOKEN sizin github profili üzerinde API jetonu değil APIv3 ile iletişim için kullanılan bir OAuth2 bir simgedir
curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG 

.

$ USER, belirtecin bulunduğu kuruluşa ait değildir. $ USER'nin İkinci Örneği, repo'nun kullanıcısı/hesabıdır.

$ REPO

$ PKGTYPE arşivini veya zipball olan özel depo adıdır ve $ BRANCHorTAG bir taahhüt için usta veya bir etiket adı gibi, bir dalıdır.

$ USER ilk örneğinin, $ USER değerinin ikinci örneğine ait repo'ya erişebilmesi gerekir.

Bu belgeyi ANYWHERE olarak bulamadım, bu yüzden daha ayrıntılı bir şey istiyorsanız, bunun hakkında da biraz yazdım.

+1

kullanarak, ama makinede 'curl' yüklü olduğunu düşünemiyorum, bu yüzden maalesef temel .Net ilkellerini kullanmak zorundayım. – theburningmonk

-1

Şu anda Okctokit.Net incelemesine bakıyorum. Bi dene. Nuget: Burada yükleyin-Paket Octokit

4

saf C# yoludur:

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

Bunun çok eski bir cevap olduğunu anlıyorum, ama işe almakta zorlanıyorum; Bir tarayıcıda URL'yi girdiğimde normal olarak indirilse bile her zaman 404 değerini döndürür. Kaybettiğim bir şey mi var? –

0

Ben diğer sorulardan `curl` kullanabilirsiniz bildiğiniz bir github belirteci (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(); 
      } 
     }