mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-04 20:20:37 +02:00
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from google.oauth2.credentials import Credentials as OAuthCredentials # type: ignore
|
|
from google.oauth2.service_account import Credentials as ServiceAccountCredentials # type: ignore
|
|
from googleapiclient.discovery import build # type: ignore
|
|
from googleapiclient.discovery import Resource # type: ignore
|
|
|
|
|
|
class GoogleDriveService(Resource):
|
|
pass
|
|
|
|
|
|
class GoogleDocsService(Resource):
|
|
pass
|
|
|
|
|
|
class AdminService(Resource):
|
|
pass
|
|
|
|
|
|
class GmailService(Resource):
|
|
pass
|
|
|
|
|
|
def _get_google_service(
|
|
service_name: str,
|
|
service_version: str,
|
|
creds: ServiceAccountCredentials | OAuthCredentials,
|
|
user_email: str | None = None,
|
|
) -> GoogleDriveService | GoogleDocsService | AdminService | GmailService:
|
|
service: Resource
|
|
if isinstance(creds, ServiceAccountCredentials):
|
|
creds = creds.with_subject(user_email)
|
|
service = build(service_name, service_version, credentials=creds)
|
|
elif isinstance(creds, OAuthCredentials):
|
|
service = build(service_name, service_version, credentials=creds)
|
|
|
|
return service
|
|
|
|
|
|
def get_google_docs_service(
|
|
creds: ServiceAccountCredentials | OAuthCredentials,
|
|
user_email: str | None = None,
|
|
) -> GoogleDocsService:
|
|
return _get_google_service("docs", "v1", creds, user_email)
|
|
|
|
|
|
def get_drive_service(
|
|
creds: ServiceAccountCredentials | OAuthCredentials,
|
|
user_email: str | None = None,
|
|
) -> GoogleDriveService:
|
|
return _get_google_service("drive", "v3", creds, user_email)
|
|
|
|
|
|
def get_admin_service(
|
|
creds: ServiceAccountCredentials | OAuthCredentials,
|
|
user_email: str | None = None,
|
|
) -> AdminService:
|
|
return _get_google_service("admin", "directory_v1", creds, user_email)
|
|
|
|
|
|
def get_gmail_service(
|
|
creds: ServiceAccountCredentials | OAuthCredentials,
|
|
user_email: str | None = None,
|
|
) -> GmailService:
|
|
return _get_google_service("gmail", "v1", creds, user_email)
|