arcade-mcp/toolkits/microsoft/arcade_microsoft/client.py
2025-05-09 13:34:40 -08:00

26 lines
947 B
Python

import datetime
from typing import Any
from azure.core.credentials import AccessToken, TokenCredential
from msgraph import GraphServiceClient
DEFAULT_SCOPE = "https://graph.microsoft.com/.default"
class StaticTokenCredential(TokenCredential):
"""Implementation of TokenCredential protocol to be provided to the MSGraph SDK client"""
def __init__(self, token: str):
self._token = token
def get_token(self, *scopes: str, **kwargs: Any) -> AccessToken:
# An expiration is required by MSGraph SDK. Set to 1 hour from now.
expires_on = int(datetime.datetime.now(datetime.timezone.utc).timestamp()) + 3600
return AccessToken(self._token, expires_on)
def get_client(token: str) -> GraphServiceClient:
"""Create and return a MSGraph SDK client, given the provided token."""
token_credential = StaticTokenCredential(token)
return GraphServiceClient(token_credential, scopes=[DEFAULT_SCOPE])