|
2 | 2 | """Python API wrapper for the Cisco Spark APIs."""
|
3 | 3 |
|
4 | 4 |
|
5 |
| -# Use future for Python v2 and v3 compatibility |
6 | 5 | from __future__ import (
|
7 | 6 | absolute_import,
|
8 | 7 | division,
|
9 | 8 | print_function,
|
10 | 9 | unicode_literals,
|
11 | 10 | )
|
12 |
| -from builtins import * |
13 |
| -from past.builtins import basestring |
14 |
| - |
15 |
| - |
16 |
| -__author__ = "Chris Lunsford" |
17 |
| -__author_email__ = "[email protected]" |
18 |
| -__copyright__ = "Copyright (c) 2016-2018 Cisco and/or its affiliates." |
19 |
| -__license__ = "MIT" |
20 |
| -__all__ = [ |
21 |
| - "CiscoSparkAPI", "ciscosparkapiException", "SparkApiError", |
22 |
| - "SparkRateLimitError", "Person", "Room", "Membership", "Message", "Team", |
23 |
| - "TeamMembership", "Webhook", "WebhookEvent", "Organization", "License", |
24 |
| - "Role", "AccessToken" |
25 |
| -] |
26 |
| - |
27 | 11 |
|
| 12 | +from builtins import * |
28 | 13 | import logging
|
29 | 14 | import os
|
30 | 15 |
|
31 |
| -from .api.people import Person |
32 |
| -from .api.rooms import Room |
33 |
| -from .api.memberships import Membership |
34 |
| -from .api.messages import Message |
35 |
| -from .api.teams import Team |
36 |
| -from .api.team_memberships import TeamMembership |
37 |
| -from .api.webhooks import Webhook, WebhookEvent |
38 |
| -from .api.organizations import Organization |
39 |
| -from .api.licenses import License |
40 |
| -from .api.roles import Role |
41 |
| -from .api.access_tokens import AccessToken |
| 16 | +from past.builtins import basestring |
42 | 17 |
|
43 |
| -from .api.people import PeopleAPI as _PeopleAPI |
44 |
| -from .api.rooms import RoomsAPI as _RoomsAPI |
| 18 | +from .api.access_tokens import AccessTokensAPI as _AccessTokensAPI |
| 19 | +from .api.licenses import LicensesAPI as _LicensesAPI |
45 | 20 | from .api.memberships import MembershipsAPI as _MembershipsAPI
|
46 | 21 | from .api.messages import MessagesAPI as _MessagesAPI
|
47 |
| -from .api.teams import TeamsAPI as _TeamsAPI |
48 |
| -from .api.team_memberships import TeamMembershipsAPI as _TeamMembershipsAPI |
49 |
| -from .api.webhooks import WebhooksAPI as _WebhooksAPI |
50 | 22 | from .api.organizations import OrganizationsAPI as _OrganizationsAPI
|
51 |
| -from .api.licenses import LicensesAPI as _LicensesAPI |
| 23 | +from .api.people import PeopleAPI as _PeopleAPI |
52 | 24 | from .api.roles import RolesAPI as _RolesAPI
|
53 |
| -from .api.access_tokens import AccessTokensAPI as _AccessTokensAPI |
54 |
| - |
| 25 | +from .api.rooms import RoomsAPI as _RoomsAPI |
| 26 | +from .api.team_memberships import TeamMembershipsAPI as _TeamMembershipsAPI |
| 27 | +from .api.teams import TeamsAPI as _TeamsAPI |
| 28 | +from .api.webhooks import WebhooksAPI as _WebhooksAPI |
55 | 29 | from .exceptions import (
|
56 |
| - ciscosparkapiException, |
57 |
| - SparkApiError, |
58 |
| - SparkRateLimitError, |
| 30 | + SparkApiError, SparkRateLimitError, ciscosparkapiException, |
| 31 | +) |
| 32 | +from .models import ( |
| 33 | + AccessToken, License, Membership, Message, Organization, Person, Role, |
| 34 | + Room, Team, TeamMembership, Webhook, WebhookEvent, sparkdata_factory, |
59 | 35 | )
|
60 |
| - |
61 | 36 | from .restsession import (
|
62 | 37 | DEFAULT_SINGLE_REQUEST_TIMEOUT,
|
63 | 38 | DEFAULT_WAIT_ON_RATE_LIMIT,
|
64 | 39 | RestSession as _RestSession,
|
65 | 40 | )
|
66 |
| - |
67 | 41 | from .utils import check_type
|
68 | 42 |
|
69 | 43 |
|
| 44 | +__author__ = "Chris Lunsford" |
| 45 | +__author_email__ = "[email protected]" |
| 46 | +__copyright__ = "Copyright (c) 2016-2018 Cisco and/or its affiliates." |
| 47 | +__license__ = "MIT" |
| 48 | + |
| 49 | + |
70 | 50 | # Versioneer version control
|
71 | 51 | from ._version import get_versions
|
72 | 52 | __version__ = get_versions()['version']
|
@@ -94,34 +74,35 @@ class CiscoSparkAPI(object):
|
94 | 74 | CiscoSparkAPI wraps all of the individual Cisco Spark APIs and represents
|
95 | 75 | them in a simple hierarchical structure.
|
96 | 76 |
|
97 |
| - :CiscoSparkAPI: :class:`people <PeopleAPI>` |
| 77 | + :CiscoSparkAPI: :class:`people <_PeopleAPI>` |
98 | 78 |
|
99 |
| - :class:`rooms <RoomsAPI>` |
| 79 | + :class:`rooms <_RoomsAPI>` |
100 | 80 |
|
101 |
| - :class:`memberships <MembershipsAPI>` |
| 81 | + :class:`memberships <_MembershipsAPI>` |
102 | 82 |
|
103 |
| - :class:`messages <MessagesAPI>` |
| 83 | + :class:`messages <_MessagesAPI>` |
104 | 84 |
|
105 |
| - :class:`teams <TeamsAPI>` |
| 85 | + :class:`teams <_TeamsAPI>` |
106 | 86 |
|
107 |
| - :class:`team_memberships <TeamMembershipsAPI>` |
| 87 | + :class:`team_memberships <_TeamMembershipsAPI>` |
108 | 88 |
|
109 |
| - :class:`webhooks <WebhooksAPI>` |
| 89 | + :class:`webhooks <_WebhooksAPI>` |
110 | 90 |
|
111 |
| - :class:`organizations <OrganizationsAPI>` |
| 91 | + :class:`organizations <_OrganizationsAPI>` |
112 | 92 |
|
113 |
| - :class:`licenses <LicensesAPI>` |
| 93 | + :class:`licenses <_LicensesAPI>` |
114 | 94 |
|
115 |
| - :class:`roles <RolesAPI>` |
| 95 | + :class:`roles <_RolesAPI>` |
116 | 96 |
|
117 |
| - :class:`access_tokens <AccessTokensAPI>` |
| 97 | + :class:`access_tokens <_AccessTokensAPI>` |
118 | 98 |
|
119 | 99 | """
|
120 | 100 |
|
121 | 101 | def __init__(self, access_token=None, base_url=DEFAULT_BASE_URL,
|
122 | 102 | timeout=None,
|
123 | 103 | single_request_timeout=DEFAULT_SINGLE_REQUEST_TIMEOUT,
|
124 |
| - wait_on_rate_limit=DEFAULT_WAIT_ON_RATE_LIMIT): |
| 104 | + wait_on_rate_limit=DEFAULT_WAIT_ON_RATE_LIMIT, |
| 105 | + object_factory=sparkdata_factory): |
125 | 106 | """Create a new CiscoSparkAPI object.
|
126 | 107 |
|
127 | 108 | An access token must be used when interacting with the Cisco Spark API.
|
@@ -150,6 +131,8 @@ def __init__(self, access_token=None, base_url=DEFAULT_BASE_URL,
|
150 | 131 | ciscosparkapi.DEFAULT_SINGLE_REQUEST_TIMEOUT.
|
151 | 132 | wait_on_rate_limit(bool): Enables or disables automatic rate-limit
|
152 | 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. |
153 | 136 |
|
154 | 137 | Returns:
|
155 | 138 | CiscoSparkAPI: A new CiscoSparkAPI object.
|
@@ -188,17 +171,21 @@ def __init__(self, access_token=None, base_url=DEFAULT_BASE_URL,
|
188 | 171 | )
|
189 | 172 |
|
190 | 173 | # Spark API wrappers
|
191 |
| - self.people = _PeopleAPI(self._session) |
192 |
| - self.rooms = _RoomsAPI(self._session) |
193 |
| - self.memberships = _MembershipsAPI(self._session) |
194 |
| - self.messages = _MessagesAPI(self._session) |
195 |
| - self.teams = _TeamsAPI(self._session) |
196 |
| - self.team_memberships = _TeamMembershipsAPI(self._session) |
197 |
| - self.webhooks = _WebhooksAPI(self._session) |
198 |
| - self.organizations = _OrganizationsAPI(self._session) |
199 |
| - self.licenses = _LicensesAPI(self._session) |
200 |
| - self.roles = _RolesAPI(self._session) |
201 |
| - 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 | + ) |
202 | 189 |
|
203 | 190 | @property
|
204 | 191 | def access_token(self):
|
|
0 commit comments