Skip to content

Commit 5c3d2a8

Browse files
author
Sebastian Molenda
committed
... and channel members
1 parent 4fcff91 commit 5c3d2a8

19 files changed

Lines changed: 1963 additions & 99 deletions

File tree

pubnub/endpoints/objects_v2/members/get_channel_members.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def build_path(self):
3535
def validate_specific_params(self):
3636
self._validate_channel()
3737

38-
def include(self, includes: MemberIncludes):
38+
def include(self, includes: MemberIncludes) -> 'GetChannelMembers':
3939
super().include(includes)
4040
return self
4141

pubnub/endpoints/objects_v2/members/manage_channel_members.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from pubnub.enums import HttpMethod
77
from pubnub.models.consumer.common import PNStatus
88
from pubnub.models.consumer.objects_v2.channel_members import PNUUID, PNManageChannelMembersResult
9-
from pubnub.models.consumer.objects_v2.common import MemberIncludes
9+
from pubnub.models.consumer.objects_v2.common import MembershipIncludes
1010
from pubnub.models.consumer.objects_v2.page import PNPage
1111
from pubnub.structures import Envelope
1212

@@ -23,7 +23,7 @@ class ManageChannelMembers(ObjectsEndpoint, ChannelEndpoint, ListEndpoint, Inclu
2323
def __init__(self, pubnub, channel: str = None, uuids_to_set: List[PNUUID] = None,
2424
uuids_to_remove: List[PNUUID] = None, include_custom: bool = None, limit: int = None,
2525
filter: str = None, include_total_count: bool = None, sort_keys: list = None, page: PNPage = None,
26-
include: MemberIncludes = None):
26+
include: MembershipIncludes = None):
2727
ObjectsEndpoint.__init__(self, pubnub)
2828
IncludeCapableEndpoint.__init__(self, include)
2929
ChannelEndpoint.__init__(self, channel=channel)
@@ -50,6 +50,10 @@ def remove(self, uuids_to_remove: List[PNUUID]) -> 'ManageChannelMembers':
5050
def validate_specific_params(self):
5151
self._validate_channel()
5252

53+
def include(self, includes: MembershipIncludes) -> 'ManageChannelMembers':
54+
super().include(includes)
55+
return self
56+
5357
def build_path(self):
5458
return ManageChannelMembers.MANAGE_CHANNELS_MEMBERS_PATH % (self.pubnub.config.subscribe_key, self._channel)
5559

pubnub/endpoints/objects_v2/members/set_channel_members.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,26 @@ def uuids(self, uuids) -> 'SetChannelMembers':
4242
def validate_specific_params(self):
4343
self._validate_channel()
4444

45+
def include(self, includes: MemberIncludes) -> 'SetChannelMembers':
46+
"""
47+
Include additional information in the members response.
48+
49+
Parameters
50+
----------
51+
includes : MemberIncludes
52+
The additional information to include in the member response.
53+
54+
See Also
55+
--------
56+
pubnub.models.consumer.objects_v2.common.MemberIncludese : For details on the available includes.
57+
58+
Returns
59+
-------
60+
self : SetChannelMembers
61+
"""
62+
super().include(includes)
63+
return self
64+
4565
def build_path(self):
4666
return SetChannelMembers.SET_CHANNEL_MEMBERS_PATH % (self.pubnub.config.subscribe_key, self._channel)
4767

pubnub/endpoints/objects_v2/memberships/get_memberships.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
from pubnub.endpoints.objects_v2.objects_endpoint import ObjectsEndpoint, IncludeCustomEndpoint, \
2-
UuidEndpoint, ListEndpoint, ChannelIncludeEndpoint
1+
from pubnub.endpoints.objects_v2.objects_endpoint import IncludeCapableEndpoint, ObjectsEndpoint, \
2+
IncludeCustomEndpoint, UuidEndpoint, ListEndpoint, ChannelIncludeEndpoint
33
from pubnub.enums import PNOperationType
44
from pubnub.enums import HttpMethod
55
from pubnub.models.consumer.common import PNStatus
6+
from pubnub.models.consumer.objects_v2.common import MembershipIncludes
67
from pubnub.models.consumer.objects_v2.memberships import PNGetMembershipsResult
78
from pubnub.models.consumer.objects_v2.page import PNPage
89
from pubnub.structures import Envelope
@@ -13,13 +14,15 @@ class PNGetMembershipsResultEnvelope(Envelope):
1314
status: PNStatus
1415

1516

