Exemple : configurer une source de recherche GitHub

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 1 minute de lecture
  • Configurez une source de recherche avancée qui interroge les données d’un site web externe.

    Avant de commencer

    Rôle requis : aucun

    Pour créer une source de recherche avancée, vous avez besoin d’un accès authentifié à un site Web externe via une API REST et de connaissances de base d’AngularJS.

    Procédure

    1. Dans l’interface utilisateur de la plateforme, accédez à Portail de services > Portails et sélectionnez le portail auquel vous souhaitez ajouter des sources de recherche.
    2. Dans la liste connexe à Sources de recherche, cliquez sur Nouveau.
    3. Créez un nom et un ID pour la source de recherche.
      L’ID doit être unique et ne doit pas inclure d’espaces ou de caractères spéciaux.
    4. Sous l’onglet Source de données , cochez la case Est une source scriptée .
    5. Ajoutez du contenu au champ de script d’extraction des données.

      Pour configurer une intégration GitHub :

      (function(query) {
          var results = [];
          /* Calculate your results here. */
          var url = "https://api.github.com/search/repositories?q=" + encodeURI(query);
          var ws = new GlideHTTPRequest(url);
          ws.setBasicAuth("YOUR_USERNAME_HERE", "YOUR_PASSWORD_HERE");
          var jsonOutput = ws.get();
          if (jsonOutput) {
              var response = new JSON().decode(jsonOutput.getBody());
              results = response.items;
              results.forEach(function(result) {
                  result.url = result.svn_url;
                  result.target = "_blank";
                  result.primary = result.full_name;
              });
          }
      
          return results;
      })(query);
      Remarque :
      Dans l’exemple précédent, ws.setBasicAuth nécessite un nom d’utilisateur et un mot de passe pour la ressource externe. Pour plus d’informations, consultez GlideHTTPRequest : global.
    6. Utilisez le modèle de page de recherche pour personnaliser l’affichage des résultats de la recherche.
      <div>
        <div class="pull-right">
          <strong>{{item.language}}</strong>
          <a ng-href="{{item.svn_url}}/stargazers" target="_blank" class="m-l-sm"><span class="fa fa-star m-r-xs"></span>{{item.stargazers_count}}</a>
          <a ng-href="{{item.svn_url}}/network" target="_blank" class="m-l-sm"><span class="fa fa-code-fork m-r-xs"></span>{{item.forks}}</a>
        </div>
        <a ng-href="{{item.svn_url}}" target="_blank" class="h4 text-primary m-b-sm block">
          <span ng-bind-html="highlight(item.full_name, data.q)"></span>
        </a>
        <p>{{item.description}}</p>
        <p>Updated <sn-time-ago timestamp="item.updated_at"></sn-time-ago> ago</p>
      </div>