Vous trouverez ci-dessous un exemple de la façon dont j'ai accédé à des fichiers individuels de mon référentiel public GitHub à partir d'une application console. Puis-je faire de même pour un dépôt privé ? Je ne sais pas comment modifier le code ou si j'ai besoin d'y accéder avec des paramètres d'autorisation différents.

Quelqu'un peut-il me dire ce que je fais mal?

Je ne suis pas sûr que cela aidera https://developer.github. com/v3/guides/managing-deploy-keys/

    private static void Main(string[] args)
    {
        var file = $"https://raw.githubusercontent.com/{username}/{repositoryName}/{branch}/{filePath}";

        System.IO.File.WriteAllText($"c:\\{filePath}", GetFile(file));

        System.Console.ReadKey();
    }

    public static string GetFile(string input)
    {
        var output = string.Empty;
        HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(input);

        request.Headers.Add("Authorization", githubtoken);
        request.AllowAutoRedirect = true;

        var response = (HttpWebResponse)request.GetResponse();

        using (var stream = new System.IO.MemoryStream())
        {
            response.GetResponseStream().CopyTo(stream);
            output = System.Text.Encoding.ASCII.GetString(stream.ToArray());
        }

        response.Close();

        return output;
    }

ÉDITER:

Donc, sur la base des commentaires (merci Olivier), il semble que toute utilisation du githubtoken que j'ai utilisé renvoie un 403 ou un 404. Mon token avait lu:packages & read:repo_hook et j'ai pensé que ce serait suffisant. J'ai utilisé le lien< /a> pour me montrer comment créer le jeton. Ai-je besoin d'autre chose pour accéder à un dépôt privé avec un jeton ?

Puis-je y accéder via un nom d'utilisateur et un mot de passe et si oui, comment puis-je modifier ce qui précède pour obtenir un fichier ?

2
Thundter 27 sept. 2019 à 18:32

1 réponse

Meilleure réponse

J'avais auparavant les autorisations read:packages et read:repo_hook lorsque j'essayais d'accéder au fichier et il manquait l'autorisation repo. Une fois que vous avez fourni cela et que vous avez réexécuté ce qui précède, il a commencé à fonctionner

J'ai également dû changer mon URL en https://api.github.com/repositories/{repositoryId}/contents/{filePath} et a dû ajouter request.UserAgent = githubUsername; à la demande avant d'essayer d'obtenir une réponse

Merci à Olivier Rogier qui m'a donné l'indice

1
Thundter 7 oct. 2019 à 12:33