Skip to content

Commit 61fabe5

Browse files
committed
fix(subscribe): fix issue with missing custom message type
Fix issue because of which custom message type wasn't set to the parsed subscription response objects.
1 parent 7494aaa commit 61fabe5

4 files changed

Lines changed: 24 additions & 4 deletions

File tree

pubnub/models/consumer/pubsub.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ class PNFileMessageResult(PNMessageResult):
4242
def __init__(
4343
self, message, subscription,
4444
channel, timetoken, publisher,
45-
file_url, file_id, file_name
45+
file_url, file_id, file_name, user_metadata=None, custom_message_type=None
4646
):
47-
super(PNFileMessageResult, self).__init__(message, subscription, channel, timetoken, publisher=publisher)
47+
super(PNFileMessageResult, self).__init__(message, subscription, channel, timetoken, user_metadata, publisher,
48+
custom_message_type=custom_message_type)
4849
self.file_url = file_url
4950
self.file_id = file_id
5051
self.file_name = file_name

pubnub/models/server/subscribe.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def __init__(self):
2828
self.subscribe_key = None
2929
self.origination_timetoken = None
3030
self.publish_metadata = None
31+
self.user_metadata = None
3132
self.only_channel_subscription = False
3233
self.type = 0
3334
self.custom_message_type = None
@@ -48,6 +49,8 @@ def from_json(cls, json_input):
4849
if 'o' in json_input:
4950
message.origination_timetoken = json_input['o']
5051
message.publish_metadata = PublishMetadata.from_json(json_input['p'])
52+
if 'u' in json_input:
53+
message.user_metadata = json_input['u']
5154
if 'e' in json_input:
5255
message.type = json_input['e']
5356
if 'cmt' in json_input:

pubnub/workers.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ def _process_incoming_payload(self, message: SubscribeMessage):
162162
subscription=subscription_match,
163163
timetoken=publish_meta_data.publish_timetoken,
164164
publisher=message.issuing_client_id,
165+
custom_message_type=message.custom_message_type,
166+
user_metadata=message.user_metadata,
165167
file_url=download_url,
166168
file_id=extracted_message["file"]["id"],
167169
file_name=extracted_message["file"]["name"]
@@ -182,7 +184,10 @@ def _process_incoming_payload(self, message: SubscribeMessage):
182184
channel=channel,
183185
subscription=subscription_match,
184186
timetoken=publish_meta_data.publish_timetoken,
185-
publisher=publisher
187+
publisher=publisher,
188+
custom_message_type=message.custom_message_type,
189+
user_metadata=message.user_metadata,
190+
error=error
186191
)
187192
self.announce(pn_signal_result)
188193
return pn_signal_result
@@ -202,6 +207,8 @@ def _process_incoming_payload(self, message: SubscribeMessage):
202207
subscription=subscription_match,
203208
timetoken=publish_meta_data.publish_timetoken,
204209
publisher=publisher,
210+
custom_message_type=message.custom_message_type,
211+
user_metadata=message.user_metadata,
205212
error=error
206213
)
207214
self.announce(pn_message_result)

tests/integrational/native_threads/test_subscribe.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ def test_subscribe_pub_unencrypted_unsubscribe(self):
290290

291291
subscribe_listener = SubscribeListener()
292292
publish_operation = NonSubscribeListener()
293+
metadata = {'test':'publish'}
294+
custom_message_type = "test"
293295
message = "hey"
294296

295297
try:
@@ -298,7 +300,12 @@ def test_subscribe_pub_unencrypted_unsubscribe(self):
298300
pubnub.subscribe().channels(ch).execute()
299301
subscribe_listener.wait_for_connect()
300302

301-
pubnub_plain.publish().channel(ch).message(message).pn_async(publish_operation.callback)
303+
pubnub_plain.publish() \
304+
.channel(ch) \
305+
.message(message) \
306+
.custom_message_type(custom_message_type) \
307+
.meta(metadata) \
308+
.pn_async(publish_operation.callback)
302309

303310
if publish_operation.pn_await() is False:
304311
self.fail("Publish operation timeout")
@@ -313,6 +320,8 @@ def test_subscribe_pub_unencrypted_unsubscribe(self):
313320
assert result.subscription is None
314321
assert result.timetoken > 0
315322
assert result.message == message
323+
assert result.custom_message_type == custom_message_type
324+
assert result.user_metadata == metadata
316325
assert result.error is not None
317326
assert isinstance(result.error, binascii.Error)
318327

0 commit comments

Comments
 (0)