Skip to content

Commit 0399fef

Browse files
committed
Update WebexTeamsAPI
Provide access to the access_tokens API wrapper directly from the WebexTeamsAPI class *before* instantiating an instance of the class (which requires an access token). Also provide convenience class methods that will instantiate a new WebexTeamsAPI connection object from an OAuth Authorization Code or Refresh Token.
1 parent 27178df commit 0399fef

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

webexteamssdk/api/__init__.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,66 @@ def single_request_timeout(self):
230230
def wait_on_rate_limit(self):
231231
"""Automatic rate-limit handling enabled / disabled."""
232232
return self._session.wait_on_rate_limit
233+
234+
# Create a class attribute for the Access Tokens API that can be accessed
235+
# before WebexTeamsAPI object is initialized.
236+
access_tokens = AccessTokensAPI(
237+
base_url=DEFAULT_BASE_URL,
238+
object_factory=immutable_data_factory,
239+
single_request_timeout=DEFAULT_SINGLE_REQUEST_TIMEOUT,
240+
)
241+
242+
@classmethod
243+
def from_oauth_code(cls, client_id, client_secret, code, redirect_uri):
244+
"""Create a new WebexTeamsAPI connection object using an OAuth code.
245+
246+
Exchange an Authorization Code for an Access Token, then use the access
247+
token to create a new WebexTeamsAPI connection object.
248+
249+
Args:
250+
client_id(basestring): Provided when you created your integration.
251+
client_secret(basestring): Provided when you created your
252+
integration.
253+
code(basestring): The Authorization Code provided by the user
254+
OAuth process.
255+
redirect_uri(basestring): The redirect URI used in the user OAuth
256+
process.
257+
258+
Returns:
259+
AccessToken: An AccessToken object with the access token provided
260+
by the Webex Teams cloud.
261+
262+
Raises:
263+
TypeError: If the parameter types are incorrect.
264+
ApiError: If the Webex Teams cloud returns an error.
265+
"""
266+
token_obj = cls.access_tokens.get(client_id, client_secret, code,
267+
redirect_uri)
268+
269+
return cls(access_token=token_obj.access_token)
270+
271+
@classmethod
272+
def from_oauth_refresh(cls, client_id, client_secret, refresh_token):
273+
"""Create a new WebexTeamsAPI connection object using an OAuth refresh.
274+
275+
Exchange a refresh token for an Access Token, then use the access
276+
token to create a new WebexTeamsAPI connection object.
277+
278+
Args:
279+
client_id(basestring): Provided when you created your integration.
280+
client_secret(basestring): Provided when you created your
281+
integration.
282+
refresh_token(basestring): Provided when you requested the Access
283+
Token.
284+
285+
Returns:
286+
AccessToken: With the access token provided by the Webex Teams
287+
cloud.
288+
289+
Raises:
290+
TypeError: If the parameter types are incorrect.
291+
ApiError: If the Webex Teams cloud returns an error.
292+
"""
293+
token_obj = cls.access_tokens.refresh(client_id, client_secret,
294+
refresh_token)
295+
return cls(access_token=token_obj.access_token)

0 commit comments

Comments
 (0)