mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-12-20 19:09:56 +00:00
169 lines
4.0 KiB
JavaScript
169 lines
4.0 KiB
JavaScript
'use strict';
|
|
|
|
import $ from 'jquery';
|
|
|
|
/**
|
|
* @param {String} message
|
|
* @param {*} debug
|
|
* @param {Number} code
|
|
* @constructor
|
|
*/
|
|
const ApiError = function (message, debug, code) {
|
|
let temp = Error.call(this, message);
|
|
temp.name = this.name = 'ApiError';
|
|
|
|
this.stack = temp.stack;
|
|
this.message = temp.message;
|
|
this.debug = debug;
|
|
this.code = code;
|
|
};
|
|
|
|
ApiError.prototype = Object.create(Error.prototype, {
|
|
constructor: {
|
|
value: ApiError,
|
|
writable: true,
|
|
configurable: true
|
|
}
|
|
});
|
|
|
|
/**
|
|
*
|
|
* @param {String} verb
|
|
* @param {String} path
|
|
* @param {Object} [data]
|
|
* @param {Object} [options]
|
|
* @returns {Promise}
|
|
*/
|
|
function fetch (verb, path, data, options) {
|
|
options = options || {};
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
let api_url = '/api/';
|
|
let url = api_url + path;
|
|
|
|
$.ajax({
|
|
url: url,
|
|
data: typeof data === 'object' && data !== null ? JSON.stringify(data) : data,
|
|
type: verb,
|
|
dataType: 'json',
|
|
contentType: 'application/json; charset=UTF-8',
|
|
crossDomain: true,
|
|
timeout: (options.timeout ? options.timeout : 30000),
|
|
xhrFields: {
|
|
withCredentials: true
|
|
},
|
|
|
|
success: function (data, textStatus, response) {
|
|
resolve(response);
|
|
},
|
|
|
|
error: function (xhr, status, error_thrown) {
|
|
let code = 400;
|
|
|
|
if (typeof xhr.responseJSON !== 'undefined' && typeof xhr.responseJSON.error !== 'undefined' && typeof xhr.responseJSON.error.message !== 'undefined') {
|
|
error_thrown = xhr.responseJSON.error.message;
|
|
code = xhr.responseJSON.error.code || 500;
|
|
}
|
|
|
|
reject(new ApiError(error_thrown, xhr.responseText, code));
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
status: function () {
|
|
return fetch('get', '');
|
|
},
|
|
|
|
Hosts: {
|
|
|
|
/**
|
|
* @returns {Promise}
|
|
*/
|
|
getAll: function () {
|
|
return fetch('get', 'hosts');
|
|
},
|
|
|
|
/**
|
|
* @param {Object} data
|
|
* @returns {Promise}
|
|
*/
|
|
create: function (data) {
|
|
return fetch('post', 'hosts', data);
|
|
},
|
|
|
|
/**
|
|
* @param {Object} data
|
|
* @param {String} data._id
|
|
* @returns {Promise}
|
|
*/
|
|
update: function (data) {
|
|
let _id = data._id;
|
|
delete data._id;
|
|
return fetch('put', 'hosts/' + _id, data);
|
|
},
|
|
|
|
/**
|
|
* @param {String} _id
|
|
* @returns {Promise}
|
|
*/
|
|
delete: function (_id) {
|
|
return fetch('delete', 'hosts/' + _id);
|
|
},
|
|
|
|
/**
|
|
* @param {String} _id
|
|
* @returns {Promise}
|
|
*/
|
|
reconfigure: function (_id) {
|
|
return fetch('post', 'hosts/' + _id + '/reconfigure');
|
|
},
|
|
|
|
/**
|
|
* @param {String} _id
|
|
* @returns {Promise}
|
|
*/
|
|
renew: function (_id) {
|
|
return fetch('post', 'hosts/' + _id + '/renew');
|
|
}
|
|
},
|
|
|
|
Access: {
|
|
|
|
/**
|
|
* @returns {Promise}
|
|
*/
|
|
getAll: function () {
|
|
return fetch('get', 'access');
|
|
},
|
|
|
|
/**
|
|
* @param {Object} data
|
|
* @returns {Promise}
|
|
*/
|
|
create: function (data) {
|
|
return fetch('post', 'access', data);
|
|
},
|
|
|
|
/**
|
|
* @param {Object} data
|
|
* @param {String} data._id
|
|
* @returns {Promise}
|
|
*/
|
|
update: function (data) {
|
|
let _id = data._id;
|
|
delete data._id;
|
|
return fetch('put', 'access/' + _id, data);
|
|
},
|
|
|
|
/**
|
|
* @param {String} _id
|
|
* @returns {Promise}
|
|
*/
|
|
delete: function (_id) {
|
|
return fetch('delete', 'access/' + _id);
|
|
}
|
|
}
|
|
};
|