@Override public Optional<InputEvent> tryCoerceParam(InvocationContext currentContext, int arg, InputEvent input, MethodWrapper method) { if (method.getParamType(arg).getParameterClass().equals(InputEvent.class)) { return Optional.of(input); } else { return Optional.empty(); } } }
@Override public Optional<OutputEvent> wrapFunctionResult(InvocationContext ctx, MethodWrapper method, Object value) { if (method.getReturnType().getParameterClass().equals(OutputEvent.class)) { return Optional.of((OutputEvent) value); } else { return Optional.empty(); } } }
@Override public Optional<OutputEvent> wrapFunctionResult(InvocationContext ctx, MethodWrapper method, Object value) { if (method.getReturnType().getParameterClass().equals(String.class)) { return Optional.of(OutputEvent.fromBytes(((String) value).getBytes(), OutputEvent.Status.Success, "text/plain")); } else { return Optional.empty(); } }
public Optional<OutputEvent> wrapFunctionResult(InvocationContext ctx, MethodWrapper method, Object value) { if (method.getReturnType().getParameterClass().equals(byte[].class)) { return Optional.of(OutputEvent.fromBytes(((byte[]) value), OutputEvent.Status.Success, "application/octet-stream")); } else { return Optional.empty(); } }
@Override public Optional<OutputEvent> wrapFunctionResult(InvocationContext ctx, MethodWrapper method, Object value) { if (method.getReturnType().getParameterClass().equals(Void.class)) { return Optional.of(OutputEvent.emptyResult(OutputEvent.Status.Success)); } else { return Optional.empty(); } } }
@Override public Optional<Object> tryCoerceParam(InvocationContext currentContext, int arg, InputEvent input, MethodWrapper method) { Class<?> paramClass = method.getParamType(arg).getParameterClass(); if (paramClass.equals(RuntimeContext.class)) { return Optional.of(currentContext.getRuntimeContext()); } else if (paramClass.equals(InvocationContext.class)) { return Optional.of(currentContext); } else if (paramClass.equals(HTTPGatewayContext.class)) { return Optional.of(new FunctionHTTPGatewayContext(currentContext)); } else { return Optional.empty(); } } }
@Override public Optional<String> tryCoerceParam(InvocationContext currentContext, int param, InputEvent input, MethodWrapper method) { if (method.getParamType(param).getParameterClass().equals(String.class)) { return Optional.of( input.consumeBody(is -> { try { return IOUtils.toString(is, StandardCharsets.UTF_8); } catch (IOException e) { throw new RuntimeException("Error reading input as string"); } })); } else { return Optional.empty(); } } }
@Override public Optional<byte[]> tryCoerceParam(InvocationContext currentContext, int arg, InputEvent input, MethodWrapper method) { if (method.getParamType(arg).getParameterClass().equals(byte[].class)) { return Optional.of( input.consumeBody(is -> { try { return toByteArray(is); } catch (IOException e) { throw new RuntimeException("Error reading input as bytes", e); } })); } else { return Optional.empty(); } } }