16-
class GetMemberships(ObjectsEndpoint, UuidEndpoint, ListEndpoint, IncludeCustomEndpoint,
17+
class GetMemberships(ObjectsEndpoint, UuidEndpoint, ListEndpoint, IncludeCustomEndpoint, IncludeCapableEndpoint,
1718
ChannelIncludeEndpoint):
1819
GET_MEMBERSHIPS_PATH = "/v2/objects/%s/uuids/%s/channels"
1920

2021
def __init__(self, pubnub, uuid: str = None, include_custom: bool = False, limit: int = None, filter: str = None,
21-
include_total_count: bool = None, sort_keys: list = None, page: PNPage = None):
22+
include_total_count: bool = None, sort_keys: list = None, page: PNPage = None,
23+
include: MembershipIncludes = None):
2224
ObjectsEndpoint.__init__(self, pubnub)
25+
IncludeCapableEndpoint.__init__(self, include=include)
2326
UuidEndpoint.__init__(self, uuid=uuid)
2427
ListEndpoint.__init__(self, limit=limit, filter=filter, include_total_count=include_total_count,
2528
sort_keys=sort_keys, page=page)
@@ -32,6 +35,26 @@ def build_path(self):
3235
def validate_specific_params(self):
3336
self._validate_uuid()
3437

38+
def include(self, includes: MembershipIncludes) -> 'GetMemberships':
39+
"""
40+
Include additional information in the membership response.
41+
42+
Parameters
43+
----------
44+
includes : MembershipIncludes
45+
The additional information to include in the membership response.
46+
47+
See Also
48+
--------
49+
pubnub.models.consumer.objects_v2.common.MembershipIncludese : For details on the available includes.
50+
51+
Returns
52+
-------
53+
self : GetMemberships
54+
"""
55+
super().include(includes)
56+
return self
57+
3558
def create_response(self, envelope) -> PNGetMembershipsResult:
3659
return PNGetMembershipsResult(envelope)
3760

pubnub/endpoints/objects_v2/memberships/manage_memberships.py

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from typing import List
22
from pubnub import utils
3-
from pubnub.endpoints.objects_v2.objects_endpoint import ObjectsEndpoint, ListEndpoint, \
3+
from pubnub.endpoints.objects_v2.objects_endpoint import IncludeCapableEndpoint, ObjectsEndpoint, ListEndpoint, \
44
IncludeCustomEndpoint, UuidEndpoint, ChannelIncludeEndpoint
55
from pubnub.enums import PNOperationType
66
from pubnub.enums import HttpMethod
77

88
from pubnub.models.consumer.common import PNStatus
9-
from pubnub.models.consumer.objects_v2.memberships import PNManageMembershipsResult
9+
from pubnub.models.consumer.objects_v2.common import MembershipIncludes
10+
from pubnub.models.consumer.objects_v2.memberships import PNChannelMembership, PNManageMembershipsResult
1011
from pubnub.models.consumer.objects_v2.page import PNPage
1112
from pubnub.structures import Envelope
1213

@@ -16,14 +17,17 @@ class PNManageMembershipsResultEnvelope(Envelope):
1617
status: PNStatus
1718

1819

