| from core.tools.errors import ToolProviderCredentialValidationError | from core.tools.errors import ToolProviderCredentialValidationError | ||||
| from core.tools.tool.tool import Tool | from core.tools.tool.tool import Tool | ||||
| API_TOOL_DEFAULT_TIMEOUT = (10, 60) | |||||
| class ApiTool(Tool): | class ApiTool(Tool): | ||||
| api_bundle: ApiBasedToolBundle | api_bundle: ApiBasedToolBundle | ||||
| # do http request | # do http request | ||||
| if method == 'get': | if method == 'get': | ||||
| response = ssrf_proxy.get(url, params=params, headers=headers, cookies=cookies, timeout=10, follow_redirects=True) | |||||
| response = ssrf_proxy.get(url, params=params, headers=headers, cookies=cookies, timeout=API_TOOL_DEFAULT_TIMEOUT, follow_redirects=True) | |||||
| elif method == 'post': | elif method == 'post': | ||||
| response = ssrf_proxy.post(url, params=params, headers=headers, cookies=cookies, data=body, timeout=10, follow_redirects=True) | |||||
| response = ssrf_proxy.post(url, params=params, headers=headers, cookies=cookies, data=body, timeout=API_TOOL_DEFAULT_TIMEOUT, follow_redirects=True) | |||||
| elif method == 'put': | elif method == 'put': | ||||
| response = ssrf_proxy.put(url, params=params, headers=headers, cookies=cookies, data=body, timeout=10, follow_redirects=True) | |||||
| response = ssrf_proxy.put(url, params=params, headers=headers, cookies=cookies, data=body, timeout=API_TOOL_DEFAULT_TIMEOUT, follow_redirects=True) | |||||
| elif method == 'delete': | elif method == 'delete': | ||||
| response = ssrf_proxy.delete(url, params=params, headers=headers, cookies=cookies, data=body, timeout=10, allow_redirects=True) | |||||
| response = ssrf_proxy.delete(url, params=params, headers=headers, cookies=cookies, data=body, timeout=API_TOOL_DEFAULT_TIMEOUT, allow_redirects=True) | |||||
| elif method == 'patch': | elif method == 'patch': | ||||
| response = ssrf_proxy.patch(url, params=params, headers=headers, cookies=cookies, data=body, timeout=10, follow_redirects=True) | |||||
| response = ssrf_proxy.patch(url, params=params, headers=headers, cookies=cookies, data=body, timeout=API_TOOL_DEFAULT_TIMEOUT, follow_redirects=True) | |||||
| elif method == 'head': | elif method == 'head': | ||||
| response = ssrf_proxy.head(url, params=params, headers=headers, cookies=cookies, timeout=10, follow_redirects=True) | |||||
| response = ssrf_proxy.head(url, params=params, headers=headers, cookies=cookies, timeout=API_TOOL_DEFAULT_TIMEOUT, follow_redirects=True) | |||||
| elif method == 'options': | elif method == 'options': | ||||
| response = ssrf_proxy.options(url, params=params, headers=headers, cookies=cookies, timeout=10, follow_redirects=True) | |||||
| response = ssrf_proxy.options(url, params=params, headers=headers, cookies=cookies, timeout=API_TOOL_DEFAULT_TIMEOUT, follow_redirects=True) | |||||
| else: | else: | ||||
| raise ValueError(f'Invalid http method {method}') | raise ValueError(f'Invalid http method {method}') | ||||