UNPKG

4.78 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.updateSession = exports.startSession = exports.getSessionModel = exports.shutdownSession = exports.getSessionUrl = exports.listRunning = exports.SESSION_SERVICE_URL = void 0;
6const serverconnection_1 = require("../serverconnection");
7const coreutils_1 = require("@jupyterlab/coreutils");
8const validate_1 = require("./validate");
9/**
10 * The url for the session service.
11 */
12exports.SESSION_SERVICE_URL = 'api/sessions';
13/**
14 * List the running sessions.
15 */
16async 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}
33exports.listRunning = listRunning;
34/**
35 * Get a session url.
36 */
37function getSessionUrl(baseUrl, id) {
38 return coreutils_1.URLExt.join(baseUrl, exports.SESSION_SERVICE_URL, id);
39}
40exports.getSessionUrl = getSessionUrl;
41/**
42 * Shut down a session by id.
43 */
44async 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}
62exports.shutdownSession = shutdownSession;
63/**
64 * Get a full session model from the server by session id string.
65 */
66async 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}
78exports.getSessionModel = getSessionModel;
79/**
80 * Create a new session, or return an existing session if the session path
81 * already exists.
82 */
83async 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}
99exports.startSession = startSession;
100/**
101 * Send a PATCH to the server, updating the session path or the kernel.
102 */
103async 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}
119exports.updateSession = updateSession;
120//# sourceMappingURL=restapi.js.map
\No newline at end of file