Skip to content

Commit f8434fe

Browse files
Add missing implementation for parsing PAM token (Apple platforms) (#364)
* Add missing implementation for parsing PAM token (Apple platforms) * PubNub SDK v10.5.8 release. --------- Co-authored-by: PubNub Release Bot <[email protected]>
1 parent 10620a0 commit f8434fe

File tree

7 files changed

+66
-9
lines changed

7 files changed

+66
-9
lines changed

.pubnub.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
name: kotlin
2-
version: 10.5.7
2+
version: 10.5.8
33
schema: 1
44
scm: github.com/pubnub/kotlin
55
files:
6-
- build/libs/pubnub-kotlin-10.5.7-all.jar
6+
- build/libs/pubnub-kotlin-10.5.8-all.jar
77
sdks:
88
-
99
type: library
@@ -23,8 +23,8 @@ sdks:
2323
-
2424
distribution-type: library
2525
distribution-repository: maven
26-
package-name: pubnub-kotlin-10.5.7
27-
location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.5.7/pubnub-kotlin-10.5.7.jar
26+
package-name: pubnub-kotlin-10.5.8
27+
location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.5.8/pubnub-kotlin-10.5.8.jar
2828
supported-platforms:
2929
supported-operating-systems:
3030
Android:
@@ -121,6 +121,11 @@ sdks:
121121
license-url: https://www.apache.org/licenses/LICENSE-2.0.txt
122122
is-required: Required
123123
changelog:
124+
- date: 2025-08-06
125+
version: v10.5.8
126+
changes:
127+
- type: bug
128+
text: "Internal fixes."
124129
- date: 2025-07-31
125130
version: v10.5.7
126131
changes:

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## v10.5.8
2+
August 06 2025
3+
4+
#### Fixed
5+
- Internal fixes.
6+
17
## v10.5.7
28
July 31 2025
39

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ You will need the publish and subscribe keys to authenticate your app. Get your
2020
<dependency>
2121
<groupId>com.pubnub</groupId>
2222
<artifactId>pubnub-kotlin</artifactId>
23-
<version>10.5.7</version>
23+
<version>10.5.8</version>
2424
</dependency>
2525
```
2626

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ RELEASE_SIGNING_ENABLED=true
1818
SONATYPE_HOST=DEFAULT
1919
SONATYPE_AUTOMATIC_RELEASE=false
2020
GROUP=com.pubnub
21-
VERSION_NAME=10.5.7
21+
VERSION_NAME=10.5.8
2222
POM_PACKAGING=jar
2323

2424
POM_NAME=PubNub SDK

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dokka = "2.0.0"
1313
kotlinx_datetime = "0.6.2"
1414
kotlinx_coroutines = "1.10.2"
1515
pubnub_js = "9.8.1"
16-
pubnub_swift = "9.3.1"
16+
pubnub_swift = "9.3.2"
1717

1818
[libraries]
1919
retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit2" }

pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.pubnub.api
22

3+
import cocoapods.PubNubSwift.KMPPAMPermission
4+
import cocoapods.PubNubSwift.KMPPAMTokenResource
35
import cocoapods.PubNubSwift.KMPPubNub
46
import cocoapods.PubNubSwift.KMPSubscription
57
import cocoapods.PubNubSwift.KMPSubscriptionSet
@@ -10,6 +12,7 @@ import cocoapods.PubNubSwift.channelMetadataWith
1012
import cocoapods.PubNubSwift.channelWith
1113
import cocoapods.PubNubSwift.disconnect
1214
import cocoapods.PubNubSwift.getToken
15+
import cocoapods.PubNubSwift.parseWithToken
1316
import cocoapods.PubNubSwift.reconnectWithTimetoken
1417
import cocoapods.PubNubSwift.removeAllListeners
1518
import cocoapods.PubNubSwift.removeEventListenerWithListener
@@ -144,6 +147,7 @@ import com.pubnub.internal.subscription.SubscriptionImpl
144147
import com.pubnub.internal.subscription.SubscriptionSetImpl
145148
import com.pubnub.kmp.CustomObject
146149
import com.pubnub.kmp.Uploadable
150+
import com.pubnub.kmp.safeCast
147151
import kotlinx.cinterop.ExperimentalForeignApi
148152

149153
@OptIn(ExperimentalForeignApi::class)
@@ -1022,7 +1026,49 @@ class PubNubImpl(private val pubNubObjC: KMPPubNub) : PubNub {
10221026
}
10231027

10241028
override fun parseToken(token: String): PNToken {
1025-
TODO("Not yet implemented")
1029+
return pubNubObjC.parseWithToken(token)?.let {
1030+
PNToken(
1031+
version = it.version().intValue,
1032+
timestamp = it.timestamp().longValue(),
1033+
authorizedUUID = it.authorizedUUID(),
1034+
resources = mapPAMTokenResources(it.resources()),
1035+
patterns = mapPAMTokenResources(it.patterns()),
1036+
meta = it.meta().asMap()
1037+
)
1038+
} ?: PNToken(
1039+
resources = PNToken.PNTokenResources(),
1040+
patterns = PNToken.PNTokenResources()
1041+
)
1042+
}
1043+
1044+
private fun mapPAMTokenResources(from: KMPPAMTokenResource): PNToken.PNTokenResources {
1045+
val channels = from.channels().safeCast<String, KMPPAMPermission>().mapValues {
1046+
mapPAMTokenResourcePermission(it.value)
1047+
}
1048+
val channelGroups = from.channelGroups().safeCast<String, KMPPAMPermission>().mapValues {
1049+
mapPAMTokenResourcePermission(it.value)
1050+
}
1051+
val uuids = from.uuids().safeCast<String, KMPPAMPermission>().mapValues {
1052+
mapPAMTokenResourcePermission(it.value)
1053+
}
1054+
1055+
return PNToken.PNTokenResources(
1056+
channels = channels,
1057+
channelGroups = channelGroups,
1058+
uuids = uuids
1059+
)
1060+
}
1061+
1062+
private fun mapPAMTokenResourcePermission(from: KMPPAMPermission): PNToken.PNResourcePermissions {
1063+
return PNToken.PNResourcePermissions(
1064+
read = from.read(),
1065+
write = from.write(),
1066+
manage = from.manage(),
1067+
delete = from.delete(),
1068+
get = from.get(),
1069+
update = from.update(),
1070+
join = from.join()
1071+
)
10261072
}
10271073

10281074
override fun unsubscribeAll() {

pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class PubNubImplTest : BaseTest() {
5656
fun getVersionAndTimeStamp() {
5757
val version = PubNubImpl.SDK_VERSION
5858
val timeStamp = PubNubImpl.timestamp()
59-
assertEquals("10.5.7", version)
59+
assertEquals("10.5.8", version)
6060
assertTrue(timeStamp > 0)
6161
}
6262

0 commit comments

Comments
 (0)