12
votes

C # Exemple de téléchargement de Github Private Repo Programmatiquement

Je vois que le chemin de téléchargement pour un repo github est de la forme xxx

pour un repo privé, vous devez comporter de manière compréhensible afin de télécharger le repo, quelqu'un peut-il fournir une C # Exemple sur la manière de fournir une authentification de base HTTPS de base afin que je puisse télécharger le repo programmatique?

Merci,


0 commentaires

4 Réponses :


0
votes

avec CURL:

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


1 commentaires

Je sais que vous pouvez utiliser CURL à partir d'autres questions, mais je ne peux pas supposer CURL est installé sur la machine, de sorte à utiliser les primitives de base .NET malheureusement.



-2
votes

Je regarde dans le okctokit.net actuellement. Donner un coup de feu. Nuget: Octokit d'installation d'installation


1 commentaires

Cette bibliothèque ne prend pas en charge le clonage.



9
votes

Voici une solution C # pure:

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);
}


3 commentaires

Je me rends compte que c'est une très vieille réponse, mais j'ai du mal à le faire travailler; Il retourne toujours 404 Même s'il télécharge normalement lorsque j'entre l'URL dans un navigateur. Y a-t-il quelque chose qui me manque?


@Dinesh bolkensteyn Où obtenir [SHA1 | tag] pour Var URL ?


@ Koverflow C'est le SHA1 correspondant au COMMIT que vous souhaitez télécharger. Alternativement, vous pouvez passer la balise ou le nom de la branche à la place



2
votes

Voir ce guide sur Un jeton d'accès personnel puis exécutez ce qui suit:

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();
    }
}


0 commentaires