personium-engine
personium-engine copied to clipboard
How about writing Engine Script Handler in module style.
I think it would be nice if I can write Engine Script Handler as module.
For example,
const { something } = require("./submodule");
exports.handler = function(request) {
const result = something.do();
return {
status: 200,
headers: {"Content-Type": "application/json"},
body: [ JSON.stringify(result)],
};
};
Current part of calling function is below.
https://github.com/personium/personium-engine/blob/develop/src/main/java/io/personium/engine/PersoniumEngineContext.java#L367
Object fObj = scope.get("fn_jsgi", scope);
Object result = null;
if (!(fObj instanceof Function)) {
log.warn("fn_jsgi not found");
throw new PersoniumEngineException("Server Error", PersoniumEngineException.STATUSCODE_SERVER_ERROR);
}
Object[] functionArgs = {jsReq.getRequestObject() };
previousPhaseTime = System.currentTimeMillis();
Function f = (Function) fObj;
result = f.call(cx, scope, scope, functionArgs);
I think this issue could be solved with modifing here with below steps.
- load module
- call function
loadedmodule.handler
- return result
Merits
- Easy to test
The script which is written in module style can be import easily from local. - Free from personium specific rules
The rule
the handle function must be written on first place
Demerits
- Incompability
How is this?