提交 a50a1466 编写于 作者: R Rob Lourens

Include buildNumber in remote settings search query

上级 882ec13a
......@@ -52,7 +52,7 @@ export class PreferencesSearchProvider {
}
startSearch(filter: string, remote: boolean): PreferencesSearchModel {
return new PreferencesSearchModel(this, filter, remote);
return new PreferencesSearchModel(this, filter, remote, this.environmentService);
}
}
......@@ -60,11 +60,11 @@ export class PreferencesSearchModel {
private _localProvider: LocalSearchProvider;
private _remoteProvider: RemoteSearchProvider;
constructor(private provider: PreferencesSearchProvider, private filter: string, remote: boolean) {
constructor(private provider: PreferencesSearchProvider, private filter: string, remote: boolean, environmentService: IEnvironmentService) {
this._localProvider = new LocalSearchProvider(filter);
if (remote && filter) {
this._remoteProvider = new RemoteSearchProvider(filter, this.provider.endpoint);
this._remoteProvider = new RemoteSearchProvider(filter, this.provider.endpoint, environmentService);
}
}
......@@ -109,9 +109,9 @@ class RemoteSearchProvider {
private _filter: string;
private _remoteSearchP: TPromise<IFilterMetadata>;
constructor(filter: string, endpoint: IEndpointDetails) {
constructor(filter: string, endpoint: IEndpointDetails, private environmentService: IEnvironmentService) {
this._filter = filter;
this._remoteSearchP = filter ? getSettingsFromBing(filter, endpoint) : TPromise.wrap(null);
this._remoteSearchP = filter ? this.getSettingsFromBing(filter, endpoint) : TPromise.wrap(null);
}
filterPreferences(preferencesModel: ISettingsEditorModel): TPromise<IFilterResult> {
......@@ -139,47 +139,47 @@ class RemoteSearchProvider {
}
});
}
}
function getSettingsFromBing(filter: string, endpoint: IEndpointDetails): TPromise<IFilterMetadata> {
const url = prepareUrl(filter, endpoint);
console.log('fetching: ' + url);
const start = Date.now();
const p = fetch(url, {
headers: new Headers({
'User-Agent': 'request',
'Content-Type': 'application/json; charset=utf-8',
'api-key': endpoint.key
private getSettingsFromBing(filter: string, endpoint: IEndpointDetails): TPromise<IFilterMetadata> {
const url = prepareUrl(filter, endpoint, this.environmentService.settingsSearchBuildId);
console.log('fetching: ' + url);
const start = Date.now();
const p = fetch(url, {
headers: new Headers({
'User-Agent': 'request',
'Content-Type': 'application/json; charset=utf-8',
'api-key': endpoint.key
})
})
})
.then(r => r.json())
.then(result => {
const timestamp = Date.now();
const duration = timestamp - start;
console.log('time: ' + duration / 1000);
const suggestions = (result.value || [])
.map(r => ({
name: r.setting || r.Setting,
score: r['@search.score']
}));
const scoredResults = Object.create(null);
suggestions.forEach(s => {
const name = s.name
.replace(/^"/, '')
.replace(/"$/, '');
scoredResults[name] = s.score;
.then(r => r.json())
.then(result => {
const timestamp = Date.now();
const duration = timestamp - start;
console.log('time: ' + duration / 1000);
const suggestions = (result.value || [])
.map(r => ({
name: r.setting || r.Setting,
score: r['@search.score']
}));
const scoredResults = Object.create(null);
suggestions.forEach(s => {
const name = s.name
.replace(/^"/, '')
.replace(/"$/, '');
scoredResults[name] = s.score;
});
return <IFilterMetadata>{
remoteUrl: url,
duration,
timestamp,
scoredResults
};
});
return <IFilterMetadata>{
remoteUrl: url,
duration,
timestamp,
scoredResults
};
});
return TPromise.as(p as any);
return TPromise.as(p as any);
}
}
const API_VERSION = 'api-version=2016-09-01-Preview';
......@@ -193,7 +193,7 @@ function escapeSpecialChars(query: string): string {
.trim();
}
function prepareUrl(query: string, endpoint: IEndpointDetails): string {
function prepareUrl(query: string, endpoint: IEndpointDetails, buildNumber: number): string {
query = escapeSpecialChars(query);
const boost = endpoint.boost || 1;
const userQuery = `(${query})^${boost}`;
......@@ -201,7 +201,12 @@ function prepareUrl(query: string, endpoint: IEndpointDetails): string {
// Appending Fuzzy after each word.
query = query.replace(/\ +/g, '~ ') + '~';
return `${endpoint.urlBase}?${API_VERSION}&search=${encodeURIComponent(userQuery + ' || ' + query)}&${QUERY_TYPE}&${SCORING_PROFILE}`;
let url = `${endpoint.urlBase}?${API_VERSION}&search=${encodeURIComponent(userQuery + ' || ' + query)}&${QUERY_TYPE}&${SCORING_PROFILE}`;
if (buildNumber) {
url += `&$filter startbuildno le ${buildNumber} and endbuildno ge ${buildNumber}`;
}
return url;
}
class SettingMatches {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册