Set up an advanced search source that queries data from an external
website.
시작하기 전에
Role required: none
To create an advanced search source, you need authenticated access to an external website
via a REST API and basic knowledge of AngularJS.
프로시저
-
In the platform UI, navigate to and select the portal you want to add search sources to.
-
From the Search Sources related list, click New.
-
Create a name and ID for the search source.
The ID should be unique, and should not include any spaces or special
characters.
-
On the Data Source tab, select the Is scripted
source check box.
-
Add content to the data fetch script field.
To set up a GitHub integration:
(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);
주: In the preceding example,
ws.setBasicAuth requires a username and
password for the external resource. For more detail, see
GlideHTTPRequest -
Global.
-
Use the Search page template to customize the way the search results display.
<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>