mirror of
				https://github.com/open-webui/openapi-servers
				synced 2025-06-26 18:17:04 +00:00 
			
		
		
		
	fix pydantic json schema warnings
This commit is contained in:
		
							parent
							
								
									bd133a7578
								
							
						
					
					
						commit
						f27804f4f9
					
				| @ -2,7 +2,7 @@ | |||||||
| import os | import os | ||||||
| import httpx | import httpx | ||||||
| import inspect | import inspect | ||||||
| from typing import Optional, List, Dict, Any, Type | from typing import Optional, List, Dict, Any, Type, Callable | ||||||
| from fastapi import FastAPI, HTTPException, Body, Depends | from fastapi import FastAPI, HTTPException, Body, Depends | ||||||
| from fastapi.middleware.cors import CORSMiddleware | from fastapi.middleware.cors import CORSMiddleware | ||||||
| from pydantic import BaseModel, Field | from pydantic import BaseModel, Field | ||||||
| @ -269,31 +269,35 @@ TOOL_MAPPING = { | |||||||
|     }, |     }, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Dynamically create endpoints for each tool | # Define a function factory to create endpoint handlers | ||||||
| for tool_name, config in TOOL_MAPPING.items(): | def create_endpoint_handler(tool_name: str, method: Callable, args_model: Type[BaseModel]): | ||||||
|     args_model = config["args_model"] |     async def endpoint_handler(args: args_model = Body(...)) -> ToolResponse: | ||||||
|     method_to_call = config["method"] |  | ||||||
|     tool_description = config["description"] |  | ||||||
| 
 |  | ||||||
|     async def endpoint_func(args: args_model = Body(...), # type: ignore |  | ||||||
|                             method=method_to_call): # Capture method in closure |  | ||||||
|         try: |         try: | ||||||
|             result = await method(args=args) |             result = await method(args=args) | ||||||
|             return {"content": result} |             return {"content": result} | ||||||
|         except HTTPException as e: |         except HTTPException as e: | ||||||
|             raise e |             raise e | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             print(f"Error executing tool: {e}") |             print(f"Error executing tool {tool_name}: {e}") | ||||||
|             raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}") |             raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}") | ||||||
|  |     return endpoint_handler | ||||||
| 
 | 
 | ||||||
|  | # Register endpoints for each tool | ||||||
|  | for tool_name, config in TOOL_MAPPING.items(): | ||||||
|  |     handler = create_endpoint_handler( | ||||||
|  |         tool_name=tool_name, | ||||||
|  |         method=config["method"], | ||||||
|  |         args_model=config["args_model"] | ||||||
|  |     ) | ||||||
|  |      | ||||||
|     app.post( |     app.post( | ||||||
|         f"/{tool_name}", |         f"/{tool_name}", | ||||||
|         response_model=ToolResponse, |         response_model=ToolResponse, | ||||||
|         summary=tool_description, |         summary=config["description"], | ||||||
|         description=f"Executes the {tool_name} tool. Arguments are passed in the request body.", |         description=f"Executes the {tool_name} tool. Arguments are passed in the request body.", | ||||||
|         tags=["Slack Tools"], |         tags=["Slack Tools"], | ||||||
|         name=tool_name |         name=tool_name | ||||||
|     )(endpoint_func) |     )(handler) | ||||||
| 
 | 
 | ||||||
| # --- Root Endpoint --- | # --- Root Endpoint --- | ||||||
| @app.get("/", summary="Root endpoint", include_in_schema=False) | @app.get("/", summary="Root endpoint", include_in_schema=False) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user