From 9a3ebe71c9d9b58af5c25b7072747bdd645bbfa1 Mon Sep 17 00:00:00 2001 From: jguz-pubnub Date: Wed, 6 Aug 2025 12:42:53 +0200 Subject: [PATCH 1/2] Add missing implementation for parsing PAM token (Apple platforms) --- gradle/libs.versions.toml | 2 +- .../kotlin/com/pubnub/api/PubNubImpl.kt | 48 ++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 822cb0e0b..64676ce99 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ dokka = "2.0.0" kotlinx_datetime = "0.6.2" kotlinx_coroutines = "1.10.2" pubnub_js = "9.8.1" -pubnub_swift = "9.3.1" +pubnub_swift = "9.3.2" [libraries] retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit2" } diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt index 7a3673e4e..43a2d0681 100644 --- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt +++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt @@ -1,5 +1,7 @@ package com.pubnub.api +import cocoapods.PubNubSwift.KMPPAMPermission +import cocoapods.PubNubSwift.KMPPAMTokenResource import cocoapods.PubNubSwift.KMPPubNub import cocoapods.PubNubSwift.KMPSubscription import cocoapods.PubNubSwift.KMPSubscriptionSet @@ -10,6 +12,7 @@ import cocoapods.PubNubSwift.channelMetadataWith import cocoapods.PubNubSwift.channelWith import cocoapods.PubNubSwift.disconnect import cocoapods.PubNubSwift.getToken +import cocoapods.PubNubSwift.parseWithToken import cocoapods.PubNubSwift.reconnectWithTimetoken import cocoapods.PubNubSwift.removeAllListeners import cocoapods.PubNubSwift.removeEventListenerWithListener @@ -144,6 +147,7 @@ import com.pubnub.internal.subscription.SubscriptionImpl import com.pubnub.internal.subscription.SubscriptionSetImpl import com.pubnub.kmp.CustomObject import com.pubnub.kmp.Uploadable +import com.pubnub.kmp.safeCast import kotlinx.cinterop.ExperimentalForeignApi @OptIn(ExperimentalForeignApi::class) @@ -1022,7 +1026,49 @@ class PubNubImpl(private val pubNubObjC: KMPPubNub) : PubNub { } override fun parseToken(token: String): PNToken { - TODO("Not yet implemented") + return pubNubObjC.parseWithToken(token)?.let { + PNToken( + version = it.version().intValue, + timestamp = it.timestamp().longValue(), + authorizedUUID = it.authorizedUUID(), + resources = mapPAMTokenResources(it.resources()), + patterns = mapPAMTokenResources(it.patterns()), + meta = it.meta().asMap() + ) + } ?: PNToken( + resources = PNToken.PNTokenResources(), + patterns = PNToken.PNTokenResources() + ) + } + + private fun mapPAMTokenResources(from: KMPPAMTokenResource): PNToken.PNTokenResources { + val channels = from.channels().safeCast().mapValues { + mapPAMTokenResourcePermission(it.value) + } + val channelGroups = from.channelGroups().safeCast().mapValues { + mapPAMTokenResourcePermission(it.value) + } + val uuids = from.uuids().safeCast().mapValues { + mapPAMTokenResourcePermission(it.value) + } + + return PNToken.PNTokenResources( + channels = channels, + channelGroups = channelGroups, + uuids = uuids + ) + } + + private fun mapPAMTokenResourcePermission(from: KMPPAMPermission): PNToken.PNResourcePermissions { + return PNToken.PNResourcePermissions( + read = from.read(), + write = from.write(), + manage = from.manage(), + delete = from.delete(), + get = from.get(), + update = from.update(), + join = from.join() + ) } override fun unsubscribeAll() { From 66326f9796b8f4c70386b0de44c1fc7cd8bf5872 Mon Sep 17 00:00:00 2001 From: PubNub Release Bot <120067856+pubnub-release-bot@users.noreply.github.com> Date: Wed, 6 Aug 2025 13:27:08 +0200 Subject: [PATCH 2/2] PubNub SDK v10.5.8 release. --- .pubnub.yml | 13 +++++++++---- CHANGELOG.md | 6 ++++++ README.md | 2 +- gradle.properties | 2 +- .../kotlin/com/pubnub/api/legacy/PubNubImplTest.kt | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.pubnub.yml b/.pubnub.yml index cee682560..a327510cd 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,9 +1,9 @@ name: kotlin -version: 10.5.7 +version: 10.5.8 schema: 1 scm: github.com/pubnub/kotlin files: - - build/libs/pubnub-kotlin-10.5.7-all.jar + - build/libs/pubnub-kotlin-10.5.8-all.jar sdks: - type: library @@ -23,8 +23,8 @@ sdks: - distribution-type: library distribution-repository: maven - package-name: pubnub-kotlin-10.5.7 - location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.5.7/pubnub-kotlin-10.5.7.jar + package-name: pubnub-kotlin-10.5.8 + location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.5.8/pubnub-kotlin-10.5.8.jar supported-platforms: supported-operating-systems: Android: @@ -121,6 +121,11 @@ sdks: license-url: https://www.apache.org/licenses/LICENSE-2.0.txt is-required: Required changelog: + - date: 2025-08-06 + version: v10.5.8 + changes: + - type: bug + text: "Internal fixes." - date: 2025-07-31 version: v10.5.7 changes: diff --git a/CHANGELOG.md b/CHANGELOG.md index 915fa0985..a282d4861 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v10.5.8 +August 06 2025 + +#### Fixed +- Internal fixes. + ## v10.5.7 July 31 2025 diff --git a/README.md b/README.md index bc3f582f7..eb1108be8 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ You will need the publish and subscribe keys to authenticate your app. Get your com.pubnub pubnub-kotlin - 10.5.7 + 10.5.8 ``` diff --git a/gradle.properties b/gradle.properties index eb93d8cdd..9b729069a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ RELEASE_SIGNING_ENABLED=true SONATYPE_HOST=DEFAULT SONATYPE_AUTOMATIC_RELEASE=false GROUP=com.pubnub -VERSION_NAME=10.5.7 +VERSION_NAME=10.5.8 POM_PACKAGING=jar POM_NAME=PubNub SDK diff --git a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt index 5d26db31d..d483fca73 100644 --- a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt +++ b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt @@ -56,7 +56,7 @@ class PubNubImplTest : BaseTest() { fun getVersionAndTimeStamp() { val version = PubNubImpl.SDK_VERSION val timeStamp = PubNubImpl.timestamp() - assertEquals("10.5.7", version) + assertEquals("10.5.8", version) assertTrue(timeStamp > 0) }