4
4
Classes:
5
5
TeamMembership: Models a Spark 'team membership' JSON object as a native
6
6
Python object.
7
- TeamMembershipsAPI: Wrappers the Cisco Spark Memberships-API and exposes
8
- the API calls as Python method calls that return native Python objects.
7
+ TeamMembershipsAPI: Wraps the Cisco Spark Memberships-API and exposes
8
+ the APIs as native Python methods that return native Python objects.
9
9
10
10
"""
11
11
20
20
from builtins import *
21
21
from past .builtins import basestring
22
22
23
- from ciscosparkapi .exceptions import ciscosparkapiException
24
- from ciscosparkapi .utils import generator_container
25
23
from ciscosparkapi .restsession import RestSession
26
24
from ciscosparkapi .sparkdata import SparkData
25
+ from ciscosparkapi .utils import (
26
+ check_type ,
27
+ dict_from_items_with_values ,
28
+ generator_container ,
29
+ )
27
30
28
31
29
32
__author__ = "Chris Lunsford"
@@ -37,10 +40,10 @@ class TeamMembership(SparkData):
37
40
"""
38
41
39
42
def __init__ (self , json ):
40
- """Init a new TeamMembership object from a JSON dictionary or string.
43
+ """Initialize a TeamMembership object from a dictionary or JSON string.
41
44
42
45
Args:
43
- json(dict, basestring): Input JSON object.
46
+ json(dict, basestring): Input dictionary or JSON object.
44
47
45
48
Raises:
46
49
TypeError: If the input object is not a dictionary or string.
@@ -50,38 +53,50 @@ def __init__(self, json):
50
53
51
54
@property
52
55
def id (self ):
53
- return self ._json ['id' ]
56
+ """The team membership's unique ID."""
57
+ return self ._json .get ('id' )
54
58
55
59
@property
56
60
def teamId (self ):
57
- return self ._json ['teamId' ]
61
+ """The ID of the team."""
62
+ return self ._json .get ('teamId' )
58
63
59
64
@property
60
65
def personId (self ):
61
- return self ._json ['personId' ]
66
+ """The ID of the person."""
67
+ return self ._json .get ('personId' )
62
68
63
69
@property
64
70
def personEmail (self ):
65
- return self ._json ['personEmail' ]
71
+ """The email address of the person."""
72
+ return self ._json .get ('personEmail' )
66
73
67
74
@property
68
75
def personDisplayName (self ):
69
- return self ._json ['personDisplayName' ]
76
+ """The display name of the person."""
77
+ return self ._json .get ('personDisplayName' )
78
+
79
+ @property
80
+ def personOrgId (self ):
81
+ """The ID of the organization that the person is associated with."""
82
+ return self ._json .get ('personOrgId' )
70
83
71
84
@property
72
85
def isModerator (self ):
73
- return self ._json ['isModerator' ]
86
+ """Person is a moderator for the team."""
87
+ return self ._json .get ('isModerator' )
74
88
75
89
@property
76
90
def created (self ):
77
- return self ._json ['created' ]
91
+ """The date and time the team membership was created."""
92
+ return self ._json .get ('created' )
78
93
79
94
80
95
class TeamMembershipsAPI (object ):
81
96
"""Cisco Spark Team-Memberships-API wrapper class.
82
97
83
- Wrappers the Cisco Spark Team- Memberships-API and exposes the API calls as
84
- Python method calls that return native Python objects.
98
+ Wraps the Cisco Spark Memberships-API and exposes the APIs as native Python
99
+ methods that return native Python objects.
85
100
86
101
"""
87
102
@@ -93,168 +108,172 @@ def __init__(self, session):
93
108
API calls to the Cisco Spark service.
94
109
95
110
Raises:
96
- AssertionError : If the parameter types are incorrect.
111
+ TypeError : If the parameter types are incorrect.
97
112
98
113
"""
99
- assert isinstance (session , RestSession )
114
+ check_type (session , RestSession )
115
+
100
116
super (TeamMembershipsAPI , self ).__init__ ()
117
+
101
118
self ._session = session
102
119
103
120
@generator_container
104
- def list (self , teamId , max = None ):
121
+ def list (self , teamId , max = None , ** request_parameters ):
105
122
"""List team memberships for a team, by ID.
106
123
107
124
This method supports Cisco Spark's implementation of RFC5988 Web
108
125
Linking to provide pagination support. It returns a generator
109
- container that incrementally yield all team memberships returned by the
110
- query. The generator will automatically request additional 'pages' of
111
- responses from Spark as needed until all responses have been returned.
112
- The container makes the generator safe for reuse. A new API call will
113
- be made, using the same parameters that were specified when the
114
- generator was created, every time a new iterator is requested from the
115
- container.
126
+ container that incrementally yields all team memberships returned by
127
+ the query. The generator will automatically request additional 'pages'
128
+ of responses from Spark as needed until all responses have been
129
+ returned. The container makes the generator safe for reuse. A new API
130
+ call will be made, using the same parameters that were specified when
131
+ the generator was created, every time a new iterator is requested from
132
+ the container.
116
133
117
134
Args:
118
- teamId(basestring): List memberships for the team with teamId.
119
- max(int): Limits the maximum number of memberships returned from
120
- the Spark service per request.
121
-
135
+ teamId(basestring): List team memberships for a team, by ID.
136
+ max(int): Limit the maximum number of items returned from the Spark
137
+ service per request.
138
+ **request_parameters: Additional request parameters (provides
139
+ support for parameters that may be added in the future).
122
140
123
141
Returns:
124
- GeneratorContainer: When iterated, the GeneratorContainer, yields
125
- the team memberships returned by the Cisco Spark query.
142
+ GeneratorContainer: A GeneratorContainer which, when iterated,
143
+ yields the team memberships returned by the Cisco Spark query.
126
144
127
145
Raises:
128
- AssertionError : If the parameter types are incorrect.
146
+ TypeError : If the parameter types are incorrect.
129
147
SparkApiError: If the Cisco Spark cloud returns an error.
130
148
131
149
"""
132
- # Process args
133
- assert isinstance (teamId , basestring )
134
- assert max is None or isinstance (max , int )
135
- params = {}
136
- params ['teamId' ] = teamId
137
- if max :
138
- params ['max' ] = max
150
+ check_type (teamId , basestring , may_be_none = False )
151
+ check_type (max , int )
152
+
153
+ params = dict_from_items_with_values (
154
+ request_parameters ,
155
+ teamId = teamId ,
156
+ max = max ,
157
+ )
158
+
139
159
# API request - get items
140
160
items = self ._session .get_items ('team/memberships' , params = params )
161
+
141
162
# Yield Person objects created from the returned items JSON objects
142
163
for item in items :
143
164
yield TeamMembership (item )
144
165
145
166
def create (self , teamId , personId = None , personEmail = None ,
146
- isModerator = False ):
167
+ isModerator = False , ** request_parameters ):
147
168
"""Add someone to a team by Person ID or email address.
148
169
149
170
Add someone to a team by Person ID or email address; optionally making
150
171
them a moderator.
151
172
152
173
Args:
153
- teamId(basestring): ID of the team to which the person will be
154
- added.
155
- personId(basestring): ID of the person to be added to the team.
156
- personEmail(basestring): Email address of the person to be added
157
- to the team.
158
- isModerator(bool): If True, adds the person as a moderator for the
159
- team. If False, adds the person as normal member of the team.
174
+ teamId(basestring): The team ID.
175
+ personId(basestring): The person ID.
176
+ personEmail(basestring): The email address of the person.
177
+ isModerator(bool): Set to True to make the person a team moderator.
178
+ **request_parameters: Additional request parameters (provides
179
+ support for parameters that may be added in the future).
160
180
161
181
Returns:
162
- TeamMembership: With the details of the created team membership.
182
+ TeamMembership: A TeamMembership object with the details of the
183
+ created team membership.
163
184
164
185
Raises:
165
- AssertionError: If the parameter types are incorrect.
166
- ciscosparkapiException: If neither a personId or personEmail are
167
- provided.
186
+ TypeError: If the parameter types are incorrect.
168
187
SparkApiError: If the Cisco Spark cloud returns an error.
169
188
170
189
"""
171
- # Process args
172
- assert isinstance (teamId , basestring )
173
- assert personId is None or isinstance (personId , basestring )
174
- assert personEmail is None or isinstance (personEmail , basestring )
175
- assert isModerator is None or isinstance (isModerator , bool )
176
- post_data = {}
177
- post_data ['teamId' ] = teamId
178
- if personId :
179
- post_data ['personId' ] = personId
180
- elif personEmail :
181
- post_data ['personEmail' ] = personEmail
182
- else :
183
- error_message = "personId or personEmail must be provided to " \
184
- "add a person to a team. Neither were provided."
185
- raise ciscosparkapiException (error_message )
186
- post_data ['isModerator' ] = isModerator
190
+ check_type (teamId , basestring , may_be_none = False )
191
+ check_type (personId , basestring )
192
+ check_type (personEmail , basestring )
193
+ check_type (isModerator , bool )
194
+
195
+ post_data = dict_from_items_with_values (
196
+ request_parameters ,
197
+ teamId = teamId ,
198
+ personId = personId ,
199
+ personEmail = personEmail ,
200
+ isModerator = isModerator ,
201
+ )
202
+
187
203
# API request
188
- json_obj = self ._session .post ('team/memberships' , json = post_data )
204
+ json_data = self ._session .post ('team/memberships' , json = post_data )
205
+
189
206
# Return a TeamMembership object created from the response JSON data
190
- return TeamMembership (json_obj )
207
+ return TeamMembership (json_data )
191
208
192
209
def get (self , membershipId ):
193
- """Get details for a team membership by ID.
210
+ """Get details for a team membership, by ID.
194
211
195
212
Args:
196
- membershipId(basestring): The membershipId of the team
197
- membership.
213
+ membershipId(basestring): The team membership ID.
198
214
199
215
Returns:
200
- TeamMembership: With the details of the requested team membership.
216
+ TeamMembership: A TeamMembership object with the details of the
217
+ requested team membership.
201
218
202
219
Raises:
203
- AssertionError : If the parameter types are incorrect.
220
+ TypeError : If the parameter types are incorrect.
204
221
SparkApiError: If the Cisco Spark cloud returns an error.
205
222
206
223
"""
207
- # Process args
208
- assert isinstance ( membershipId , basestring )
224
+ check_type ( membershipId , basestring , may_be_none = False )
225
+
209
226
# API request
210
- json_obj = self ._session .get ('team/memberships/' + membershipId )
227
+ json_data = self ._session .get ('team/memberships/' + membershipId )
228
+
211
229
# Return a TeamMembership object created from the response JSON data
212
- return TeamMembership (json_obj )
230
+ return TeamMembership (json_data )
213
231
214
- def update (self , membershipId , ** update_attributes ):
215
- """Update details for a team membership.
232
+ def update (self , membershipId , isModerator = None , ** request_parameters ):
233
+ """Update a team membership, by ID .
216
234
217
235
Args:
218
- membershipId(basestring): The membershipId of the team membership
219
- to be updated .
220
- isModerator(bool): If True, sets the person as a moderator for the
221
- team. If False, removes the person as a moderator for the team .
236
+ membershipId(basestring): The team membership ID.
237
+ isModerator(bool): Set to True to make the person a team moderator .
238
+ **request_parameters: Additional request parameters (provides
239
+ support for parameters that may be added in the future) .
222
240
223
241
Returns:
224
- TeamMembership: With the updated Spark team membership details.
242
+ TeamMembership: A TeamMembership object with the updated Spark team
243
+ membership details.
225
244
226
245
Raises:
227
- AssertionError: If the parameter types are incorrect.
228
- ciscosparkapiException: If an update attribute is not provided.
246
+ TypeError: If the parameter types are incorrect.
229
247
SparkApiError: If the Cisco Spark cloud returns an error.
230
248
231
249
"""
232
- # Process args
233
- assert isinstance (membershipId , basestring )
234
- # Process update_attributes keyword arguments
235
- if not update_attributes :
236
- error_message = "At least one **update_attributes keyword " \
237
- "argument must be specified."
238
- raise ciscosparkapiException (error_message )
250
+ check_type (membershipId , basestring , may_be_none = False )
251
+ check_type (isModerator , bool )
252
+
253
+ put_data = dict_from_items_with_values (
254
+ request_parameters ,
255
+ isModerator = isModerator ,
256
+ )
257
+
239
258
# API request
240
- json_obj = self ._session .put ('team/memberships/' + membershipId ,
241
- json = update_attributes )
259
+ json_data = self ._session .put ('team/memberships/' + membershipId ,
260
+ json = put_data )
261
+
242
262
# Return a TeamMembership object created from the response JSON data
243
- return TeamMembership (json_obj )
263
+ return TeamMembership (json_data )
244
264
245
265
def delete (self , membershipId ):
246
266
"""Delete a team membership, by ID.
247
267
248
268
Args:
249
- membershipId(basestring): The membershipId of the team membership
250
- to be deleted.
269
+ membershipId(basestring): The team membership ID.
251
270
252
271
Raises:
253
- AssertionError : If the parameter types are incorrect.
272
+ TypeError : If the parameter types are incorrect.
254
273
SparkApiError: If the Cisco Spark cloud returns an error.
255
274
256
275
"""
257
- # Process args
258
- assert isinstance ( membershipId , basestring )
276
+ check_type ( membershipId , basestring , may_be_none = False )
277
+
259
278
# API request
260
279
self ._session .delete ('team/memberships/' + membershipId )
0 commit comments