serverless-aliyun-function-compute-wnj
Version:
Provider plugin for the Serverless Framework v1.x which adds support for Aliyun Function Compute
63 lines (53 loc) • 1.48 kB
JavaScript
'use strict';
const BbPromise = require('bluebird');
const util = require('util');
module.exports = {
invokeFunction() {
return BbPromise.bind(this)
.then(this.invoke)
.then(this.printResult, this.handleError);
},
invoke() {
const serviceName = this.provider.getServiceName();
const func = this.options.function;
const funcObject = this.serverless.service.getFunction(func);
const functionName = funcObject.name;
let data;
if (this.options.path) {
data = this.getDataFromPath(this.options.path);
} else if (this.options.data) {
data = this.getDataFromInput(this.options.data);
}
let displayedData = '';
if (data !== undefined) {
displayedData = ' with ' + util.inspect(data);
if (displayedData.indexOf('\n') !== -1) {
displayedData = '\n' + displayedData;
}
}
this.serverless.cli.log(
`Invoking ${functionName} of ${serviceName}${displayedData}`
);
return this.provider.invokeFunction(serviceName, functionName, data);
},
printResult(result) {
this.serverless.cli.log(result);
return BbPromise.resolve();
},
handleError(err) {
this.serverless.cli.log(err);
return BbPromise.resolve();
},
getDataFromInput(input) {
let data;
try {
data = JSON.parse(input);
} catch(e) {
data = input;
}
return data;
},
getDataFromPath(path) {
return this.serverless.utils.readFileSync(path);
}
};