Skip to content

Commit aeb6923

Browse files
authored
Merge pull request #7 from zowe/fix/ssh-sample-fsp
Fix SSH sample ext to work with FileSystemProvider
2 parents a5e20d8 + 8df7b9a commit aeb6923

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

vscode-extension-samples/uss-profile-sample/src/SshUssApi.ts

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,18 @@ export class SshUssApi implements MainframeInteraction.IUss {
3232
public async fileList(ussFilePath: string): Promise<zosfiles.IZosFilesResponse> {
3333
return this.withClient(this.getSession(), async (client) => {
3434
const response = [];
35-
for (const fileInfo of await client.list(ussFilePath)) {
36-
response.push({
37-
name: fileInfo.name,
38-
mode: fileInfo.type + fileInfo.owner + fileInfo.group + fileInfo.rights.other,
39-
size: fileInfo.size,
40-
uid: fileInfo.owner,
41-
gid: fileInfo.group,
42-
mtime: fileInfo.modifyTime.toString(),
43-
});
35+
if ((await client.stat(ussFilePath)).isDirectory) {
36+
for (const fileInfo of await client.list(ussFilePath)) {
37+
const permString = Object.values(fileInfo.rights).reduce((all, perm) => all.concat(perm), fileInfo.type);
38+
response.push({
39+
name: fileInfo.name,
40+
mode: permString,
41+
size: fileInfo.size,
42+
uid: fileInfo.owner,
43+
gid: fileInfo.group,
44+
mtime: fileInfo.modifyTime,
45+
});
46+
}
4447
}
4548
return this.buildZosFilesResponse({ items: response });
4649
});
@@ -50,12 +53,16 @@ export class SshUssApi implements MainframeInteraction.IUss {
5053
return Promise.resolve(false);
5154
}
5255

53-
public async getContents(ussFilePath: string, options: zosfiles.IDownloadOptions): Promise<zosfiles.IZosFilesResponse> {
56+
public async getContents(ussFilePath: string, options: zosfiles.IDownloadSingleOptions): Promise<zosfiles.IZosFilesResponse> {
5457
return this.withClient(this.getSession(), async (client) => {
55-
const localPath = options.file as string;
56-
imperative.IO.createDirsSyncFromFilePath(localPath);
57-
const response = await client.fastGet(ussFilePath, localPath);
58-
return this.buildZosFilesResponse(response);
58+
if (options.file != null) {
59+
imperative.IO.createDirsSyncFromFilePath(options.file);
60+
await client.fastGet(ussFilePath, options.file);
61+
} else if (options.stream != null) {
62+
options.stream.write(await client.get(ussFilePath));
63+
options.stream.end();
64+
}
65+
return this.buildZosFilesResponse({ etag: ussFilePath });
5966
});
6067
}
6168

@@ -66,7 +73,7 @@ export class SshUssApi implements MainframeInteraction.IUss {
6673
});
6774
}
6875

69-
public async putContent(inputFilePath: string, ussFilePath: string): Promise<zosfiles.IZosFilesResponse> {
76+
public async putContent(inputFilePath: string, ussFilePath: string, _options?: zosfiles.IUploadOptions): Promise<zosfiles.IZosFilesResponse> {
7077
return this.withClient(this.getSession(), async (client) => {
7178
const response = await client.fastPut(inputFilePath, ussFilePath);
7279
return this.buildZosFilesResponse(response);
@@ -119,6 +126,9 @@ export class SshUssApi implements MainframeInteraction.IUss {
119126
password: session.ISession.password,
120127
});
121128
return await callback(client);
129+
} catch (err) {
130+
console.error(err);
131+
return Promise.reject<T>(err);
122132
} finally {
123133
await client.end();
124134
}

0 commit comments

Comments
 (0)