Source code for tooluniverse.cbioportal_tool
import requests
from typing import Any, Dict
from .base_tool import BaseTool
from .tool_registry import register_tool
[docs]
@register_tool("CBioPortalRESTTool")
class CBioPortalRESTTool(BaseTool):
[docs]
def __init__(self, tool_config: Dict):
super().__init__(tool_config)
self.base_url = "https://www.cbioportal.org/api"
self.session = requests.Session()
self.session.headers.update(
{"Accept": "application/json", "User-Agent": "ToolUniverse/1.0"}
)
self.timeout = 30
[docs]
def _build_url(self, args: Dict[str, Any]) -> str:
url = self.tool_config["fields"]["endpoint"]
for k, v in args.items():
url = url.replace(f"{{{k}}}", str(v))
return url
[docs]
def run(self, arguments: Dict[str, Any]) -> Dict[str, Any]:
try:
url = self._build_url(arguments)
response = self.session.get(url, timeout=self.timeout)
response.raise_for_status()
data = response.json()
return {
"status": "success",
"data": data,
"url": url,
"count": len(data) if isinstance(data, list) else 1,
}
except Exception as e:
return {
"status": "error",
"error": f"cBioPortal API error: {str(e)}",
"url": url,
}