From 095a5dd44cf6510f68442e246c9185f477798900 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 30 May 2023 07:27:45 +0200 Subject: [PATCH 1/2] Use Base64.NO_WRAP to avoid unexpected char errors in Apollo with OkHttp 4 --- .../java/io/sentry/apollo3/SentryApollo3HttpInterceptor.kt | 2 +- .../main/java/io/sentry/apollo3/SentryApollo3Interceptor.kt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3HttpInterceptor.kt b/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3HttpInterceptor.kt index 616a5e1aa84..736fd84256b 100644 --- a/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3HttpInterceptor.kt +++ b/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3HttpInterceptor.kt @@ -125,7 +125,7 @@ class SentryApollo3HttpInterceptor @JvmOverloads constructor(private val hub: IH private fun decodeHeaderValue(request: HttpRequest, headerName: String): String? { return request.valueForHeader(headerName)?.let { try { - String(Base64.decode(it, Base64.DEFAULT)) + String(Base64.decode(it, Base64.NO_WRAP)) } catch (e: IllegalArgumentException) { hub.options.logger.log(SentryLevel.ERROR, "Error decoding internal apolloHeader $headerName", e) return null diff --git a/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3Interceptor.kt b/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3Interceptor.kt index 6633b7089ac..d4b98ffc425 100644 --- a/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3Interceptor.kt +++ b/sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3Interceptor.kt @@ -23,11 +23,11 @@ class SentryApollo3Interceptor : ApolloInterceptor { chain: ApolloInterceptorChain ): Flow> { val builder = request.newBuilder() - .addHttpHeader(SENTRY_APOLLO_3_OPERATION_TYPE, Base64.encodeToString(operationType(request).toByteArray(), Base64.DEFAULT)) - .addHttpHeader(SENTRY_APOLLO_3_OPERATION_NAME, Base64.encodeToString(request.operation.name().toByteArray(), Base64.DEFAULT)) + .addHttpHeader(SENTRY_APOLLO_3_OPERATION_TYPE, Base64.encodeToString(operationType(request).toByteArray(), Base64.NO_WRAP)) + .addHttpHeader(SENTRY_APOLLO_3_OPERATION_NAME, Base64.encodeToString(request.operation.name().toByteArray(), Base64.NO_WRAP)) request.scalarAdapters?.let { - builder.addHttpHeader(SENTRY_APOLLO_3_VARIABLES, Base64.encodeToString(request.operation.variables(it).valueMap.toString().toByteArray(), Base64.DEFAULT)) + builder.addHttpHeader(SENTRY_APOLLO_3_VARIABLES, Base64.encodeToString(request.operation.variables(it).valueMap.toString().toByteArray(), Base64.NO_WRAP)) } return chain.proceed(builder.build()) } From f8da4537f1bc11aadd8c009090e1dd9ce3e920f4 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 30 May 2023 12:04:37 +0200 Subject: [PATCH 2/2] Add changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ba3687f9c9..15c038b3cd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ - Add SentryWrapper for Callable and Supplier Interface ([#2720](https://github.com/getsentry/sentry-java/pull/2720)) +### Fixes + +- Use Base64.NO_WRAP to avoid unexpected char errors in Apollo ([#2745](https://github.com/getsentry/sentry-java/pull/2745)) + ## 6.20.0 ### Features