IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Récuperer la liste des dépôts (repositories) d'un utilisateur GitHub


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Par défaut Récuperer la liste des dépôts (repositories) d'un utilisateur GitHub
    Bonjour,

    Depuis un certain moment, j'héberge mes projets personnels sur GitHub.
    Plus récemment, j'ai découvert le générateur de site Jekyll. Il m'a permis de configurer et de mettre en place un blog très simplement et en quelques minutes.
    Le blog en question est accessible ici.
    Les fichiers du site sont eux même accessibles sur ce dépôt.

    Par suite, j'ai voulu en étendre un peu les possibilités en intégrant du Javascript. Sur la page censée lister mes projets, j'ai inséré un script qui interroge l'API GitHub afin de renvoyer la liste des projets d'un utilisateur dont le nom est passé en paramètre.
    Voici un extrait du code source de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <body>
    <div class="site">
    <div id="opensource-projects"></div>
     
    <!-- Javascript to load and display repos from GitHub -->
     <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
      <script src="/javascripts/git.js" type="text/javascript"></script>
      <script type="text/javascript">
      $(function() {
        $("#opensource-projects").loadRepositories("Yonaba");
      });
      </script>
     
    <!-- End GitHub repo code -->
     
    </body>
    Et le fichier git.js contient le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
        // http://aboutcode.net/2010/11/11/list-github-projects-using-javascript.html
     
        jQuery.githubUser = function(username, callback) {
          jQuery.getJSON("http://github.com/api/v1/json/" + username + "?callback=?", callback);
        }
     
        jQuery.fn.loadRepositories = function(username) {
          this.html("<span>Querying GitHub for " + username +"'s repositories...</span>");
     
          var target = this;
          $.githubUser(username, function(data) {
            var repos = data.user.repositories;
            sortByNumberOfWatchers(repos);
     
            var list = $('<dl/>');
            target.empty().append(list);
            $(repos).each(function() {
              list.append('<dt><a href="'+ this.url +'">' + this.name + '</a></dt>');
              list.append('<dd>' + this.description + '</dd>');
            });
          });
     
          function sortByNumberOfWatchers(repos) {
            repos.sort(function(a,b) {
              return b.watchers - a.watchers;
            });
          }
        };
    Source du script: AboutCode

    Cependant, il semble ne pas fonctionner. Du tout. En chargeant la page, je reçois le message suivant, qui reste figé.



    Je n'arrives pas à trouver où se situe le problème.
    Une suggestion ?
    Merci d'avance!

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas de microscope sous la main ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Par défaut
    Mea Maxima Culpa...
    Corrigé!

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    lorsque l'on clique sur Projects la liste des projets apparaît bien !

    Le problème est-il autre ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Par défaut
    En fait, la liste des projets affichées n'est pas un résultat de requête Javascript, mais juste une liste hardcodée en HMTL que j'ai écrite moi même, comme solution temporaire.

    Le problème initial reste toujours.
    J'ai comme l'impression que le script ne fonctionne pas parce qu'utilisant une version non à jour de l'API Github, qui est passé en v3.
    Mais je ne sais pas comment le corriger...

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    je ne vois pas ou est intégré le script dans ta page.

  7. #7
    Membre éclairé
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Par défaut
    Comme je le disais tantôt, je l'avais simplement désacitivé.
    J'ai remis en place le script qui posait problème.
    Voici la page en question : Projects.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!-- Javascript to load and display repos from GitHub -->
     <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
      <script src="/javascripts/git.js" type="text/javascript"></script>
      <script type="text/javascript">
      $(function() {
        $("#opensource-projects").loadRepositories("Yonaba");
      });
      </script>
    <!-- End GitHub repo code -->
    Le script intègre un fichier js (git.js), dont , je le rappelle, voici le contenu.

    Cependant, il y a du nouveau. Je pense avoir compris d'où vient le problème, mais je ne sais pas comment le corriger, vu que je n'ai pas une bonne connaissance du Javascript.

    Sous Google Chrome, avec F12, j'accède à une console permettant d'exécuter du code javascript et jQuery.
    Je me connecte à Github, et j'envoie la requête suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.getJSON('//api.github.com/users/Yonaba/repos',{},function(data){console.log(data)})
    Oh surprise, j'obtiens ceci (cliquez pour argandir)


    Et apparemment, cela fonctionne très bien. Donc, j'ai essayé de modifier le code de la fonction githubUser dans le fichier git.js.
    Cependant, j'ai effectué le test en local uniquement, sur mon PC.
    Voici le nouveau code que j'ai donc essayé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      jQuery.githubUser = function(username, callback) {
    jQuery.getJSON('//api.github.com/users/'+username+'/repos',{},function(data){console.log(data)})
        }
    Et j'obtiens quelque chose de révélateur (cliquez pour élargir).


    Apparemment, le callback data de la fonction githubUser ne reçoit rien (null), et donc n'arrive pas à lire ses propriétés.
    Une idée ?

    Déjà, merci NoSmoking.

  8. #8
    Membre éclairé
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Par défaut
    Juste pour mentionner que j'ai pu résoudre le problème.
    C'était assez simple en fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jQuery.githubUser = function(username, callback) {
       jQuery.getJSON('https://api.github.com/users/'+username+'/repos?callback=?',callback)
    }
    Et ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        jQuery.fn.loadRepositories = function(username) {
          this.html("<span>Querying GitHub for " + username +"'s repositories...</span>");
     
          var target = this;
          $.githubUser(username, function(data) {
            var repos = data.data; // Correction (JSON Parsing)
            sortByName(repos);	
     
            //etc etc (reste du code)
    		  }
            });		
          });
     
          function sortByName(repos) {
            repos.sort(function(a,b) {
              return a.name - b.name;
            });
          }
        };
    Et voilà le script en action: projects.html

    Merci quand même!

    EDIT: Récapitulatif ici.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récuperer la liste des processus et leurs types
    Par AntoniRaffa dans le forum Bibliothèques, systèmes et outils
    Réponses: 7
    Dernier message: 09/03/2015, 13h49
  2. Liste des clés étrangères de l'utilisateur connecté
    Par SheikYerbouti dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/12/2011, 15h12
  3. Récuperer la listes des connectés à une BDD dans une requête
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/09/2008, 19h23
  4. Récuperer la liste des bases de données mysql
    Par skystef dans le forum JDBC
    Réponses: 1
    Dernier message: 06/04/2008, 20h04
  5. [JDBC] récuperer la liste des bases de données
    Par 17mounir dans le forum JDBC
    Réponses: 2
    Dernier message: 08/05/2006, 22h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo