Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
*
* Util class for Composer actions.
*
*/
const composer = require('@ibm-functions/composer');
const composer_utils = require('./composer_utils');
// Actions
const authentication = require('./actions/authentication/index.js').main,
configuration = require('./actions/configuration/index.js').main,
options = require('./actions/options/index.js').main,
post_processing = require('./actions/post_processing/index.js').main,
start_session = require('./actions/start_session/index.js').main;
const app = composer.if(
composer_utils.isOptionsCall,
options,
function(args) {
let metrics_aggregator = composer_utils.MetricsAggregator();
return composer_utils.TimeOutPromise(
Promise.resolve(
composer.sequence(
composer_utils.addMetricAggregator(metrics_aggregator, authentication),
composer_utils.addMetricAggregator(metrics_aggregator, configuration),
composer_utils.addMetricAggregator(metrics_aggregator, start_session),
composer_utils.addMetricAggregator(metrics_aggregator, post_processing)
),
args.origin,
metrics_aggregator,
args.max_seconds * 1000
)
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// require the composer module
const composer = require('@ibm-functions/composer')
// define the composition
const composition = composer.if(
composer.action('authenticate', { action: function ({ password }) { return { value: password === 'abc123' } } }),
composer.action('success', { action: function () { return { message: 'success' } } }),
composer.action('failure', { action: function () { return { message: 'failure' } } }))
// instantiate OpenWhisk client
const wsk = composer.util.openwhisk({ ignore_certs: true })
wsk.compositions.deploy({ name: 'demo', composition }) // deploy composition
.then(() => wsk.actions.invoke({ name: 'demo', params: { password: 'abc123' }, blocking: true })) // invoke composition
.then(({ response }) => console.log(JSON.stringify(response.result, null, 4)), console.error)
.then( ([{fsm:taskFSM}, {fsm:conditionFSM}, elseBits]) => {
// make the FSM
const fsm = elseBits ? composer.if(conditionFSM, taskFSM, elseBits.fsm) : composer.if(conditionFSM, taskFSM)
// we were asked to create a new action for this FSM
return create({ name, fsm, wsk, commandTree, execOptions, type })
})
}