Skip to content

Commit 9842304

Browse files
authored
Merge pull request #847 from camunda/846-encode-base64
feat: add built-in function to encode a string as base64
2 parents c90ad66 + cdc515a commit 9842304

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ package org.camunda.feel.impl.builtin
1919
import com.fasterxml.uuid.{EthernetAddress, Generators}
2020
import org.camunda.feel.impl.builtin.BuiltinFunction.builtinFunction
2121
import org.camunda.feel.syntaxtree.{ValBoolean, ValError, ValList, ValNumber, ValString}
22-
22+
import java.util.Base64
23+
import java.nio.charset.StandardCharsets
2324
import java.util.regex.Pattern
2425
import scala.util.Try
2526

@@ -42,7 +43,8 @@ object StringBuiltinFunctions {
4243
"split" -> List(splitFunction),
4344
"extract" -> List(extractFunction),
4445
"trim" -> List(trimFunction),
45-
"uuid" -> List(uuidFunction)
46+
"uuid" -> List(uuidFunction),
47+
"to base64" -> List(toBase64Function)
4648
)
4749

4850
private def substringFunction = builtinFunction(
@@ -274,4 +276,14 @@ object StringBuiltinFunctions {
274276
ValString(generator.generate.toString())
275277
}
276278
)
279+
280+
private def toBase64Function =
281+
builtinFunction(
282+
params = List("value"),
283+
invoke = { case List(ValString(value)) =>
284+
val bytes = value.getBytes(StandardCharsets.UTF_8)
285+
ValString(Base64.getEncoder.encodeToString(bytes))
286+
}
287+
)
288+
277289
}

src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,11 @@ class BuiltinStringFunctionsTest extends AnyFlatSpec with Matchers with FeelInte
173173

174174
eval(" string length(uuid()) ") should be(ValNumber(36))
175175
}
176+
177+
"A to base64() function" should "return a string encoded as base64" in {
178+
179+
eval(""" to base64("FEEL") """) should be(ValString("RkVFTA=="))
180+
181+
eval(""" to base64(value: "Camunda") """) should be(ValString("Q2FtdW5kYQ=="))
182+
}
176183
}

0 commit comments

Comments
 (0)