From 8ba7126b5e1cc4078a432b67dfc2e42fb1ca9084 Mon Sep 17 00:00:00 2001 From: Xinsong Cui Date: Fri, 24 Oct 2025 15:23:57 -0400 Subject: [PATCH] add base64 url encode --- runtime/runtime-core/api/runtime-core.api | 1 + .../aws/smithy/kotlin/runtime/text/encoding/Base64.kt | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/runtime/runtime-core/api/runtime-core.api b/runtime/runtime-core/api/runtime-core.api index 0e8f85de3a..0fcdaa3e89 100644 --- a/runtime/runtime-core/api/runtime-core.api +++ b/runtime/runtime-core/api/runtime-core.api @@ -2163,6 +2163,7 @@ public final class aws/smithy/kotlin/runtime/text/encoding/Base64Kt { public static final fun encodeBase64 (Ljava/lang/String;)Ljava/lang/String; public static final fun encodeBase64 ([B)[B public static final fun encodeBase64String ([B)Ljava/lang/String; + public static final fun encodeBase64Url ([B)Ljava/lang/String; } public final class aws/smithy/kotlin/runtime/text/encoding/Encodable { diff --git a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/text/encoding/Base64.kt b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/text/encoding/Base64.kt index 9af6977d29..193616eeeb 100644 --- a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/text/encoding/Base64.kt +++ b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/text/encoding/Base64.kt @@ -53,6 +53,15 @@ public fun String.encodeBase64(): String = encodeToByteArray().encodeBase64().de */ public fun ByteArray.encodeBase64String(): String = encodeBase64().decodeToString() +/** + * Encode [ByteArray] in base64url format (RFC 4648) as a [String] + */ +public fun ByteArray.encodeBase64Url(): String = + encodeBase64String() + .replace('+', '-') + .replace('/', '_') + .trimEnd('=') + /** * Encode [ByteArray] in base64 format and UTF-8 character encoding. */