public object CallLambda(object function, dynamic options, dynamic values) { if (!(function is string functionText)) { throw new ApplicationException($"{nameof(CallLambda)}: {nameof(function)} must be a string"); } LambdaRequestOptions lambdaOptions = ProcessLambdaRequestOptions(options); string data = null; var native = ConvertToNative(values); if (native != null) { data = JsonConvert.SerializeObject(native); } var response = lambdaService.Invoke(functionText, data); if (lambdaOptions.KeepResponseAsString) { return(response); } var result = JsonConvert.DeserializeObject <dynamic>(response); return(ScriptHelpers.ToScriptValue(result, ScriptContext)); }
private static LambdaRequestOptions ProcessLambdaRequestOptions(dynamic options) { var lambdaOptions = new LambdaRequestOptions(); if (options == null) { return(lambdaOptions); } var o = (object)options; IDictionary <string, object> convertedValue = o.FromScriptValue() as IDictionary <string, object>; if (convertedValue.ContainsKey("KeepResponseAsString")) { lambdaOptions.KeepResponseAsString = Convert.ToBoolean(convertedValue["KeepResponseAsString"]); } return(lambdaOptions); }