mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-12 01:02:39 +02:00
catch 403 and return insufficient_permissions in google drive tools
This commit is contained in:
parent
04daf0de71
commit
521e72e5a4
2 changed files with 33 additions and 7 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, Literal
|
from typing import Any, Literal
|
||||||
|
|
||||||
|
from googleapiclient.errors import HttpError
|
||||||
from langchain_core.tools import tool
|
from langchain_core.tools import tool
|
||||||
from langgraph.types import interrupt
|
from langgraph.types import interrupt
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
|
@ -180,12 +181,24 @@ def create_create_google_drive_file_tool(
|
||||||
f"Creating Google Drive file: name='{final_name}', type='{final_file_type}', connector={actual_connector_id}"
|
f"Creating Google Drive file: name='{final_name}', type='{final_file_type}', connector={actual_connector_id}"
|
||||||
)
|
)
|
||||||
client = GoogleDriveClient(session=db_session, connector_id=actual_connector_id)
|
client = GoogleDriveClient(session=db_session, connector_id=actual_connector_id)
|
||||||
created = await client.create_file(
|
try:
|
||||||
name=final_name,
|
created = await client.create_file(
|
||||||
mime_type=mime_type,
|
name=final_name,
|
||||||
parent_folder_id=final_parent_folder_id,
|
mime_type=mime_type,
|
||||||
content=final_content,
|
parent_folder_id=final_parent_folder_id,
|
||||||
)
|
content=final_content,
|
||||||
|
)
|
||||||
|
except HttpError as http_err:
|
||||||
|
if http_err.resp.status == 403:
|
||||||
|
logger.warning(
|
||||||
|
f"Insufficient permissions for connector {actual_connector_id}: {http_err}"
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
"status": "insufficient_permissions",
|
||||||
|
"connector_id": actual_connector_id,
|
||||||
|
"message": "This Google Drive account needs additional permissions. Please re-authenticate.",
|
||||||
|
}
|
||||||
|
raise
|
||||||
|
|
||||||
logger.info(f"Google Drive file created: id={created.get('id')}, name={created.get('name')}")
|
logger.info(f"Google Drive file created: id={created.get('id')}, name={created.get('name')}")
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
from googleapiclient.errors import HttpError
|
||||||
from langchain_core.tools import tool
|
from langchain_core.tools import tool
|
||||||
from langgraph.types import interrupt
|
from langgraph.types import interrupt
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
|
@ -149,7 +150,19 @@ def create_trash_google_drive_file_tool(
|
||||||
f"Trashing Google Drive file: file_id='{final_file_id}', connector={final_connector_id}"
|
f"Trashing Google Drive file: file_id='{final_file_id}', connector={final_connector_id}"
|
||||||
)
|
)
|
||||||
client = GoogleDriveClient(session=db_session, connector_id=connector.id)
|
client = GoogleDriveClient(session=db_session, connector_id=connector.id)
|
||||||
await client.trash_file(file_id=final_file_id)
|
try:
|
||||||
|
await client.trash_file(file_id=final_file_id)
|
||||||
|
except HttpError as http_err:
|
||||||
|
if http_err.resp.status == 403:
|
||||||
|
logger.warning(
|
||||||
|
f"Insufficient permissions for connector {connector.id}: {http_err}"
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
"status": "insufficient_permissions",
|
||||||
|
"connector_id": connector.id,
|
||||||
|
"message": "This Google Drive account needs additional permissions. Please re-authenticate.",
|
||||||
|
}
|
||||||
|
raise
|
||||||
|
|
||||||
logger.info(f"Google Drive file trashed: file_id={final_file_id}")
|
logger.info(f"Google Drive file trashed: file_id={final_file_id}")
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue