registerAction method
Registers an action in this Azure function.
cmd
a action/command name.schema
a validation schema to validate received parameters.action
an action function that is called when action is invoked.
Implementation
void registerAction(String? cmd, Schema? schema,
Future Function(Map<String, dynamic>) action) {
if (cmd == null || cmd.isEmpty) {
throw UnknownException(null, 'NO_COMMAND', 'Missing command');
}
// ignore: unnecessary_null_comparison
if (action == null) {
throw UnknownException(null, 'NO_ACTION', 'Missing action');
}
if (actions[cmd] != null) {
throw UnknownException(
null, 'DUPLICATED_ACTION', '$cmd action already exists');
}
// Hack!!! Wrapping action to preserve prototyping context
Future actionCurl(Map<String, dynamic> params) async {
// Perform validation
if (schema != null) {
var traceId = getTraceId(params);
var err = schema.validateAndReturnException(traceId, params, false);
if (err != null) {
return err;
}
}
// Todo: perform verification?
return action(params);
}
actions[cmd] = actionCurl;
}