Files
jupyterhub/share/jupyterhub/static/js/jhapi.js
2019-07-13 09:35:41 +02:00

161 lines
4.5 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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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", encodeURIComponent(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;
});