Skip to content

Commit 131c173

Browse files
committed
MessageType and SpaceId for Signal endpoint
1 parent 8c3cb75 commit 131c173

File tree

5 files changed

+120
-3
lines changed

5 files changed

+120
-3
lines changed

pubnub/endpoints/signal.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ def __init__(self, pubnub):
1111
Endpoint.__init__(self, pubnub)
1212
self._channel = None
1313
self._message = None
14+
self._space = None
15+
self._message_type = None
1416

1517
def channel(self, channel):
1618
self._channel = str(channel)
@@ -20,6 +22,14 @@ def message(self, message):
2022
self._message = message
2123
return self
2224

25+
def space(self, space):
26+
self._space = str(space)
27+
return self
28+
29+
def message_type(self, message_type):
30+
self._message_type = message_type
31+
return self
32+
2333
def build_path(self):
2434
stringified_message = utils.write_value_as_string(self._message)
2535
msg = utils.url_encode(stringified_message)
@@ -29,7 +39,15 @@ def build_path(self):
2939
)
3040

3141
def custom_params(self):
32-
return {}
42+
params = {}
43+
44+
if self._message_type is not None:
45+
params['type'] = str(self._message_type)
46+
47+
if self._space is not None:
48+
params['space-id'] = str(self._space)
49+
50+
return params
3351

3452
def http_method(self):
3553
return HttpMethod.GET
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
Accept:
6+
- '*/*'
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Connection:
10+
- keep-alive
11+
User-Agent:
12+
- PubNub-Python/7.1.0
13+
method: GET
14+
uri: https://ps.pndsn.com/signal/demo/demo/0/ch1/0/null?space-id=sp1
15+
response:
16+
body:
17+
string: '[1,"Sent","16742259451827459"]'
18+
headers:
19+
Access-Control-Allow-Methods:
20+
- GET
21+
Access-Control-Allow-Origin:
22+
- '*'
23+
Cache-Control:
24+
- no-cache
25+
Connection:
26+
- keep-alive
27+
Content-Length:
28+
- '30'
29+
Content-Type:
30+
- text/javascript; charset="UTF-8"
31+
Date:
32+
- Fri, 20 Jan 2023 14:45:45 GMT
33+
status:
34+
code: 200
35+
message: OK
36+
version: 1
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
Accept:
6+
- '*/*'
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Connection:
10+
- keep-alive
11+
User-Agent:
12+
- PubNub-Python/7.1.0
13+
method: GET
14+
uri: https://ps.pndsn.com/signal/demo/demo/0/ch1/0/null?type=test_signal
15+
response:
16+
body:
17+
string: '[1,"Sent","16742259449318974"]'
18+
headers:
19+
Access-Control-Allow-Methods:
20+
- GET
21+
Access-Control-Allow-Origin:
22+
- '*'
23+
Cache-Control:
24+
- no-cache
25+
Connection:
26+
- keep-alive
27+
Content-Length:
28+
- '30'
29+
Content-Type:
30+
- text/javascript; charset="UTF-8"
31+
Date:
32+
- Fri, 20 Jan 2023 14:45:44 GMT
33+
status:
34+
code: 200
35+
message: OK
36+
version: 1

tests/integrational/native_sync/test_publish.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,6 @@ def test_publish_ttl_100(self):
373373
except PubNubException as e:
374374
self.fail(e)
375375

376-
@pn_vcr.use_cassette('tests/integrational/fixtures/native_sync/publish/publish_user_message_type.yaml',
377-
filter_query_parameters=['uuid', 'pnsdk'])
378376
def test_publish_user_message_type(self):
379377
with pn_vcr.use_cassette('tests/integrational/fixtures/native_sync/publish/publish_user_message_type.yaml',
380378
filter_query_parameters=['uuid', 'pnsdk']) as cassette:

tests/integrational/native_sync/test_signal.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pubnub.structures import Envelope
55
from tests.helper import pnconf_demo_copy
66
from tests.integrational.vcr_helper import pn_vcr
7+
from urllib.parse import urlparse, parse_qs
78

89

910
@pn_vcr.use_cassette('tests/integrational/fixtures/native_sync/signal/single.yaml',
@@ -18,3 +19,31 @@ def test_single_channel():
1819
assert envelope.result.timetoken == '15640049765289377'
1920
assert isinstance(envelope.result, PNSignalResult)
2021
assert isinstance(envelope.status, PNStatus)
22+
23+
24+
def test_signal_with_user_message_type():
25+
with pn_vcr.use_cassette('tests/integrational/fixtures/native_sync/signal/with_user_message_type.yaml',
26+
filter_query_parameters=['uuid', 'pnsdk']) as cassette:
27+
envelope = PubNub(pnconf_demo_copy()).signal().channel("ch1").message_type('test_signal').sync()
28+
assert isinstance(envelope, Envelope)
29+
assert not envelope.status.is_error()
30+
assert int(envelope.result.timetoken) > 0
31+
assert len(cassette) == 1
32+
uri = urlparse(cassette.requests[0].uri)
33+
query = parse_qs(uri.query)
34+
assert 'type' in query.keys()
35+
assert query['type'] == ['test_signal']
36+
37+
38+
def test_signal_with_space_id():
39+
with pn_vcr.use_cassette('tests/integrational/fixtures/native_sync/signal/with_space_id.yaml',
40+
filter_query_parameters=['uuid', 'pnsdk']) as cassette:
41+
envelope = PubNub(pnconf_demo_copy()).signal().channel('ch1').space('sp1').sync()
42+
43+
assert isinstance(envelope, Envelope)
44+
assert int(envelope.result.timetoken) > 1
45+
assert len(cassette) == 1
46+
uri = urlparse(cassette.requests[0].uri)
47+
query = parse_qs(uri.query)
48+
assert 'space-id' in query.keys()
49+
assert query['space-id'] == ['sp1']

0 commit comments

Comments
 (0)