mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Use more async funcs in runtime/lib/api to reduce Promise creation
This commit is contained in:
@@ -64,64 +64,57 @@ var api = module.exports = {
|
||||
* @return {Promise<Object>} - the runtime settings
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
getRuntimeSettings: function(opts) {
|
||||
return new Promise(function(resolve,reject) {
|
||||
try {
|
||||
var safeSettings = {
|
||||
httpNodeRoot: runtime.settings.httpNodeRoot||"/",
|
||||
version: runtime.settings.version
|
||||
}
|
||||
if (opts.user) {
|
||||
safeSettings.user = {}
|
||||
var props = ["anonymous","username","image","permissions"];
|
||||
props.forEach(prop => {
|
||||
if (opts.user.hasOwnProperty(prop)) {
|
||||
safeSettings.user[prop] = opts.user[prop];
|
||||
}
|
||||
})
|
||||
getRuntimeSettings: async function(opts) {
|
||||
var safeSettings = {
|
||||
httpNodeRoot: runtime.settings.httpNodeRoot||"/",
|
||||
version: runtime.settings.version
|
||||
}
|
||||
if (opts.user) {
|
||||
safeSettings.user = {}
|
||||
var props = ["anonymous","username","image","permissions"];
|
||||
props.forEach(prop => {
|
||||
if (opts.user.hasOwnProperty(prop)) {
|
||||
safeSettings.user[prop] = opts.user[prop];
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (!runtime.settings.disableEditor) {
|
||||
safeSettings.context = runtime.nodes.listContextStores();
|
||||
if (!runtime.settings.disableEditor) {
|
||||
safeSettings.context = runtime.nodes.listContextStores();
|
||||
|
||||
if (util.isArray(runtime.settings.paletteCategories)) {
|
||||
safeSettings.paletteCategories = runtime.settings.paletteCategories;
|
||||
}
|
||||
|
||||
if (runtime.settings.flowFilePretty) {
|
||||
safeSettings.flowFilePretty = runtime.settings.flowFilePretty;
|
||||
}
|
||||
|
||||
if (!runtime.nodes.paletteEditorEnabled()) {
|
||||
safeSettings.editorTheme = safeSettings.editorTheme || {};
|
||||
safeSettings.editorTheme.palette = safeSettings.editorTheme.palette || {};
|
||||
safeSettings.editorTheme.palette.editable = false;
|
||||
}
|
||||
if (runtime.storage.projects) {
|
||||
var activeProject = runtime.storage.projects.getActiveProject();
|
||||
if (activeProject) {
|
||||
safeSettings.project = activeProject;
|
||||
} else if (runtime.storage.projects.flowFileExists()) {
|
||||
safeSettings.files = {
|
||||
flow: runtime.storage.projects.getFlowFilename(),
|
||||
credentials: runtime.storage.projects.getCredentialsFilename()
|
||||
}
|
||||
}
|
||||
safeSettings.git = {
|
||||
globalUser: runtime.storage.projects.getGlobalGitUser()
|
||||
}
|
||||
}
|
||||
|
||||
safeSettings.flowEncryptionType = runtime.nodes.getCredentialKeyType();
|
||||
runtime.settings.exportNodeSettings(safeSettings);
|
||||
}
|
||||
|
||||
|
||||
resolve(safeSettings);
|
||||
}catch(err) {
|
||||
console.log(err);
|
||||
if (util.isArray(runtime.settings.paletteCategories)) {
|
||||
safeSettings.paletteCategories = runtime.settings.paletteCategories;
|
||||
}
|
||||
});
|
||||
|
||||
if (runtime.settings.flowFilePretty) {
|
||||
safeSettings.flowFilePretty = runtime.settings.flowFilePretty;
|
||||
}
|
||||
|
||||
if (!runtime.nodes.paletteEditorEnabled()) {
|
||||
safeSettings.editorTheme = safeSettings.editorTheme || {};
|
||||
safeSettings.editorTheme.palette = safeSettings.editorTheme.palette || {};
|
||||
safeSettings.editorTheme.palette.editable = false;
|
||||
}
|
||||
if (runtime.storage.projects) {
|
||||
var activeProject = runtime.storage.projects.getActiveProject();
|
||||
if (activeProject) {
|
||||
safeSettings.project = activeProject;
|
||||
} else if (runtime.storage.projects.flowFileExists()) {
|
||||
safeSettings.files = {
|
||||
flow: runtime.storage.projects.getFlowFilename(),
|
||||
credentials: runtime.storage.projects.getCredentialsFilename()
|
||||
}
|
||||
}
|
||||
safeSettings.git = {
|
||||
globalUser: runtime.storage.projects.getGlobalGitUser()
|
||||
}
|
||||
}
|
||||
|
||||
safeSettings.flowEncryptionType = runtime.nodes.getCredentialKeyType();
|
||||
runtime.settings.exportNodeSettings(safeSettings);
|
||||
}
|
||||
|
||||
return safeSettings;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -132,14 +125,14 @@ var api = module.exports = {
|
||||
* @return {Promise<Object>} - the user settings
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
getUserSettings: function(opts) {
|
||||
getUserSettings: async function(opts) {
|
||||
var username;
|
||||
if (!opts.user || opts.user.anonymous) {
|
||||
username = '_';
|
||||
} else {
|
||||
username = opts.user.username;
|
||||
}
|
||||
return Promise.resolve(runtime.settings.getUserSettings(username)||{});
|
||||
return runtime.settings.getUserSettings(username)||{};
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -151,32 +144,30 @@ var api = module.exports = {
|
||||
* @return {Promise<Object>} - the user settings
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
updateUserSettings: function(opts) {
|
||||
updateUserSettings: async function(opts) {
|
||||
var username;
|
||||
if (!opts.user || opts.user.anonymous) {
|
||||
username = '_';
|
||||
} else {
|
||||
username = opts.user.username;
|
||||
}
|
||||
return new Promise(function(resolve,reject) {
|
||||
var currentSettings = runtime.settings.getUserSettings(username)||{};
|
||||
currentSettings = extend(currentSettings, opts.settings);
|
||||
try {
|
||||
runtime.settings.setUserSettings(username, currentSettings).then(function() {
|
||||
runtime.log.audit({event: "settings.update",username:username}, opts.req);
|
||||
return resolve();
|
||||
}).catch(function(err) {
|
||||
runtime.log.audit({event: "settings.update",username:username,error:err.code||"unexpected_error",message:err.toString()}, opts.req);
|
||||
err.status = 400;
|
||||
return reject(err);
|
||||
});
|
||||
} catch(err) {
|
||||
runtime.log.warn(runtime.log._("settings.user-not-available",{message:runtime.log._("settings.not-available")}));
|
||||
var currentSettings = runtime.settings.getUserSettings(username)||{};
|
||||
currentSettings = extend(currentSettings, opts.settings);
|
||||
try {
|
||||
return runtime.settings.setUserSettings(username, currentSettings).then(function() {
|
||||
runtime.log.audit({event: "settings.update",username:username}, opts.req);
|
||||
return;
|
||||
}).catch(function(err) {
|
||||
runtime.log.audit({event: "settings.update",username:username,error:err.code||"unexpected_error",message:err.toString()}, opts.req);
|
||||
err.status = 400;
|
||||
return reject(err);
|
||||
}
|
||||
});
|
||||
throw err;
|
||||
});
|
||||
} catch(err) {
|
||||
runtime.log.warn(runtime.log._("settings.user-not-available",{message:runtime.log._("settings.not-available")}));
|
||||
runtime.log.audit({event: "settings.update",username:username,error:err.code||"unexpected_error",message:err.toString()}, opts.req);
|
||||
err.status = 400;
|
||||
throw err;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -187,15 +178,12 @@ var api = module.exports = {
|
||||
* @return {Promise<Object>} - the user's ssh keys
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
getUserKeys: function(opts) {
|
||||
return new Promise(function(resolve,reject) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
runtime.storage.projects.ssh.listSSHKeys(username).then(function(list) {
|
||||
return resolve(list);
|
||||
}).catch(function(err) {
|
||||
err.status = 400;
|
||||
return reject(err);
|
||||
});
|
||||
getUserKeys: async function(opts) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
return runtime.storage.projects.ssh.listSSHKeys(username).catch(function(err) {
|
||||
err.status = 400;
|
||||
throw err;
|
||||
return reject(err);
|
||||
});
|
||||
},
|
||||
|
||||
@@ -208,23 +196,23 @@ var api = module.exports = {
|
||||
* @return {Promise<String>} - the user's ssh public key
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
getUserKey: function(opts) {
|
||||
return new Promise(function(resolve,reject) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
// console.log('username:', username);
|
||||
runtime.storage.projects.ssh.getSSHKey(username, opts.id).then(function(data) {
|
||||
if (data) {
|
||||
return resolve(data);
|
||||
} else {
|
||||
var err = new Error("Key not found");
|
||||
err.code = "not_found";
|
||||
err.status = 404;
|
||||
return reject(err);
|
||||
}
|
||||
}).catch(function(err) {
|
||||
getUserKey: async function(opts) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
// console.log('username:', username);
|
||||
return runtime.storage.projects.ssh.getSSHKey(username, opts.id).then(function(data) {
|
||||
if (data) {
|
||||
return data;
|
||||
} else {
|
||||
var err = new Error("Key not found");
|
||||
err.code = "not_found";
|
||||
err.status = 404;
|
||||
throw err;
|
||||
}
|
||||
}).catch(function(err) {
|
||||
if (!err.status) {
|
||||
err.status = 400;
|
||||
return reject(err);
|
||||
});
|
||||
}
|
||||
throw err;
|
||||
});
|
||||
},
|
||||
|
||||
@@ -240,15 +228,11 @@ var api = module.exports = {
|
||||
* @return {Promise<String>} - the id of the generated key
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
generateUserKey: function(opts) {
|
||||
return new Promise(function(resolve,reject) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
runtime.storage.projects.ssh.generateSSHKey(username, opts).then(function(name) {
|
||||
return resolve(name);
|
||||
}).catch(function(err) {
|
||||
err.status = 400;
|
||||
return reject(err);
|
||||
});
|
||||
generateUserKey: async function(opts) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
return runtime.storage.projects.ssh.generateSSHKey(username, opts).catch(function(err) {
|
||||
err.status = 400;
|
||||
throw err;
|
||||
});
|
||||
},
|
||||
|
||||
@@ -261,16 +245,11 @@ var api = module.exports = {
|
||||
* @return {Promise} - resolves when deleted
|
||||
* @memberof @node-red/runtime_settings
|
||||
*/
|
||||
removeUserKey: function(opts) {
|
||||
return new Promise(function(resolve,reject) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
runtime.storage.projects.ssh.deleteSSHKey(username, opts.id).then(function() {
|
||||
return resolve();
|
||||
}).catch(function(err) {
|
||||
err.status = 400;
|
||||
return reject(err);
|
||||
});
|
||||
removeUserKey: async function(opts) {
|
||||
var username = getSSHKeyUsername(opts.user);
|
||||
return runtime.storage.projects.ssh.deleteSSHKey(username, opts.id).catch(function(err) {
|
||||
err.status = 400;
|
||||
throw err;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user