[PR #4236] [CLOSED] [PM-14526] Convert network response JSON keys to camel case #4793

Closed
opened 2025-11-26 23:49:50 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/4236
Author: @SaintPatrck
Created: 11/5/2024
Status: Closed

Base: release/hotfix-v2024.11.1Head: hotfix-v2024.11.1/transform-json-keys


📝 Commits (1)

  • dafa131 Add interceptor to convert network response JSON keys to camel case

📊 Changes

22 files changed (+357 additions, -187 deletions)

View changed files

📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/GetTokenResponseJson.kt (+22 -42)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/KeyConnectorUserDecryptionOptionsJson.kt (+1 -1)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/MasterPasswordPolicyOptionsJson.kt (+7 -7)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/RefreshTokenResponseJson.kt (+4 -4)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/RegisterResponseJson.kt (+3 -11)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/SendVerificationEmailResponseJson.kt (+2 -10)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/TrustedDeviceUserDecryptionOptionsJson.kt (+5 -5)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/UserDecryptionOptionsJson.kt (+3 -3)
📝 app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt (+2 -2)
📝 app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/di/PlatformNetworkModule.kt (+9 -0)
app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/interceptor/ResponseJsonKeyTransformerInterceptor.kt (+37 -0)
📝 app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/retrofit/RetrofitsImpl.kt (+3 -0)
📝 app/src/main/java/com/x8bit/bitwarden/data/platform/util/JsonExtensions.kt (+52 -0)
📝 app/src/test/java/com/x8bit/bitwarden/data/auth/datasource/disk/AuthDiskSourceTest.kt (+9 -9)
📝 app/src/test/java/com/x8bit/bitwarden/data/auth/datasource/network/service/IdentityServiceTest.kt (+48 -80)
📝 app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt (+0 -3)
📝 app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/interceptor/AuthTokenInterceptorTest.kt (+1 -1)
app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/interceptor/ResponseJsonKeyNameInterceptorTest.kt (+99 -0)
📝 app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/retrofit/RetrofitsTest.kt (+15 -8)
📝 app/src/test/java/com/x8bit/bitwarden/data/platform/util/JsonExtensionsTest.kt (+30 -0)

...and 2 more files

📄 Description

🎟️ Tracking

PM-14583

📔 Objective

Adds an OkHttp interceptor, ResponseJsonKeyNameInterceptor, which converts all JSON object keys in network responses to camelCase. This addresses inconsistencies in key casing from the server.

Includes unit tests for the interceptor to ensure it handles various scenarios, such as different casing styles, empty or null responses, invalid JSON, and non-JSON content types.

📷 Screenshots

Header Header

Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed
    issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/bitwarden/android/pull/4236 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 11/5/2024 **Status:** ❌ Closed **Base:** `release/hotfix-v2024.11.1` ← **Head:** `hotfix-v2024.11.1/transform-json-keys` --- ### 📝 Commits (1) - [`dafa131`](https://github.com/bitwarden/android/commit/dafa1312770f501c8cad9594ba505aba6c556ac6) Add interceptor to convert network response JSON keys to camel case ### 📊 Changes **22 files changed** (+357 additions, -187 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/GetTokenResponseJson.kt` (+22 -42) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/KeyConnectorUserDecryptionOptionsJson.kt` (+1 -1) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/MasterPasswordPolicyOptionsJson.kt` (+7 -7) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/RefreshTokenResponseJson.kt` (+4 -4) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/RegisterResponseJson.kt` (+3 -11) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/SendVerificationEmailResponseJson.kt` (+2 -10) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/TrustedDeviceUserDecryptionOptionsJson.kt` (+5 -5) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/UserDecryptionOptionsJson.kt` (+3 -3) 📝 `app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt` (+2 -2) 📝 `app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/di/PlatformNetworkModule.kt` (+9 -0) ➕ `app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/interceptor/ResponseJsonKeyTransformerInterceptor.kt` (+37 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/retrofit/RetrofitsImpl.kt` (+3 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/data/platform/util/JsonExtensions.kt` (+52 -0) 📝 `app/src/test/java/com/x8bit/bitwarden/data/auth/datasource/disk/AuthDiskSourceTest.kt` (+9 -9) 📝 `app/src/test/java/com/x8bit/bitwarden/data/auth/datasource/network/service/IdentityServiceTest.kt` (+48 -80) 📝 `app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt` (+0 -3) 📝 `app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/interceptor/AuthTokenInterceptorTest.kt` (+1 -1) ➕ `app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/interceptor/ResponseJsonKeyNameInterceptorTest.kt` (+99 -0) 📝 `app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/retrofit/RetrofitsTest.kt` (+15 -8) 📝 `app/src/test/java/com/x8bit/bitwarden/data/platform/util/JsonExtensionsTest.kt` (+30 -0) _...and 2 more files_ </details> ### 📄 Description ## 🎟️ Tracking [PM-14583](https://bitwarden.atlassian.net/browse/PM-14583) ## 📔 Objective Adds an OkHttp interceptor, `ResponseJsonKeyNameInterceptor`, which converts all JSON object keys in network responses to `camelCase`. This addresses inconsistencies in key casing from the server. Includes unit tests for the interceptor to ensure it handles various scenarios, such as different casing styles, empty or null responses, invalid JSON, and non-JSON content types. ## 📷 Screenshots | Header | Header | |--------|--------| | <video src="https://github.com/user-attachments/assets/94450eca-ee81-404a-ab33-f58a86b13a09"/> | <video src="https://github.com/user-attachments/assets/30e65417-bb06-47f7-9040-0bb9ff0d95e5"/> | ## ⏰ Reminders before review - Contributor guidelines followed - All formatters and local linters executed and passed - Written new unit and / or integration tests where applicable - Used internationalization (i18n) for all UI strings - CI builds passed - Communicated to DevOps any deployment requirements - Updated any necessary documentation or informed the documentation team ## 🦮 Reviewer guidelines <!-- Suggested interactions but feel free to use (or not) as you desire! --> - 👍 (`:+1:`) or similar for great changes - 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info - ❓ (`:question:`) for questions - 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - 🎨 (`:art:`) for suggestions / improvements - ❌ (`:x:`) or ⚠️ (`:warning:`) for more significant problems or concerns needing attention - 🌱 (`:seedling:`) or ♻️ (`:recycle:`) for future improvements or indications of technical debt - ⛏ (`:pick:`) for minor or nitpick changes [PM-14526]: https://bitwarden.atlassian.net/browse/PM-14526?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ [PM-14583]: https://bitwarden.atlassian.net/browse/PM-14583?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2025-11-26 23:49:50 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#4793