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 devez disposer d’un accès authentifié à un site Web externe via une API REST et de connaissances de base d’AngularJS.
Procédure
-
Dans l’interface utilisateur de la plateforme, accédez à et sélectionnez le portail auquel vous souhaitez ajouter des sources de recherche.
-
Cliquez sur Nouveau dans la liste connexe Sources de recherche.
-
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.
-
Dans l’onglet Source de données , cochez la case Est une source scriptée .
-
Ajoutez du contenu au champ de script d’extraction de 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.
-
Utilisez le modèle de page de recherche pour personnaliser l’affichage des résultats de 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>