You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.1 KiB
JavaScript

"use strict";
let { PythonShell } = require("python-shell");
/**
* Read the documentation (https://strapi.io/documentation/developer-docs/latest/development/backend-customization.html#core-controllers)
* to customize this controller
*/
module.exports = {
async findOne(ctx) {
const { name } = ctx.params;
const entity = await strapi.services.function.findOne({ name });
if (entity) {
let args = [];
entity.input.forEach((input) => {
args.push(ctx.request.query[input.name] || input.defaultValue || "");
});
let script = () => {
return new Promise((resolve, reject) => {
PythonShell.run(
`./public${entity.script.url}`,
{ args: [...args] },
function (err, results) {
if (err) throw err;
resolve(results);
}
);
});
};
let result = await script();
let message = {};
entity.output.forEach((out, index) => {
message[out.name] = result[index];
});
return message;
}
return entity;
},
};