arcade-mcp/toolkits/asana/arcade_asana/decorators.py
2025-05-12 14:59:52 -03:00

26 lines
797 B
Python

from functools import wraps
from typing import Any, Callable
def clean_asana_response(func: Callable[..., Any]) -> Callable[..., Any]:
def response_cleaner(data: dict[str, Any]) -> dict[str, Any]:
if "gid" in data:
data["id"] = data["gid"]
del data["gid"]
for k, v in data.items():
if isinstance(v, dict):
data[k] = response_cleaner(v)
elif isinstance(v, list):
data[k] = [
item if not isinstance(item, dict) else response_cleaner(item) for item in v
]
return data
@wraps(func)
async def wrapper(*args: Any, **kwargs: Any) -> Any:
response = await func(*args, **kwargs)
return response_cleaner(response)
return wrapper