diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index d44b30d3..b53482c3 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -41,6 +41,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import java.util.Base64; public enum FixMethod implements FixFunction { // checkstyle-disable-line ClassDataAbstractionCoupling|ClassFanOutComplexity @@ -626,6 +627,13 @@ public void apply(final Metafix metafix, final Record record, final List ); } }, + to_base64 { + @Override + public void apply(final Metafix metafix, final Record record, final List params, + final Map options) { + record.transform(params.get(0), s -> Base64.getEncoder().encodeToString(s.getBytes())); + } + }, to_json { @Override public void apply(final Metafix metafix, final Record record, final List params, final Map options) { diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java index c48f8869..9ddd0e17 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java @@ -4062,4 +4062,24 @@ public void shouldUriEncodePathSegmentWithoutSafeChars() { ); } + @Test + public void shouldTransformStringToBase64() { + MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "to_base64('data.title')"), + i -> { + i.startRecord("1"); + i.startEntity("data"); + i.literal("title", "this-is-a-test"); + i.endEntity(); + i.endRecord(); + }, + o -> { + o.get().startRecord("1"); + o.get().startEntity("data"); + o.get().literal("title", "dGhpcy1pcy1hLXRlc3Q="); + o.get().endEntity(); + o.get().endRecord(); + }); + } + }