161 lines
4.3 KiB
JavaScript
161 lines
4.3 KiB
JavaScript
// Copyright (c) Jupyter Development Team.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
|
|
define(["jquery", "utils"], function ($, utils) {
|
|
"use strict";
|
|
|
|
var JHAPI = function (base_url) {
|
|
this.base_url = base_url;
|
|
};
|
|
|
|
var default_options = {
|
|
type: "GET",
|
|
contentType: "application/json",
|
|
cache: false,
|
|
dataType: "json",
|
|
processData: false,
|
|
success: null,
|
|
error: utils.ajax_error_dialog,
|
|
};
|
|
|
|
var update = function (d1, d2) {
|
|
$.map(d2, function (i, key) {
|
|
d1[key] = d2[key];
|
|
});
|
|
return d1;
|
|
};
|
|
|
|
var ajax_defaults = function (options) {
|
|
var d = {};
|
|
update(d, default_options);
|
|
update(d, options);
|
|
return d;
|
|
};
|
|
|
|
JHAPI.prototype.api_request = function (path, options) {
|
|
options = options || {};
|
|
options = ajax_defaults(options || {});
|
|
var url = utils.url_path_join(
|
|
this.base_url,
|
|
"api",
|
|
utils.encode_uri_components(path),
|
|
);
|
|
$.ajax(url, options);
|
|
};
|
|
|
|
JHAPI.prototype.start_server = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "POST", dataType: null });
|
|
this.api_request(utils.url_path_join("users", user, "server"), options);
|
|
};
|
|
|
|
JHAPI.prototype.start_named_server = function (user, server_name, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "POST", dataType: null });
|
|
this.api_request(
|
|
utils.url_path_join("users", user, "servers", server_name),
|
|
options,
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.stop_server = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "DELETE", dataType: null });
|
|
this.api_request(utils.url_path_join("users", user, "server"), options);
|
|
};
|
|
|
|
JHAPI.prototype.stop_named_server = function (user, server_name, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "DELETE", dataType: null });
|
|
this.api_request(
|
|
utils.url_path_join("users", user, "servers", server_name),
|
|
options,
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.delete_named_server = function (user, server_name, options) {
|
|
options = options || {};
|
|
options.data = JSON.stringify({ remove: true });
|
|
return this.stop_named_server(user, server_name, options);
|
|
};
|
|
|
|
JHAPI.prototype.list_users = function (options) {
|
|
this.api_request("users", options);
|
|
};
|
|
|
|
JHAPI.prototype.get_user = function (user, options) {
|
|
this.api_request(utils.url_path_join("users", user), options);
|
|
};
|
|
|
|
JHAPI.prototype.add_users = function (usernames, userinfo, options) {
|
|
options = options || {};
|
|
var data = update(userinfo, { usernames: usernames });
|
|
options = update(options, {
|
|
type: "POST",
|
|
dataType: null,
|
|
data: JSON.stringify(data),
|
|
});
|
|
|
|
this.api_request("users", options);
|
|
};
|
|
|
|
JHAPI.prototype.edit_user = function (user, userinfo, options) {
|
|
options = options || {};
|
|
options = update(options, {
|
|
type: "PATCH",
|
|
dataType: null,
|
|
data: JSON.stringify(userinfo),
|
|
});
|
|
|
|
this.api_request(utils.url_path_join("users", user), options);
|
|
};
|
|
|
|
JHAPI.prototype.admin_access = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, {
|
|
type: "POST",
|
|
dataType: null,
|
|
});
|
|
|
|
this.api_request(
|
|
utils.url_path_join("users", user, "admin-access"),
|
|
options,
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.delete_user = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "DELETE", dataType: null });
|
|
this.api_request(utils.url_path_join("users", user), options);
|
|
};
|
|
|
|
JHAPI.prototype.request_token = function (user, props, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "POST" });
|
|
if (props) {
|
|
options.data = JSON.stringify(props);
|
|
}
|
|
this.api_request(utils.url_path_join("users", user, "tokens"), options);
|
|
};
|
|
|
|
JHAPI.prototype.revoke_token = function (user, token_id, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "DELETE" });
|
|
this.api_request(
|
|
utils.url_path_join("users", user, "tokens", token_id),
|
|
options,
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.shutdown_hub = function (data, options) {
|
|
options = options || {};
|
|
options = update(options, { type: "POST" });
|
|
if (data) {
|
|
options.data = JSON.stringify(data);
|
|
}
|
|
this.api_request("shutdown", options);
|
|
};
|
|
|
|
return JHAPI;
|
|
});
|