Ejemplo de C # de download el repository privado de GitHub mediante progtwigción

Veo que la ruta de descarga de un repository de GitHub es de la forma

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

Para un repository privado, es comprensible que necesite proporcionar cnetworkingenciales para download el repository. ¿Alguien puede proporcionar un ejemplo de C # sobre cómo proporcionar una authentication básica HTTPS para que pueda download el repository programáticamente?

Gracias,

Aquí hay una forma pura de 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 cnetworkingentials = string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}:", githubToken); cnetworkingentials = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(cnetworkingentials)); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", cnetworkingentials); var contents = client.GetByteArrayAsync(url).Result; System.IO.File.WriteAllBytes(path, contents); } 

con CURL:

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

donde $ TOKEN es el token API en su perfil github, no un token oAuth2 utilizado para comunicarse con el APIv3.

$ USER es la count de usuario con la que está conectado el token, no necesariamente la organización / otro usuario al que pertenece el repository. La segunda instancia de $ USER es el usuario / count del repository.

$ REPO es el nombre del repository privado

$ PKGTYPE es tarball o zipball y $ BRANCHorTAG es una twig, como maestro, o un nombre de label para una confirmación.

La primera instancia de $ USER debe tener acceso al repository perteneciente a la segunda instancia de $ USER.

No pude encontrar esto documentado en CUALQUIER LUGAR, así que también tengo un pequeño escrito sobre esto si quieres algo más detallado.

usando un token 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 requinetworking https://developer.github.com/v3/#user-agent-requinetworking 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(); } } 

Estoy investigando Okctokit.Net actualmente. Dale un tiro. NuGet: Install-Package Octokit