Spaces:
Runtime error
Runtime error
const { promises: fs } = require('fs'); | |
const path = require('path'); | |
const { addOpenAPISpecs } = require('../../app/clients/tools/util/addOpenAPISpecs'); | |
const filterUniquePlugins = (plugins) => { | |
const seen = new Set(); | |
return plugins.filter((plugin) => { | |
const duplicate = seen.has(plugin.pluginKey); | |
seen.add(plugin.pluginKey); | |
return !duplicate; | |
}); | |
}; | |
const isPluginAuthenticated = (plugin) => { | |
if (!plugin.authConfig || plugin.authConfig.length === 0) { | |
return false; | |
} | |
return plugin.authConfig.every((authFieldObj) => { | |
const envValue = process.env[authFieldObj.authField]; | |
if (envValue === 'user_provided') { | |
return false; | |
} | |
return envValue && envValue.trim() !== ''; | |
}); | |
}; | |
const getAvailablePluginsController = async (req, res) => { | |
try { | |
const manifestFile = await fs.readFile( | |
path.join(__dirname, '..', '..', 'app', 'clients', 'tools', 'manifest.json'), | |
'utf8', | |
); | |
const jsonData = JSON.parse(manifestFile); | |
const uniquePlugins = filterUniquePlugins(jsonData); | |
const authenticatedPlugins = uniquePlugins.map((plugin) => { | |
if (isPluginAuthenticated(plugin)) { | |
return { ...plugin, authenticated: true }; | |
} else { | |
return plugin; | |
} | |
}); | |
const plugins = await addOpenAPISpecs(authenticatedPlugins); | |
res.status(200).json(plugins); | |
} catch (error) { | |
res.status(500).json({ message: error.message }); | |
} | |
}; | |
module.exports = { | |
getAvailablePluginsController, | |
}; | |