diff --git a/cloudinary-core/src/main/java/com/cloudinary/Transformation.java b/cloudinary-core/src/main/java/com/cloudinary/Transformation.java index ac725a44..bc9a1042 100644 --- a/cloudinary-core/src/main/java/com/cloudinary/Transformation.java +++ b/cloudinary-core/src/main/java/com/cloudinary/Transformation.java @@ -893,4 +893,13 @@ public T variables(Expression... variables) { public T customFunction(CustomFunction action) { return param("custom_function", action.toString()); } + + /** + * Set a custom pre-function, such as a call to a lambda function or a web-assembly function. + * @param action The custom action to perform, see {@link CustomFunction}. + * @return The transformation for chaining + */ + public T customPreFunction(CustomFunction action) { + return param("custom_function", "pre:" + action.toString()); + } } diff --git a/cloudinary-core/src/test/java/com/cloudinary/test/CloudinaryTest.java b/cloudinary-core/src/test/java/com/cloudinary/test/CloudinaryTest.java index 9e9a6e3a..68af7ef6 100644 --- a/cloudinary-core/src/test/java/com/cloudinary/test/CloudinaryTest.java +++ b/cloudinary-core/src/test/java/com/cloudinary/test/CloudinaryTest.java @@ -1163,6 +1163,13 @@ public void testCustomFunction(){ new Transformation().customFunction(remote("https://df34ra4a.execute-api.us-west-2.amazonaws.com/default/cloudinaryFunction")).generate()); } + @Test + public void testCustomPreFunction(){ + assertEquals("fn_pre:wasm:blur_wasm", new Transformation().customPreFunction(wasm("blur_wasm")).generate()); + assertEquals("fn_pre:remote:aHR0cHM6Ly9kZjM0cmE0YS5leGVjdXRlLWFwaS51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9kZWZhdWx0L2Nsb3VkaW5hcnlGdW5jdGlvbg==", + new Transformation().customPreFunction(remote("https://df34ra4a.execute-api.us-west-2.amazonaws.com/default/cloudinaryFunction")).generate()); + } + public static Map getUrlParameters(URI uri) throws UnsupportedEncodingException { Map params = new HashMap(); for (String param : uri.getRawQuery().split("&")) {