public override async Task <IApiResponse> ExecuteAsync(IApiRequest request) { if (String.IsNullOrEmpty(_command.Script)) { throw new RequestModelException($"'script' must be specified for script command"); } String code = await _reader.ReadTextFileAsync(_command.Path, _command.Script.AddExtension("js")); _script.SetCurrentDirectory(_command.Path); var args = new ExpandoObject(); if (request.Body != null) { args.Set("body", request.Body); } if (request.Query != null) { args.Set("query", request.Query); } if (!String.IsNullOrEmpty(_command.Id)) { args.Set("id", _command.Id); } var prms = _command.Parameters.Clone(null); if (request.UserId != 0) { prms.Set("UserId", request.UserId); } if (request.TenantId != null) { prms.Set("TenantId", request.TenantId); } if (!String.IsNullOrEmpty(request.Segment)) { prms.Set("Segment", request.Segment); } var obj = _script.Execute(code, prms, args); return(new ApiResponse() { ContentType = MimeTypes.Application.Json, Body = JsonConvert.SerializeObject(Wrap(obj), JsonHelpers.CompactSerializerSettings) }); }
public async Task <ServerCommandResult> Execute(RequestCommand cmd, ExpandoObject dataToExec) { if (String.IsNullOrEmpty(cmd.file)) { throw new RequestModelException($"'file' must be specified for command '{cmd.command}'"); } String code = await _reader.ReadTextFileAsync(cmd.Path, cmd.file.AddExtension("js")); if (code == null) { throw new RequestModelException($"File not found '{cmd.file}'"); } _engine.SetCurrentDirectory(cmd.Path); var retval = _engine.Execute(code, dataToExec, cmd.args); return(new ServerCommandResult() { Data = JsonConvert.SerializeObject(retval, JsonHelpers.StandardSerializerSettings) }); }