Configure uma origem de pesquisa avançada que consulte dados de um site externo.
Antes de Iniciar
Função necessária: none
Para criar uma origem de pesquisa avançada, você precisa de acesso autenticado a um site externo por meio de uma REST API e conhecimento básico de AngularJS.
Procedimento
-
Na IU da plataforma, navegue até e selecione o portal ao qual você deseja adicionar fontes de pesquisa.
-
Na lista relacionada Origens de pesquisa, clique em Novo.
-
Crie um nome e ID para a fonte de pesquisa.
O ID deve ser exclusivo e não deve incluir espaços ou caracteres especiais.
-
Na guia Fonte de dados, marque a caixa de seleção É fonte de script.
-
Adicione conteúdo ao campo de script de busca de dados.
Para configurar uma integração do 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);
Nota: No exemplo anterior,
ws.setBasicAuth requer um nome de usuário e uma senha para o recurso externo. Para obter mais detalhes, consulte
GlideHTTPRequest - Global.
-
Use o modelo de página de pesquisa para personalizar a exibição dos resultados da pesquisa.
<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>