Skip to content

Commit 08ef7a5

Browse files
committed
Fetch server info via servermanager extension, including passwords from keychain
1 parent e1052e6 commit 08ef7a5

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/api/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as url from "url";
55
import * as vscode from "vscode";
66
import * as Cache from "vscode-cache";
77
import {
8+
getResolvedConnectionSpec,
89
config,
910
extensionContext,
1011
FILESYSTEM_SCHEMA,
@@ -169,7 +170,7 @@ export class AtelierAPI {
169170
webServer: { scheme, host, port, pathPrefix = "" },
170171
username,
171172
password,
172-
} = config("intersystems.servers", workspaceFolderName).get(serverName);
173+
} = getResolvedConnectionSpec(serverName, config("intersystems.servers", workspaceFolderName).get(serverName));
173174
this._config = {
174175
active: this.externalServer || conn.active,
175176
apiVersion: 1,

src/extension.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,15 @@ let connectionSocket: WebSocket;
154154

155155
let serverManagerApi: any;
156156

157+
// Map of the intersystems.server connection specs we have resolved via the API to that extension
158+
const resolvedConnSpecs = new Map<string, any>();
159+
160+
// Accessor for the connection specs
161+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
162+
export function getResolvedConnectionSpec(key: string, dflt: any): any {
163+
return resolvedConnSpecs.has(key) ? resolvedConnSpecs.get(key) : dflt;
164+
}
165+
157166
export function checkConnection(clearCookies = false, uri?: vscode.Uri): void {
158167
const { apiTarget, configName } = connectionTarget(uri);
159168
if (clearCookies) {
@@ -339,14 +348,14 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
339348
reporter = new TelemetryReporter(extensionId, extensionVersion, aiKey);
340349
}
341350

342-
// Get api for servermanager extension, perhaps offering to install it
343-
serverManagerApi = await serverManager();
344-
345351
const languages = packageJson.contributes.languages.map((lang) => lang.id);
346352
workspaceState = context.workspaceState;
347353
extensionContext = context;
348354
workspaceState.update("workspaceFolder", "");
349355

356+
// Get api for servermanager extension, perhaps offering to install it
357+
serverManagerApi = await serverManager();
358+
350359
documentContentProvider = new DocumentContentProvider();
351360
xmlContentProvider = new XmlContentProvider();
352361
fileSystemProvider = new FileSystemProvider();
@@ -375,7 +384,13 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
375384
const { configName } = connectionTarget(uri);
376385
toCheck.set(configName, uri);
377386
});
378-
toCheck.forEach(function (uri) {
387+
toCheck.forEach(async function (uri, configName) {
388+
if (serverManagerApi && serverManagerApi.getServerSpec) {
389+
const connSpec = await serverManagerApi.getServerSpec(configName);
390+
if (connSpec) {
391+
resolvedConnSpecs.set(configName, connSpec);
392+
}
393+
}
379394
checkConnection(true, uri);
380395
});
381396

0 commit comments

Comments
 (0)