19-
class ManageMemberships(ObjectsEndpoint, UuidEndpoint, ListEndpoint, IncludeCustomEndpoint,
20+
class ManageMemberships(ObjectsEndpoint, UuidEndpoint, ListEndpoint, IncludeCustomEndpoint, IncludeCapableEndpoint,
2021
ChannelIncludeEndpoint):
2122
MANAGE_MEMBERSHIPS_PATH = "/v2/objects/%s/uuids/%s/channels"
2223

23-
def __init__(self, pubnub, uuid: str = None, channel_memberships_to_set: List[str] = None,
24-
channel_memberships_to_remove: List[str] = None, include_custom: bool = False, limit: int = None,
25-
filter: str = None, include_total_count: bool = None, sort_keys: list = None, page: PNPage = None):
24+
def __init__(self, pubnub, uuid: str = None, channel_memberships_to_set: List[PNChannelMembership] = None,
25+
channel_memberships_to_remove: List[PNChannelMembership] = None, include_custom: bool = False,
26+
limit: int = None, filter: str = None, include_total_count: bool = None, sort_keys: list = None,
27+
page: PNPage = None, include: MembershipIncludes = None):
28+
2629
ObjectsEndpoint.__init__(self, pubnub)
30+
IncludeCapableEndpoint.__init__(self, include=include)
2731
UuidEndpoint.__init__(self, uuid=uuid)
2832
ListEndpoint.__init__(self, limit=limit, filter=filter, include_total_count=include_total_count,
2933
sort_keys=sort_keys, page=page)
@@ -38,14 +42,34 @@ def __init__(self, pubnub, uuid: str = None, channel_memberships_to_set: List[st
3842
if channel_memberships_to_remove:
3943
utils.extend_list(self._channel_memberships_to_remove, channel_memberships_to_remove)
4044

41-
def set(self, channel_memberships_to_set: List[str]) -> 'ManageMemberships':
45+
def set(self, channel_memberships_to_set: List[PNChannelMembership]) -> 'ManageMemberships':
4246
self._channel_memberships_to_set = list(channel_memberships_to_set)
4347
return self
4448

45-
def remove(self, channel_memberships_to_remove: List[str]) -> 'ManageMemberships':
49+
def remove(self, channel_memberships_to_remove: List[PNChannelMembership]) -> 'ManageMemberships':
4650
self._channel_memberships_to_remove = list(channel_memberships_to_remove)
4751
return self
4852

53+
def include(self, includes: MembershipIncludes) -> 'ManageMemberships':
54+
"""
55+
Include additional information in the membership response.
56+
57+
Parameters
58+
----------
59+
includes : MembershipIncludes
60+
The additional information to include in the membership response.
61+
62+
See Also
63+
--------
64+
pubnub.models.consumer.objects_v2.common.MembershipIncludese : For details on the available includes.
65+
66+
Returns
67+
-------
68+
self : GetMemberships
69+
"""
70+
super().include(includes)
71+
return self
72+
4973
def validate_specific_params(self):
5074
self._validate_uuid()
5175

pubnub/endpoints/objects_v2/memberships/remove_memberships.py

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,65 @@
1+
from typing import List
12
from pubnub import utils
2-
from pubnub.endpoints.objects_v2.objects_endpoint import ObjectsEndpoint, ListEndpoint, \
3-
IncludeCustomEndpoint, UuidEndpoint, ChannelIncludeEndpoint
3+
from pubnub.endpoints.objects_v2.objects_endpoint import IncludeCapableEndpoint, ObjectsEndpoint, \
4+
IncludeCustomEndpoint, ListEndpoint, ChannelIncludeEndpoint, UuidEndpoint
45
from pubnub.enums import PNOperationType
56
from pubnub.enums import HttpMethod
6-
from pubnub.models.consumer.objects_v2.memberships import PNRemoveMembershipsResult
7+
from pubnub.models.consumer.common import PNStatus
8+
from pubnub.models.consumer.objects_v2.common import MembershipIncludes
9+
from pubnub.models.consumer.objects_v2.memberships import PNChannelMembership, PNRemoveMembershipsResult
10+
from pubnub.models.consumer.objects_v2.page import PNPage
11+
from pubnub.structures import Envelope
712

813

9-
class RemoveMemberships(ObjectsEndpoint, UuidEndpoint, ListEndpoint, IncludeCustomEndpoint,
10-
ChannelIncludeEndpoint):
14+
class PNRemoveMembershipsResultEnvelope(Envelope):
15+
result: PNRemoveMembershipsResult
16+
status: PNStatus
17+
18+
19+
class RemoveMemberships(ObjectsEndpoint, ListEndpoint, IncludeCustomEndpoint, IncludeCapableEndpoint,
20+
ChannelIncludeEndpoint, UuidEndpoint):
1121
REMOVE_MEMBERSHIPS_PATH = "/v2/objects/%s/uuids/%s/channels"
1222

13-
def __init__(self, pubnub):
23+
def __init__(self, pubnub, uuid: str = None, channel_memberships: List[PNChannelMembership] = None,
24+
include_custom: bool = False, limit: int = None, filter: str = None, include_total_count: bool = None,
25+
sort_keys: list = None, page: PNPage = None, include: MembershipIncludes = None):
1426
ObjectsEndpoint.__init__(self, pubnub)
15-
ListEndpoint.__init__(self)
16-
UuidEndpoint.__init__(self)
17-
IncludeCustomEndpoint.__init__(self)
27+
IncludeCapableEndpoint.__init__(self, include=include)
28+
UuidEndpoint.__init__(self, uuid=uuid)
29+
ListEndpoint.__init__(self, limit=limit, filter=filter, include_total_count=include_total_count,
30+
sort_keys=sort_keys, page=page)
31+
IncludeCustomEndpoint.__init__(self, include_custom=include_custom)
1832
ChannelIncludeEndpoint.__init__(self)
1933

2034
self._channel_memberships = []
35+
if channel_memberships:
36+
utils.extend_list(self._channel_memberships, channel_memberships)
2137

2238
def channel_memberships(self, channel_memberships):
23-
self._channel_memberships = list(channel_memberships)
39+
utils.extend_list(self._channel_memberships, channel_memberships)
40+
return self
41+
42+
def validate_specific_params(self):
43+
self._validate_uuid()
44+
45+
def include(self, includes: MembershipIncludes) -> 'RemoveMemberships':
46+
"""
47+
Include additional information in the membership response.
48+
49+
Parameters
50+
----------
51+
includes : MembershipIncludes
52+
The additional information to include in the membership response.
53+
54+
See Also
55+
--------
56+
pubnub.models.consumer.objects_v2.common.MembershipIncludese : For details on the available includes.
57+
58+
Returns
59+
-------
60+
self : RemoveMemberships
61+
"""
62+
super().include(includes)
2463
return self
2564

2665
def build_path(self):
@@ -38,12 +77,12 @@ def build_data(self):
3877
}
3978
return utils.write_value_as_string(payload)
4079

41-
def validate_specific_params(self):
42-
self._validate_uuid()
43-
44-
def create_response(self, envelope):
80+
def create_response(self, envelope) -> PNRemoveMembershipsResult:
4581
return PNRemoveMembershipsResult(envelope)
4682

83+
def sync(self) -> PNRemoveMembershipsResultEnvelope:
84+
return PNRemoveMembershipsResultEnvelope(super().sync())
85+
4786
def operation_type(self):
4887
return PNOperationType.PNRemoveMembershipsOperation
4988

pubnub/endpoints/objects_v2/memberships/set_memberships.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
from typing import List
22
from pubnub import utils
3-
from pubnub.endpoints.objects_v2.objects_endpoint import ObjectsEndpoint, IncludeCustomEndpoint, \
4-
ListEndpoint, ChannelIncludeEndpoint, UuidEndpoint
3+
from pubnub.endpoints.objects_v2.objects_endpoint import IncludeCapableEndpoint, ObjectsEndpoint, \
4+
IncludeCustomEndpoint, ListEndpoint, ChannelIncludeEndpoint, UuidEndpoint
55
from pubnub.enums import PNOperationType
66
from pubnub.enums import HttpMethod
77
from pubnub.models.consumer.common import PNStatus
8-
from pubnub.models.consumer.objects_v2.memberships import PNSetMembershipsResult
8+
from pubnub.models.consumer.objects_v2.common import MembershipIncludes
9+
from pubnub.models.consumer.objects_v2.memberships import PNChannelMembership, PNSetMembershipsResult
910
from pubnub.models.consumer.objects_v2.page import PNPage
1011
from pubnub.structures import Envelope
1112

@@ -15,14 +16,15 @@ class PNSetMembershipsResultEnvelope(Envelope):
1516
status: PNStatus
1617

1718

18-
class SetMemberships(ObjectsEndpoint, ListEndpoint, IncludeCustomEndpoint,
19+
class SetMemberships(ObjectsEndpoint, ListEndpoint, IncludeCustomEndpoint, IncludeCapableEndpoint,
1920
ChannelIncludeEndpoint, UuidEndpoint):
2021
SET_MEMBERSHIP_PATH = "/v2/objects/%s/uuids/%s/channels"
2122

22-
def __init__(self, pubnub, uuid: str = None, channel_memberships: List[str] = None, include_custom: bool = False,
23-
limit: int = None, filter: str = None, include_total_count: bool = None, sort_keys: list = None,
24-
page: PNPage = None):
23+
def __init__(self, pubnub, uuid: str = None, channel_memberships: List[PNChannelMembership] = None,
24+
include_custom: bool = False, limit: int = None, filter: str = None, include_total_count: bool = None,
25+
sort_keys: list = None, page: PNPage = None, include: MembershipIncludes = None):
2526
ObjectsEndpoint.__init__(self, pubnub)
27+
IncludeCapableEndpoint.__init__(self, include=include)
2628
UuidEndpoint.__init__(self, uuid=uuid)
2729
ListEndpoint.__init__(self, limit=limit, filter=filter, include_total_count=include_total_count,
2830
sort_keys=sort_keys, page=page)
@@ -40,6 +42,26 @@ def channel_memberships(self, channel_memberships):
4042
def validate_specific_params(self):
4143
self._validate_uuid()
4244

45+
def include(self, includes: MembershipIncludes) -> 'SetMemberships':
46+
"""
47+
Include additional information in the membership response.
48+
49+
Parameters
50+
----------
51+
includes : MembershipIncludes
52+
The additional information to include in the membership response.
53+
54+
See Also
55+
--------
56+
pubnub.models.consumer.objects_v2.common.MembershipIncludese : For details on the available includes.
57+
58+
Returns
59+
-------
60+
self : SetMemberships
61+
"""
62+
super().include(includes)
63+
return self
64+
4365
def build_path(self):
4466
return SetMemberships.SET_MEMBERSHIP_PATH % (self.pubnub.config.subscribe_key, self._effective_uuid())
4567

0 commit comments

Comments
 (0)