1 | "use strict";
|
2 |
|
3 |
|
4 | Object.defineProperty(exports, "__esModule", { value: true });
|
5 | exports.updateSession = exports.startSession = exports.getSessionModel = exports.shutdownSession = exports.getSessionUrl = exports.listRunning = exports.SESSION_SERVICE_URL = void 0;
|
6 | const serverconnection_1 = require("../serverconnection");
|
7 | const coreutils_1 = require("@jupyterlab/coreutils");
|
8 | const validate_1 = require("./validate");
|
9 |
|
10 |
|
11 |
|
12 | exports.SESSION_SERVICE_URL = 'api/sessions';
|
13 |
|
14 |
|
15 |
|
16 | async function listRunning(settings = serverconnection_1.ServerConnection.makeSettings()) {
|
17 | const url = coreutils_1.URLExt.join(settings.baseUrl, exports.SESSION_SERVICE_URL);
|
18 | const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
|
19 | if (response.status !== 200) {
|
20 | const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
|
21 | throw err;
|
22 | }
|
23 | const data = await response.json();
|
24 | if (!Array.isArray(data)) {
|
25 | throw new Error('Invalid Session list');
|
26 | }
|
27 | data.forEach(m => {
|
28 | validate_1.updateLegacySessionModel(m);
|
29 | validate_1.validateModel(m);
|
30 | });
|
31 | return data;
|
32 | }
|
33 | exports.listRunning = listRunning;
|
34 |
|
35 |
|
36 |
|
37 | function getSessionUrl(baseUrl, id) {
|
38 | return coreutils_1.URLExt.join(baseUrl, exports.SESSION_SERVICE_URL, id);
|
39 | }
|
40 | exports.getSessionUrl = getSessionUrl;
|
41 |
|
42 |
|
43 |
|
44 | async function shutdownSession(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
|
45 | var _a;
|
46 | const url = getSessionUrl(settings.baseUrl, id);
|
47 | const init = { method: 'DELETE' };
|
48 | const response = await serverconnection_1.ServerConnection.makeRequest(url, init, settings);
|
49 | if (response.status === 404) {
|
50 | const data = await response.json();
|
51 | const msg = (_a = data.message) !== null && _a !== void 0 ? _a : `The session "${id}"" does not exist on the server`;
|
52 | console.warn(msg);
|
53 | }
|
54 | else if (response.status === 410) {
|
55 | throw new serverconnection_1.ServerConnection.ResponseError(response, 'The kernel was deleted but the session was not');
|
56 | }
|
57 | else if (response.status !== 204) {
|
58 | const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
|
59 | throw err;
|
60 | }
|
61 | }
|
62 | exports.shutdownSession = shutdownSession;
|
63 |
|
64 |
|
65 |
|
66 | async function getSessionModel(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
|
67 | const url = getSessionUrl(settings.baseUrl, id);
|
68 | const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
|
69 | if (response.status !== 200) {
|
70 | const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
|
71 | throw err;
|
72 | }
|
73 | const data = await response.json();
|
74 | validate_1.updateLegacySessionModel(data);
|
75 | validate_1.validateModel(data);
|
76 | return data;
|
77 | }
|
78 | exports.getSessionModel = getSessionModel;
|
79 |
|
80 |
|
81 |
|
82 |
|
83 | async function startSession(options, settings = serverconnection_1.ServerConnection.makeSettings()) {
|
84 | const url = coreutils_1.URLExt.join(settings.baseUrl, exports.SESSION_SERVICE_URL);
|
85 | const init = {
|
86 | method: 'POST',
|
87 | body: JSON.stringify(options)
|
88 | };
|
89 | const response = await serverconnection_1.ServerConnection.makeRequest(url, init, settings);
|
90 | if (response.status !== 201) {
|
91 | const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
|
92 | throw err;
|
93 | }
|
94 | const data = await response.json();
|
95 | validate_1.updateLegacySessionModel(data);
|
96 | validate_1.validateModel(data);
|
97 | return data;
|
98 | }
|
99 | exports.startSession = startSession;
|
100 |
|
101 |
|
102 |
|
103 | async function updateSession(model, settings = serverconnection_1.ServerConnection.makeSettings()) {
|
104 | const url = getSessionUrl(settings.baseUrl, model.id);
|
105 | const init = {
|
106 | method: 'PATCH',
|
107 | body: JSON.stringify(model)
|
108 | };
|
109 | const response = await serverconnection_1.ServerConnection.makeRequest(url, init, settings);
|
110 | if (response.status !== 200) {
|
111 | const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
|
112 | throw err;
|
113 | }
|
114 | const data = await response.json();
|
115 | validate_1.updateLegacySessionModel(data);
|
116 | validate_1.validateModel(data);
|
117 | return data;
|
118 | }
|
119 | exports.updateSession = updateSession;
|
120 |
|
\ | No newline at end of file |