UNPKG

4.09 kBJavaScriptView Raw
1"use strict";
2// Copyright (c) Jupyter Development Team.
3// Distributed under the terms of the Modified BSD License.
4Object.defineProperty(exports, "__esModule", { value: true });
5exports.WorkspaceManager = void 0;
6const coreutils_1 = require("@jupyterlab/coreutils");
7const statedb_1 = require("@jupyterlab/statedb");
8const serverconnection_1 = require("../serverconnection");
9/**
10 * The url for the lab workspaces service.
11 */
12const SERVICE_WORKSPACES_URL = 'api/workspaces';
13/**
14 * The workspaces API service manager.
15 */
16class WorkspaceManager extends statedb_1.DataConnector {
17 /**
18 * Create a new workspace manager.
19 */
20 constructor(options = {}) {
21 var _a;
22 super();
23 this.serverSettings = (_a = options.serverSettings) !== null && _a !== void 0 ? _a : serverconnection_1.ServerConnection.makeSettings();
24 }
25 /**
26 * Fetch a workspace.
27 *
28 * @param id - The workspace's ID.
29 *
30 * @returns A promise that resolves if successful.
31 */
32 async fetch(id) {
33 const { serverSettings } = this;
34 const { baseUrl, appUrl } = serverSettings;
35 const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
36 const base = baseUrl + appUrl;
37 const url = Private.url(base, id);
38 const response = await makeRequest(url, {}, serverSettings);
39 if (response.status !== 200) {
40 const err = await ResponseError.create(response);
41 throw err;
42 }
43 return response.json();
44 }
45 /**
46 * Fetch the list of workspace IDs that exist on the server.
47 *
48 * @returns A promise that resolves if successful.
49 */
50 async list() {
51 const { serverSettings } = this;
52 const { baseUrl, appUrl } = serverSettings;
53 const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
54 const base = baseUrl + appUrl;
55 const url = Private.url(base, '');
56 const response = await makeRequest(url, {}, serverSettings);
57 if (response.status !== 200) {
58 const err = await ResponseError.create(response);
59 throw err;
60 }
61 const result = await response.json();
62 return result.workspaces;
63 }
64 /**
65 * Remove a workspace from the server.
66 *
67 * @param id - The workspaces's ID.
68 *
69 * @returns A promise that resolves if successful.
70 */
71 async remove(id) {
72 const { serverSettings } = this;
73 const { baseUrl, appUrl } = serverSettings;
74 const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
75 const base = baseUrl + appUrl;
76 const url = Private.url(base, id);
77 const init = { method: 'DELETE' };
78 const response = await makeRequest(url, init, serverSettings);
79 if (response.status !== 204) {
80 const err = await ResponseError.create(response);
81 throw err;
82 }
83 }
84 /**
85 * Save a workspace.
86 *
87 * @param id - The workspace's ID.
88 *
89 * @param workspace - The workspace being saved.
90 *
91 * @returns A promise that resolves if successful.
92 */
93 async save(id, workspace) {
94 const { serverSettings } = this;
95 const { baseUrl, appUrl } = serverSettings;
96 const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
97 const base = baseUrl + appUrl;
98 const url = Private.url(base, id);
99 const init = { body: JSON.stringify(workspace), method: 'PUT' };
100 const response = await makeRequest(url, init, serverSettings);
101 if (response.status !== 204) {
102 const err = await ResponseError.create(response);
103 throw err;
104 }
105 }
106}
107exports.WorkspaceManager = WorkspaceManager;
108/**
109 * A namespace for private data.
110 */
111var Private;
112(function (Private) {
113 /**
114 * Get the url for a workspace.
115 */
116 function url(base, id) {
117 return coreutils_1.URLExt.join(base, SERVICE_WORKSPACES_URL, id);
118 }
119 Private.url = url;
120})(Private || (Private = {}));
121//# sourceMappingURL=index.js.map
\No newline at end of file