You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.6 KiB
85 lines
2.6 KiB
1 year ago
|
const { R } = require("redbean-node");
|
||
|
const { testRemoteBrowser } = require("./monitor-types/real-browser-monitor-type.js");
|
||
|
class RemoteBrowser {
|
||
|
|
||
|
/**
|
||
|
* Gets remote browser from ID
|
||
|
* @param {number} remoteBrowserID ID of the remote browser
|
||
|
* @param {number} userID ID of the user who created the remote browser
|
||
|
* @returns {Promise<Bean>} Remote Browser
|
||
|
*/
|
||
|
static async get(remoteBrowserID, userID) {
|
||
|
let bean = await R.findOne("remote_browser", " id = ? AND user_id = ? ", [ remoteBrowserID, userID ]);
|
||
|
|
||
|
if (!bean) {
|
||
|
throw new Error("Remote browser not found");
|
||
|
}
|
||
|
|
||
|
return bean;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Save a Remote Browser
|
||
|
* @param {object} remoteBrowser Remote Browser to save
|
||
|
* @param {?number} remoteBrowserID ID of the Remote Browser to update
|
||
|
* @param {number} userID ID of the user who adds the Remote Browser
|
||
|
* @returns {Promise<Bean>} Updated Remote Browser
|
||
|
*/
|
||
|
static async save(remoteBrowser, remoteBrowserID, userID) {
|
||
|
let bean;
|
||
|
|
||
|
if (remoteBrowserID) {
|
||
|
bean = await R.findOne("remote_browser", " id = ? AND user_id = ? ", [ remoteBrowserID, userID ]);
|
||
|
|
||
|
if (!bean) {
|
||
|
throw new Error("Remote browser not found");
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
bean = R.dispense("remote_browser");
|
||
|
}
|
||
|
|
||
|
bean.user_id = userID;
|
||
|
bean.name = remoteBrowser.name;
|
||
|
bean.url = remoteBrowser.url;
|
||
|
|
||
|
await R.store(bean);
|
||
|
|
||
|
return bean;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Delete a Remote Browser
|
||
|
* @param {number} remoteBrowserID ID of the Remote Browser to delete
|
||
|
* @param {number} userID ID of the user who created the Remote Browser
|
||
|
* @returns {Promise<void>}
|
||
|
*/
|
||
|
static async delete(remoteBrowserID, userID) {
|
||
|
let bean = await R.findOne("remote_browser", " id = ? AND user_id = ? ", [ remoteBrowserID, userID ]);
|
||
|
|
||
|
if (!bean) {
|
||
|
throw new Error("Remote Browser not found");
|
||
|
}
|
||
|
|
||
|
// Delete removed remote browser from monitors if exists
|
||
|
await R.exec("UPDATE monitor SET remote_browser = null WHERE remote_browser = ?", [ remoteBrowserID ]);
|
||
|
|
||
|
await R.trash(bean);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Tests the connection to Remote Browser
|
||
|
* @param {object} remoteBrowser Docker host to check for
|
||
|
* @returns {boolean} Returns if connection worked
|
||
|
*/
|
||
|
static async test(remoteBrowser) {
|
||
|
const testResult = await testRemoteBrowser(remoteBrowser.id, remoteBrowser.user_id);
|
||
|
return testResult;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
RemoteBrowser,
|
||
|
};
|