|
29 | 29 | from .exceptions import ( |
30 | 30 | SparkApiError, SparkRateLimitError, ciscosparkapiException, |
31 | 31 | ) |
32 | | -from .models.access_token import AccessToken |
33 | | -from .models.license import License |
34 | | -from .models.membership import Membership |
35 | | -from .models.message import Message |
36 | | -from .models.organization import Organization |
37 | | -from .models.person import Person |
38 | | -from .models.role import Role |
39 | | -from .models.room import Room |
40 | | -from .models.team import Team |
41 | | -from .models.team_membership import TeamMembership |
42 | | -from .models.webhook import Webhook |
43 | | -from .models.webhook_event import WebhookEvent |
| 32 | +from .models import ( |
| 33 | + AccessToken, License, Membership, Message, Organization, Person, Role, |
| 34 | + Room, Team, TeamMembership, Webhook, WebhookEvent, sparkdata_factory, |
| 35 | +) |
44 | 36 | from .restsession import ( |
45 | 37 | DEFAULT_SINGLE_REQUEST_TIMEOUT, |
46 | 38 | DEFAULT_WAIT_ON_RATE_LIMIT, |
@@ -82,34 +74,35 @@ class CiscoSparkAPI(object): |
82 | 74 | CiscoSparkAPI wraps all of the individual Cisco Spark APIs and represents |
83 | 75 | them in a simple hierarchical structure. |
84 | 76 |
|
85 | | - :CiscoSparkAPI: :class:`people <PeopleAPI>` |
| 77 | + :CiscoSparkAPI: :class:`people <_PeopleAPI>` |
86 | 78 |
|
87 | | - :class:`rooms <RoomsAPI>` |
| 79 | + :class:`rooms <_RoomsAPI>` |
88 | 80 |
|
89 | | - :class:`memberships <MembershipsAPI>` |
| 81 | + :class:`memberships <_MembershipsAPI>` |
90 | 82 |
|
91 | | - :class:`messages <MessagesAPI>` |
| 83 | + :class:`messages <_MessagesAPI>` |
92 | 84 |
|
93 | | - :class:`teams <TeamsAPI>` |
| 85 | + :class:`teams <_TeamsAPI>` |
94 | 86 |
|
95 | | - :class:`team_memberships <TeamMembershipsAPI>` |
| 87 | + :class:`team_memberships <_TeamMembershipsAPI>` |
96 | 88 |
|
97 | | - :class:`webhooks <WebhooksAPI>` |
| 89 | + :class:`webhooks <_WebhooksAPI>` |
98 | 90 |
|
99 | | - :class:`organizations <OrganizationsAPI>` |
| 91 | + :class:`organizations <_OrganizationsAPI>` |
100 | 92 |
|
101 | | - :class:`licenses <LicensesAPI>` |
| 93 | + :class:`licenses <_LicensesAPI>` |
102 | 94 |
|
103 | | - :class:`roles <RolesAPI>` |
| 95 | + :class:`roles <_RolesAPI>` |
104 | 96 |
|
105 | | - :class:`access_tokens <AccessTokensAPI>` |
| 97 | + :class:`access_tokens <_AccessTokensAPI>` |
106 | 98 |
|
107 | 99 | """ |
108 | 100 |
|
109 | 101 | def __init__(self, access_token=None, base_url=DEFAULT_BASE_URL, |
110 | 102 | timeout=None, |
111 | 103 | single_request_timeout=DEFAULT_SINGLE_REQUEST_TIMEOUT, |
112 | | - wait_on_rate_limit=DEFAULT_WAIT_ON_RATE_LIMIT): |
| 104 | + wait_on_rate_limit=DEFAULT_WAIT_ON_RATE_LIMIT, |
| 105 | + object_factory=sparkdata_factory): |
113 | 106 | """Create a new CiscoSparkAPI object. |
114 | 107 |
|
115 | 108 | An access token must be used when interacting with the Cisco Spark API. |
@@ -138,6 +131,8 @@ def __init__(self, access_token=None, base_url=DEFAULT_BASE_URL, |
138 | 131 | ciscosparkapi.DEFAULT_SINGLE_REQUEST_TIMEOUT. |
139 | 132 | wait_on_rate_limit(bool): Enables or disables automatic rate-limit |
140 | 133 | handling. Defaults to ciscosparkapi.DEFAULT_WAIT_ON_RATE_LIMIT. |
| 134 | + object_factory(callable): The factory function to use to create |
| 135 | + Python objects from the returned Cisco Spark JSON data objects. |
141 | 136 |
|
142 | 137 | Returns: |
143 | 138 | CiscoSparkAPI: A new CiscoSparkAPI object. |
@@ -176,17 +171,21 @@ def __init__(self, access_token=None, base_url=DEFAULT_BASE_URL, |
176 | 171 | ) |
177 | 172 |
|
178 | 173 | # Spark API wrappers |
179 | | - self.people = _PeopleAPI(self._session) |
180 | | - self.rooms = _RoomsAPI(self._session) |
181 | | - self.memberships = _MembershipsAPI(self._session) |
182 | | - self.messages = _MessagesAPI(self._session) |
183 | | - self.teams = _TeamsAPI(self._session) |
184 | | - self.team_memberships = _TeamMembershipsAPI(self._session) |
185 | | - self.webhooks = _WebhooksAPI(self._session) |
186 | | - self.organizations = _OrganizationsAPI(self._session) |
187 | | - self.licenses = _LicensesAPI(self._session) |
188 | | - self.roles = _RolesAPI(self._session) |
189 | | - self.access_tokens = _AccessTokensAPI(self.base_url, timeout=timeout) |
| 174 | + self.people = _PeopleAPI(self._session, object_factory) |
| 175 | + self.rooms = _RoomsAPI(self._session, object_factory) |
| 176 | + self.memberships = _MembershipsAPI(self._session, object_factory) |
| 177 | + self.messages = _MessagesAPI(self._session, object_factory) |
| 178 | + self.teams = _TeamsAPI(self._session, object_factory) |
| 179 | + self.team_memberships = _TeamMembershipsAPI( |
| 180 | + self._session, object_factory |
| 181 | + ) |
| 182 | + self.webhooks = _WebhooksAPI(self._session, object_factory) |
| 183 | + self.organizations = _OrganizationsAPI(self._session, object_factory) |
| 184 | + self.licenses = _LicensesAPI(self._session, object_factory) |
| 185 | + self.roles = _RolesAPI(self._session, object_factory) |
| 186 | + self.access_tokens = _AccessTokensAPI( |
| 187 | + self.base_url, object_factory, timeout=single_request_timeout |
| 188 | + ) |
190 | 189 |
|
191 | 190 | @property |
192 | 191 | def access_token(self): |
|
0 commit comments