mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
Include buildNumber in remote settings search query
This commit is contained in:
@@ -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']
|
||||
}));
|
||||
.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;
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user