From 5d98f7b56509ffb85a63913bf84fc593732d7b5b Mon Sep 17 00:00:00 2001 From: ViaSocket-Git Date: Mon, 2 Dec 2024 12:36:48 +0530 Subject: [PATCH 1/5] Response_middleware-New Format --- index.py | 3 ++ src/controllers/apiCallController.py | 24 +++++----- src/controllers/apicallControllerV2.py | 38 ++++++++++------ src/controllers/bridge_version_controller.py | 16 +++++-- src/controllers/configController.py | 44 ++++++++++++------- src/middlewares/getDataUsingBridgeId.py | 1 - src/middlewares/interfaceMiddlewares.py | 23 +++++++--- src/middlewares/response_middleware.py | 27 ++++++++++++ src/routes/apiCall_routes.py | 15 ++++--- src/services/commonServices/apiCallService.py | 34 +++++++++----- src/services/commonServices/bridgeServices.py | 22 ++++++---- 11 files changed, 167 insertions(+), 80 deletions(-) create mode 100644 src/middlewares/response_middleware.py diff --git a/index.py b/index.py index c7f24175..17026454 100644 --- a/index.py +++ b/index.py @@ -17,6 +17,7 @@ from src.services.commonServices.queueService.queueService import queue_obj from src.services.utils.logger import logger from src.routes.bridge_version_routes import router as bridge_version +from src.middlewares.response_middleware import ResponseMiddleware async def consume_messages_in_executor(): await queue_obj.consume_messages() @@ -56,6 +57,8 @@ async def lifespan(app: FastAPI): allow_headers=["*"], max_age=86400 ) +# Add middleware +app.add_middleware(ResponseMiddleware) # Healthcheck route @app.get("/healthcheck") diff --git a/src/controllers/apiCallController.py b/src/controllers/apiCallController.py index 5f69df90..e783b93a 100644 --- a/src/controllers/apiCallController.py +++ b/src/controllers/apiCallController.py @@ -1,5 +1,4 @@ from fastapi import HTTPException, status -from fastapi.responses import JSONResponse from src.db_services.apiCallDbService import get_all_api_calls_by_org_id from src.db_services.apiCallDbService import update_api_call_by_function_id from src.db_services.apiCallDbService import get_function_by_id @@ -8,12 +7,14 @@ async def get_all_apicalls_controller(request): try: org_id = request.state.profile['org']['id'] functions = await get_all_api_calls_by_org_id(org_id=org_id) - return JSONResponse(status_code=200, content={ + response_data = { "success": True, "message": "Get all functions of a org successfully", - "data" : functions, - "org_id": org_id # [?] is it really needed - }) + "data": {"functions": functions,"org_id": org_id} + } + request.state.statusCode = 200 + request.state.response = response_data + return {} except Exception as e: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e,) @@ -61,11 +62,14 @@ async def update_apicalls_controller(request, function_id): updated_function = await update_api_call_by_function_id( org_id=org_id, function_id=function_id, data_to_update=data_to_update ) - - return JSONResponse(status_code=200, content={ - "success": True, - "data": updated_function - }) + response_data = { + "success": True, + "message": None, + "data": updated_function + } + request.state.statusCode = 200 + request.state.response = response_data + return {} except Exception as e: print(f"Error updating function: {e}") diff --git a/src/controllers/apicallControllerV2.py b/src/controllers/apicallControllerV2.py index 2cda76a7..5a0001b1 100644 --- a/src/controllers/apicallControllerV2.py +++ b/src/controllers/apicallControllerV2.py @@ -1,5 +1,4 @@ from fastapi import Request, HTTPException -from fastapi.responses import JSONResponse from src.db_services.ConfigurationServices import get_bridges, update_bridge, get_bridges_with_tools from src.services.utils.helper import Helper from src.services.utils.apicallUtills import get_api_data, save_api, delete_api @@ -46,24 +45,28 @@ async def creates_api(request: Request): raise HTTPException(status_code=400, detail="Something went wrong!") if result.get('success'): - return JSONResponse(status_code=200, content={ - "message": "API saved successfully", - "success": True, - "activated": True, - "data": result['api_data'] - }) + response_data = { + "success": True, + "message": "API saved successfully", + "data": {"activated": True,"data": result['api_data']} + } + request.state.statusCode = 200 + request.state.response = response_data + return {} else: raise HTTPException(status_code=400, detail=result) elif status in ["delete", "paused"]: result = await delete_api(function_name, org_id) if result: - return JSONResponse(status_code=200, content={ - "message": "API deleted successfully", - "success": True, - "deleted": True, - "data": result - }) + response_data = { + "success": True, + "message": "API deleted successfully", + "data": {"deleted": True,"data": result} + } + request.state.statusCode = 200 + request.state.response = response_data + return {} else: raise HTTPException(status_code=400, detail=result) @@ -103,7 +106,14 @@ async def updates_api(request: Request, bridge_id: str): }) else: - return JSONResponse(status_code=400, content=result) + response_data = { + "success": False, + "message": None, + "data": result + } + request.state.statusCode = 400 + request.state.response = response_data + return {} except Exception as error: print(f"error in viasocket embed get api => {error}") diff --git a/src/controllers/bridge_version_controller.py b/src/controllers/bridge_version_controller.py index 526ac33b..f4b2d5c2 100644 --- a/src/controllers/bridge_version_controller.py +++ b/src/controllers/bridge_version_controller.py @@ -1,6 +1,5 @@ import json from fastapi import HTTPException, status -from fastapi.responses import JSONResponse from ..db_services.bridge_version_services import create_bridge_version, update_bridges, get_version_with_tools, publish from src.services.utils.helper import Helper from ..db_services.ConfigurationServices import get_bridges_with_tools, update_bridge, get_bridges_without_tools @@ -12,7 +11,10 @@ async def create_version(request): org_id = request.state.profile['org']['id'] bridge_data = await get_bridges_without_tools(org_id=org_id, version_id= version_id) if bridge_data is None: - return JSONResponse({"success": False, "message": "no version found"}) + response_data = {"success": False,"message": "no version found","data": None} + request.state.statusCode = 400 + request.state.response = response_data + return {} parent_id = bridge_data.get('bridges').get('parent_id') create_new_version = await create_bridge_version(bridge_data.get('bridges'), parent_id=parent_id) update_fields = {'versions' : [create_new_version]} @@ -53,7 +55,10 @@ async def publish_version(request, version_id): org_id = request.state.profile['org']['id'] result = await publish(org_id, version_id) if result['success']: - return JSONResponse({"success": True, "message": "version published successfully", "version_id": version_id}) + response_data = {"success": True,"message": "version published successfully","data": {"version_id": version_id}} + request.state.statusCode = 200 + request.state.response = response_data + return {} return result except Exception as e: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e) @@ -74,7 +79,10 @@ async def discard_version(request, version_id): bridge_data['bridges']['function_ids'] = [ObjectId(fid) for fid in function_ids] result = await update_bridge(version_id=version_id, update_fields=bridge_data['bridges']) if 'success' in result: - return JSONResponse({"success": True, "message": "version changes discarded successfully", "version_id": version_id}) + response_data = {"success": True,"message": "version changes discarded successfully","data": {"version_id": version_id}} + request.state.statusCode = 200 + request.state.response = response_data + return {} return result \ No newline at end of file diff --git a/src/controllers/configController.py b/src/controllers/configController.py index c3e2be5a..6183a7a8 100644 --- a/src/controllers/configController.py +++ b/src/controllers/configController.py @@ -1,5 +1,4 @@ from fastapi import HTTPException, status -from fastapi.responses import JSONResponse from pydantic import ValidationError from src.db_services.ConfigurationServices import create_bridge, get_bridge_by_id, get_all_bridges_in_org, update_bridge, update_bridge_ids_in_api_calls, get_bridges_with_tools, get_apikey_creds from src.configs.modelConfiguration import ModelsConfig as model_configuration @@ -65,17 +64,24 @@ async def create_bridges_controller(request): create_version = await create_bridge_version(result['bridge']) update_fields = {'versions' : [create_version]} updated_bridge_result = (await update_bridge(str(result['bridge']['_id']), update_fields)).get('result',{}) - return JSONResponse(status_code=200, content={ - "success": True, - "message": "Bridge created successfully", - "bridge" : json.loads(json.dumps(updated_bridge_result, default=str)) - - }) + response_data = { + "success": True, + "message": "Bridge created successfully", + "data": { + "bridge" : json.loads(json.dumps(updated_bridge_result, default=str)) + } + } + request.state.response = response_data + request.state.statusCode = 200 else: - return JSONResponse(status_code=400, content={ - "success": False, - "message": json.loads(json.dumps(result.get('error'), default=str)) - }) + response_data = { + "success": False, + "message": json.loads(json.dumps(result.get('error'), default=str)), + "data": {} + } + request.state.response = response_data + request.state.statusCode = 400 + return {} except Exception as e: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e) @@ -151,14 +157,18 @@ async def get_all_bridges(request): org_id = request.state.profile['org']['id'] bridges = await get_all_bridges_in_org(org_id) embed_token = Helper.generate_token({ "org_id": Config.ORG_ID, "project_id": Config.PROJECT_ID, "user_id": org_id },Config.Access_key ) - return JSONResponse(status_code=200, content={ + response_data = { "success": True, "message": "Get all bridges successfully", - "bridge" : bridges, - "embed_token": embed_token, - "org_id": org_id - - }) + "data": { + "bridge" : bridges, + "embed_token": embed_token, + "org_id": org_id + } + } + request.state.statusCode = 200 + request.state.response = response_data + return {} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) async def get_all_service_models_controller(service): diff --git a/src/middlewares/getDataUsingBridgeId.py b/src/middlewares/getDataUsingBridgeId.py index 241781f5..bdbe8f3f 100644 --- a/src/middlewares/getDataUsingBridgeId.py +++ b/src/middlewares/getDataUsingBridgeId.py @@ -1,5 +1,4 @@ from fastapi import Request, HTTPException -from fastapi.responses import JSONResponse from ..services.utils.getConfiguration import getConfiguration from src.configs.models import services from src.services.commonServices.common import chat diff --git a/src/middlewares/interfaceMiddlewares.py b/src/middlewares/interfaceMiddlewares.py index ee1c60b3..a2eac8cb 100644 --- a/src/middlewares/interfaceMiddlewares.py +++ b/src/middlewares/interfaceMiddlewares.py @@ -1,5 +1,4 @@ from fastapi import Request, HTTPException -from fastapi.responses import JSONResponse from ..db_services import ConfigurationServices import jwt from config import Config @@ -22,7 +21,10 @@ async def send_data_middleware(request: Request, botId: str): chatBotId = botId flag = body.get("flag") or False if(message == ""): - return JSONResponse(status_code=400, content={'error':"Message cannot be null"}) + response_data = {"success": False,"message": None,"data": {'error':"Message cannot be null"}} + request.state.statusCode = 400 + request.state.response = response_data + return {} channelId = f"{chatBotId}{threadId.strip() if threadId and threadId.strip() else userId}" @@ -74,8 +76,11 @@ async def send_data_middleware(request: Request, botId: str): return await chat_completion(request=request) except HTTPException as http_error: raise http_error # Re-raise HTTP exceptions for proper handling - except Exception as error: - return JSONResponse(status_code=400, content={'error': str(error)}) + except Exception as error: + response_data = {"success": False,"message": None,"data":{'error': str(error)}} + request.state.statusCode = 400 + request.state.response = response_data + return {} async def chat_bot_auth(request: Request): timer_obj = Timer() @@ -146,6 +151,12 @@ async def reset_chatBot(request: Request, botId: str): } if result['success']: await sendResponse(response_format, response, True) - return JSONResponse(status_code=200, content={'success': True, 'message': 'Chatbot reset successfully'}) + response_data = {"success": True,"message": "Chatbot reset successfully","data": None} + request.state.statusCode = 200 + request.state.response = response_data + return {} else: - return JSONResponse(status_code=400, content={'success': False, 'message': 'Error resetting chatbot'}) + response_data = {"success": False,"message": "Error resetting chatbot","data": None} + request.state.statusCode = 400 + request.state.response = response_data + return {} \ No newline at end of file diff --git a/src/middlewares/response_middleware.py b/src/middlewares/response_middleware.py new file mode 100644 index 00000000..d5d6194f --- /dev/null +++ b/src/middlewares/response_middleware.py @@ -0,0 +1,27 @@ +from fastapi.responses import JSONResponse +from starlette.middleware.base import BaseHTTPMiddleware + +class ResponseMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request, call_next): + # Get the original response + response = await call_next(request) + + response_data = getattr(request.state, "response", None) + status_code = getattr(request.state, "statusCode", None) + + # If response_data exists, format it + if response_data: + success = response_data.get("success", status_code == 200) + message = response_data.get("message", "Request processed successfully") + data = response_data.get("data", {}) + + formatted_response = { + "status": status_code, + "success": success, + "message": message, + "data": data + } + + return JSONResponse(content=formatted_response, status_code=status_code) + + return response diff --git a/src/routes/apiCall_routes.py b/src/routes/apiCall_routes.py index 777a85e3..00bff2c2 100644 --- a/src/routes/apiCall_routes.py +++ b/src/routes/apiCall_routes.py @@ -2,7 +2,6 @@ from ..middlewares.middleware import jwt_middleware from ..controllers.apiCallController import get_all_apicalls_controller from ..controllers.apiCallController import update_apicalls_controller -from fastapi.responses import JSONResponse router = APIRouter() @router.get('/all', dependencies=[Depends(jwt_middleware)]) @@ -15,9 +14,11 @@ async def update_apicalls(request: Request, function_id: str): @router.get('/test', dependencies=[Depends(jwt_middleware)]) async def get_all_apicalls(request: Request): - return JSONResponse(status_code=200, content={ - "success": True, - "message": "Sucessfully authenticated", - "org_id": request.state.profile['org']['id'], - "organization_name": request.state.profile['org']['name'] - }) \ No newline at end of file + response_data = { + "success": True, + "message": "Sucessfully authenticated", + "data": {"org_id": request.state.profile['org']['id'], "organization_name": request.state.profile['org']['name']} + } + request.state.statusCode = 200 + request.state.response = response_data + return {} \ No newline at end of file diff --git a/src/services/commonServices/apiCallService.py b/src/services/commonServices/apiCallService.py index 47197b3f..6b0cb201 100644 --- a/src/services/commonServices/apiCallService.py +++ b/src/services/commonServices/apiCallService.py @@ -1,5 +1,4 @@ from fastapi import Request, HTTPException -from fastapi.responses import JSONResponse from src.db_services.ConfigurationServices import get_bridges, update_bridge, get_bridges_with_tools from src.services.utils.helper import Helper from src.services.utils.apicallUtills import get_api_data, save_api, delete_api @@ -49,24 +48,28 @@ async def creates_api(request: Request): raise HTTPException(status_code=400, detail="Something went wrong!") if result.get('success'): - return JSONResponse(status_code=200, content={ - "message": "API saved successfully", + response_data = { "success": True, - "activated": True, - "data": result['api_data'] - }) + "message": "API saved successfully", + "data": {"activated": True, "data": result['api_data']} + } + request.state.statusCode = 200 + request.state.response = response_data + return {} else: raise HTTPException(status_code=400, detail=result) elif status in ["delete", "paused"]: result = await delete_api(function_name, org_id) if result: - return JSONResponse(status_code=200, content={ - "message": "API deleted successfully", + response_data = { "success": True, - "deleted": True, - "data": result - }) + "message": "API deleted successfully", + "data": {"deleted": True, "data": result} + } + request.state.statusCode = 200 + request.state.response = response_data + return {} else: raise HTTPException(status_code=400, detail=result) @@ -105,7 +108,14 @@ async def updates_api(request: Request, bridge_id: str): }) else: - return JSONResponse(status_code=400, content=result) + response_data = { + "success": False, + "message": None, + "data": result + } + request.state.statusCode = 400 + request.state.response = response_data + return {} except Exception as error: print(f"error in viasocket embed get api => {error}") diff --git a/src/services/commonServices/bridgeServices.py b/src/services/commonServices/bridgeServices.py index 11f658df..a24ae321 100644 --- a/src/services/commonServices/bridgeServices.py +++ b/src/services/commonServices/bridgeServices.py @@ -1,5 +1,4 @@ from fastapi import Request -from fastapi.responses import JSONResponse from src.db_services.ConfigurationServices import get_bridges from datetime import datetime, timezone from src.services.utils.apiservice import fetch @@ -32,12 +31,14 @@ async def duplicate_bridge(request : Request): "actions": bridge.get('actions',{}), "apikey_object_id": bridge.get('apikey_object_id',""), }) - return JSONResponse(status_code=200, content={ + response_data = { "success": True, "message": "Bridge duplicated successfully", - "result" : json.loads(json.dumps(res, default=str)) - - }) + "data": json.loads(json.dumps(res, default=str)) + } + request.state.statusCode = 200 + request.state.response = response_data + return {} except Exception as e: return {'error': str(e)} @@ -62,11 +63,14 @@ async def optimize_prompt_controller(request : Request, bridge_id: str): except Exception as err: print("Error calling function=>", err) - return JSONResponse(status_code=200, content={ + response_data = { "success": True, "message": "Prompt optimized successfully", - "result" : result - }) - + "data": result + } + request.state.statusCode = 200 + request.state.response = response_data + return {} + except Exception as e: return {'error': str(e)} \ No newline at end of file From 2990b4fe6d46dbcb899c0c94ac6392ba569bde7f Mon Sep 17 00:00:00 2001 From: Harsh sahu Date: Sat, 7 Dec 2024 13:44:05 +0530 Subject: [PATCH 2/5] get data in chunks --- src/middlewares/response_middleware.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/middlewares/response_middleware.py b/src/middlewares/response_middleware.py index d5d6194f..7b76565a 100644 --- a/src/middlewares/response_middleware.py +++ b/src/middlewares/response_middleware.py @@ -1,6 +1,6 @@ from fastapi.responses import JSONResponse from starlette.middleware.base import BaseHTTPMiddleware - +import json class ResponseMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): # Get the original response @@ -8,7 +8,12 @@ async def dispatch(self, request, call_next): response_data = getattr(request.state, "response", None) status_code = getattr(request.state, "statusCode", None) - + # Read the response body + response_body = b"" + async for chunk in response.body_iterator: + response_body += chunk + response_body = json.loads(response_body.decode("utf-8")) + print(response_body) # If response_data exists, format it if response_data: success = response_data.get("success", status_code == 200) From b341441c0627a52de7ab3a51d456c9604bb9feaa Mon Sep 17 00:00:00 2001 From: ViaSocket-Git Date: Tue, 10 Dec 2024 12:12:02 +0530 Subject: [PATCH 3/5] response_data + ErrorHandler --- src/controllers/apiCallController.py | 20 ++----- src/controllers/apicallControllerV2.py | 23 ++------ src/controllers/bridge_version_controller.py | 15 ++--- src/controllers/configController.py | 44 +++----------- src/db_services/ConfigurationServices.py | 8 --- src/middlewares/interfaceMiddlewares.py | 15 ++--- src/middlewares/response_middleware.py | 59 +++++++++++-------- src/routes/apiCall_routes.py | 11 +--- src/services/commonServices/apiCallService.py | 25 +++----- src/services/commonServices/bridgeServices.py | 20 ++----- 10 files changed, 76 insertions(+), 164 deletions(-) diff --git a/src/controllers/apiCallController.py b/src/controllers/apiCallController.py index e783b93a..0a9351ce 100644 --- a/src/controllers/apiCallController.py +++ b/src/controllers/apiCallController.py @@ -7,14 +7,8 @@ async def get_all_apicalls_controller(request): try: org_id = request.state.profile['org']['id'] functions = await get_all_api_calls_by_org_id(org_id=org_id) - response_data = { - "success": True, - "message": "Get all functions of a org successfully", - "data": {"functions": functions,"org_id": org_id} - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"functions": functions,"org_id": org_id} + return response_data except Exception as e: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e,) @@ -62,14 +56,8 @@ async def update_apicalls_controller(request, function_id): updated_function = await update_api_call_by_function_id( org_id=org_id, function_id=function_id, data_to_update=data_to_update ) - response_data = { - "success": True, - "message": None, - "data": updated_function - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {updated_function} + return response_data except Exception as e: print(f"Error updating function: {e}") diff --git a/src/controllers/apicallControllerV2.py b/src/controllers/apicallControllerV2.py index 5a0001b1..a2585586 100644 --- a/src/controllers/apicallControllerV2.py +++ b/src/controllers/apicallControllerV2.py @@ -45,28 +45,16 @@ async def creates_api(request: Request): raise HTTPException(status_code=400, detail="Something went wrong!") if result.get('success'): - response_data = { - "success": True, - "message": "API saved successfully", - "data": {"activated": True,"data": result['api_data']} - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"activated": True,"data": result['api_data']} + return response_data else: raise HTTPException(status_code=400, detail=result) elif status in ["delete", "paused"]: result = await delete_api(function_name, org_id) if result: - response_data = { - "success": True, - "message": "API deleted successfully", - "data": {"deleted": True,"data": result} - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"deleted": True,"data": result} + return response_data else: raise HTTPException(status_code=400, detail=result) @@ -112,8 +100,7 @@ async def updates_api(request: Request, bridge_id: str): "data": result } request.state.statusCode = 400 - request.state.response = response_data - return {} + return response_data except Exception as error: print(f"error in viasocket embed get api => {error}") diff --git a/src/controllers/bridge_version_controller.py b/src/controllers/bridge_version_controller.py index f4b2d5c2..5e3d852a 100644 --- a/src/controllers/bridge_version_controller.py +++ b/src/controllers/bridge_version_controller.py @@ -13,8 +13,7 @@ async def create_version(request): if bridge_data is None: response_data = {"success": False,"message": "no version found","data": None} request.state.statusCode = 400 - request.state.response = response_data - return {} + return response_data parent_id = bridge_data.get('bridges').get('parent_id') create_new_version = await create_bridge_version(bridge_data.get('bridges'), parent_id=parent_id) update_fields = {'versions' : [create_new_version]} @@ -55,10 +54,8 @@ async def publish_version(request, version_id): org_id = request.state.profile['org']['id'] result = await publish(org_id, version_id) if result['success']: - response_data = {"success": True,"message": "version published successfully","data": {"version_id": version_id}} - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"version_id": version_id} + return response_data return result except Exception as e: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e) @@ -79,10 +76,8 @@ async def discard_version(request, version_id): bridge_data['bridges']['function_ids'] = [ObjectId(fid) for fid in function_ids] result = await update_bridge(version_id=version_id, update_fields=bridge_data['bridges']) if 'success' in result: - response_data = {"success": True,"message": "version changes discarded successfully","data": {"version_id": version_id}} - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"version_id": version_id} + return response_data return result \ No newline at end of file diff --git a/src/controllers/configController.py b/src/controllers/configController.py index 6183a7a8..b1058908 100644 --- a/src/controllers/configController.py +++ b/src/controllers/configController.py @@ -12,7 +12,6 @@ from src.services.utils.getDefaultValue import get_default_values_controller from src.db_services.bridge_version_services import create_bridge_version async def create_bridges_controller(request): - try: bridges = await request.json() type = bridges.get('type') org_id = request.state.profile['org']['id'] @@ -60,30 +59,11 @@ async def create_bridges_controller(request): "org_id" : org_id, "status": status }) - if result.get("success"): - create_version = await create_bridge_version(result['bridge']) - update_fields = {'versions' : [create_version]} - updated_bridge_result = (await update_bridge(str(result['bridge']['_id']), update_fields)).get('result',{}) - response_data = { - "success": True, - "message": "Bridge created successfully", - "data": { - "bridge" : json.loads(json.dumps(updated_bridge_result, default=str)) - } - } - request.state.response = response_data - request.state.statusCode = 200 - else: - response_data = { - "success": False, - "message": json.loads(json.dumps(result.get('error'), default=str)), - "data": {} - } - request.state.response = response_data - request.state.statusCode = 400 - return {} - except Exception as e: - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e) + create_version = await create_bridge_version(result['bridge']) + update_fields = {'versions' : [create_version]} + updated_bridge_result = (await update_bridge(str(result['bridge']['_id']), update_fields)).get('result',{}) + response_data = {"bridge" : json.loads(json.dumps(updated_bridge_result, default=str))} + return response_data async def duplicate_create_bridges(bridges): try: @@ -158,17 +138,11 @@ async def get_all_bridges(request): bridges = await get_all_bridges_in_org(org_id) embed_token = Helper.generate_token({ "org_id": Config.ORG_ID, "project_id": Config.PROJECT_ID, "user_id": org_id },Config.Access_key ) response_data = { - "success": True, - "message": "Get all bridges successfully", - "data": { - "bridge" : bridges, - "embed_token": embed_token, - "org_id": org_id - } + "bridge" : bridges, + "embed_token": embed_token, + "org_id": org_id } - request.state.statusCode = 200 - request.state.response = response_data - return {} + return response_data except Exception as e: raise HTTPException(status_code=500, detail=str(e)) async def get_all_service_models_controller(service): diff --git a/src/db_services/ConfigurationServices.py b/src/db_services/ConfigurationServices.py index d77b96b2..0a5272f4 100644 --- a/src/db_services/ConfigurationServices.py +++ b/src/db_services/ConfigurationServices.py @@ -290,18 +290,10 @@ async def get_template_by_id(template_id): return None async def create_bridge(data): - try: result = configurationModel.insert_one(data) return { - 'success': True, 'bridge': {**data, '_id': result.inserted_id} } - except Exception as error: - print("error:", error) - return { - 'success': False, - 'error': error - } async def get_all_bridges_in_org(org_id): bridges = configurationModel.find({"org_id": org_id}, { diff --git a/src/middlewares/interfaceMiddlewares.py b/src/middlewares/interfaceMiddlewares.py index a2eac8cb..43039a82 100644 --- a/src/middlewares/interfaceMiddlewares.py +++ b/src/middlewares/interfaceMiddlewares.py @@ -23,8 +23,7 @@ async def send_data_middleware(request: Request, botId: str): if(message == ""): response_data = {"success": False,"message": None,"data": {'error':"Message cannot be null"}} request.state.statusCode = 400 - request.state.response = response_data - return {} + return response_data channelId = f"{chatBotId}{threadId.strip() if threadId and threadId.strip() else userId}" @@ -79,8 +78,7 @@ async def send_data_middleware(request: Request, botId: str): except Exception as error: response_data = {"success": False,"message": None,"data":{'error': str(error)}} request.state.statusCode = 400 - request.state.response = response_data - return {} + return response_data async def chat_bot_auth(request: Request): timer_obj = Timer() @@ -151,12 +149,9 @@ async def reset_chatBot(request: Request, botId: str): } if result['success']: await sendResponse(response_format, response, True) - response_data = {"success": True,"message": "Chatbot reset successfully","data": None} - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {} + return response_data else: response_data = {"success": False,"message": "Error resetting chatbot","data": None} request.state.statusCode = 400 - request.state.response = response_data - return {} \ No newline at end of file + return response_data \ No newline at end of file diff --git a/src/middlewares/response_middleware.py b/src/middlewares/response_middleware.py index 7b76565a..bbd53bce 100644 --- a/src/middlewares/response_middleware.py +++ b/src/middlewares/response_middleware.py @@ -1,32 +1,41 @@ from fastapi.responses import JSONResponse +from fastapi import Request, HTTPException, status from starlette.middleware.base import BaseHTTPMiddleware import json class ResponseMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): - # Get the original response - response = await call_next(request) + try: + response = await call_next(request) + response_data = b"" + async for chunk in response.body_iterator: + response_data += chunk + response_data = json.loads(response_data.decode("utf-8")) + if response_data: + formatted_response = { + "status": 200, + "success": True, + "message": "Request processed successfully", + "data": response_data or {} + } + return JSONResponse(content=formatted_response, status_code=200) - response_data = getattr(request.state, "response", None) - status_code = getattr(request.state, "statusCode", None) - # Read the response body - response_body = b"" - async for chunk in response.body_iterator: - response_body += chunk - response_body = json.loads(response_body.decode("utf-8")) - print(response_body) - # If response_data exists, format it - if response_data: - success = response_data.get("success", status_code == 200) - message = response_data.get("message", "Request processed successfully") - data = response_data.get("data", {}) + return response - formatted_response = { - "status": status_code, - "success": success, - "message": message, - "data": data - } - - return JSONResponse(content=formatted_response, status_code=status_code) - - return response + except HTTPException as http_exc: + print("HTTP Error") + return JSONResponse( + status_code=http_exc.status_code, + content={"message": http_exc.detail, "data": {}}, + ) + except ValueError as ve: + print("HTTP_422") + return JSONResponse( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + content={"message": str(ve), "data": {}}, + ) + except Exception: + print("Default HTTP_400") + return JSONResponse( + status_code=status.HTTP_400_BAD_REQUEST, + content={"message": "Something went wrong, try again later", "data": {}}, + ) \ No newline at end of file diff --git a/src/routes/apiCall_routes.py b/src/routes/apiCall_routes.py index 00bff2c2..ac0e3fa7 100644 --- a/src/routes/apiCall_routes.py +++ b/src/routes/apiCall_routes.py @@ -14,11 +14,6 @@ async def update_apicalls(request: Request, function_id: str): @router.get('/test', dependencies=[Depends(jwt_middleware)]) async def get_all_apicalls(request: Request): - response_data = { - "success": True, - "message": "Sucessfully authenticated", - "data": {"org_id": request.state.profile['org']['id'], "organization_name": request.state.profile['org']['name']} - } - request.state.statusCode = 200 - request.state.response = response_data - return {} \ No newline at end of file + response_data = {"org_id": request.state.profile['org']['id'], + "organization_name": request.state.profile['org']['name']} + return response_data \ No newline at end of file diff --git a/src/services/commonServices/apiCallService.py b/src/services/commonServices/apiCallService.py index 6b0cb201..247104c3 100644 --- a/src/services/commonServices/apiCallService.py +++ b/src/services/commonServices/apiCallService.py @@ -48,28 +48,18 @@ async def creates_api(request: Request): raise HTTPException(status_code=400, detail="Something went wrong!") if result.get('success'): - response_data = { - "success": True, - "message": "API saved successfully", - "data": {"activated": True, "data": result['api_data']} - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"activated": True, + "data": result['api_data']} + return response_data else: raise HTTPException(status_code=400, detail=result) elif status in ["delete", "paused"]: result = await delete_api(function_name, org_id) if result: - response_data = { - "success": True, - "message": "API deleted successfully", - "data": {"deleted": True, "data": result} - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {"deleted": True, + "data": result} + return response_data else: raise HTTPException(status_code=400, detail=result) @@ -114,8 +104,7 @@ async def updates_api(request: Request, bridge_id: str): "data": result } request.state.statusCode = 400 - request.state.response = response_data - return {} + return response_data except Exception as error: print(f"error in viasocket embed get api => {error}") diff --git a/src/services/commonServices/bridgeServices.py b/src/services/commonServices/bridgeServices.py index a24ae321..ecc68457 100644 --- a/src/services/commonServices/bridgeServices.py +++ b/src/services/commonServices/bridgeServices.py @@ -31,14 +31,8 @@ async def duplicate_bridge(request : Request): "actions": bridge.get('actions',{}), "apikey_object_id": bridge.get('apikey_object_id',""), }) - response_data = { - "success": True, - "message": "Bridge duplicated successfully", - "data": json.loads(json.dumps(res, default=str)) - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {json.loads(json.dumps(res, default=str))} + return response_data except Exception as e: return {'error': str(e)} @@ -63,14 +57,8 @@ async def optimize_prompt_controller(request : Request, bridge_id: str): except Exception as err: print("Error calling function=>", err) - response_data = { - "success": True, - "message": "Prompt optimized successfully", - "data": result - } - request.state.statusCode = 200 - request.state.response = response_data - return {} + response_data = {result} + return response_data except Exception as e: return {'error': str(e)} \ No newline at end of file From 41ba0ae03034435d2e47229c9706c9e3e8784fb3 Mon Sep 17 00:00:00 2001 From: ViaSocket-Git Date: Tue, 10 Dec 2024 12:47:54 +0530 Subject: [PATCH 4/5] Removed request.state.statusCode = 400 --- src/controllers/apicallControllerV2.py | 24 ++++-------------- src/controllers/bridge_version_controller.py | 8 ------ src/db_services/ConfigurationServices.py | 17 ------------- src/middlewares/interfaceMiddlewares.py | 23 +++++++---------- src/services/commonServices/apiCallService.py | 25 +++++-------------- 5 files changed, 20 insertions(+), 77 deletions(-) diff --git a/src/controllers/apicallControllerV2.py b/src/controllers/apicallControllerV2.py index a2585586..42fc31e6 100644 --- a/src/controllers/apicallControllerV2.py +++ b/src/controllers/apicallControllerV2.py @@ -66,7 +66,6 @@ async def creates_api(request: Request): async def updates_api(request: Request, bridge_id: str): - try: body = await request.json() version_id = body.get('version_id') org_id = request.state.org_id if hasattr(request.state, 'org_id') else None @@ -86,25 +85,12 @@ async def updates_api(request: Request, bridge_id: str): result = await get_bridges_with_tools(bridge_id, org_id, version_id) - if result.get("success"): - return Helper.response_middleware_for_bridge({ - "success": True, - "message": "Bridge Updated successfully", - "bridge" : result.get('bridges') - - }) - else: - response_data = { - "success": False, - "message": None, - "data": result - } - request.state.statusCode = 400 - return response_data + return Helper.response_middleware_for_bridge({ + "success": True, + "message": "Bridge Updated successfully", + "bridge" : result.get('bridges') - except Exception as error: - print(f"error in viasocket embed get api => {error}") - raise HTTPException(status_code=400, detail=str(error)) + }) def traverse_body(body, path=None, paths=None, fields=None, required_params=None): diff --git a/src/controllers/bridge_version_controller.py b/src/controllers/bridge_version_controller.py index 5e3d852a..a488c5b5 100644 --- a/src/controllers/bridge_version_controller.py +++ b/src/controllers/bridge_version_controller.py @@ -5,15 +5,10 @@ from ..db_services.ConfigurationServices import get_bridges_with_tools, update_bridge, get_bridges_without_tools from bson import ObjectId async def create_version(request): - try: body = await request.json() version_id = body.get('version_id') org_id = request.state.profile['org']['id'] bridge_data = await get_bridges_without_tools(org_id=org_id, version_id= version_id) - if bridge_data is None: - response_data = {"success": False,"message": "no version found","data": None} - request.state.statusCode = 400 - return response_data parent_id = bridge_data.get('bridges').get('parent_id') create_new_version = await create_bridge_version(bridge_data.get('bridges'), parent_id=parent_id) update_fields = {'versions' : [create_new_version]} @@ -24,9 +19,6 @@ async def create_version(request): "version_id" : create_new_version } - except Exception as e: - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e) - async def get_version(request, version_id: str): try: org_id = request.state.profile.get("org",{}).get("id","") diff --git a/src/db_services/ConfigurationServices.py b/src/db_services/ConfigurationServices.py index 0a5272f4..7dd2973e 100644 --- a/src/db_services/ConfigurationServices.py +++ b/src/db_services/ConfigurationServices.py @@ -45,23 +45,14 @@ async def get_bridges(bridge_id = None, org_id = None, version_id = None): } # todo async def get_bridges_without_tools(bridge_id = None, org_id = None, version_id = None): - try: model = version_model if version_id else configurationModel id_to_use = ObjectId(version_id) if version_id else ObjectId(bridge_id) bridge_data = model.find_one({'_id' : ObjectId(id_to_use)}) return { - 'success': True, 'bridges': bridge_data, } - except Exception as error: - print(error) - return { - 'success': False, - 'error': "something went wrong!!" - } async def get_bridges_with_tools(bridge_id, org_id, version_id=None): - try: model = version_model if version_id else configurationModel id_to_use = ObjectId(version_id) if version_id else ObjectId(bridge_id) pipeline = [ @@ -120,20 +111,12 @@ async def get_bridges_with_tools(bridge_id, org_id, version_id=None): if not result: return { - 'success': False, 'error': 'No matching records found' } return { - 'success': True, 'bridges': result[0] } - except Exception as error: - print(error) - return { - 'success': False, - 'error': "something went wrong!!" - } async def update_api_call(id, update_fields): try: diff --git a/src/middlewares/interfaceMiddlewares.py b/src/middlewares/interfaceMiddlewares.py index 43039a82..d30b9e40 100644 --- a/src/middlewares/interfaceMiddlewares.py +++ b/src/middlewares/interfaceMiddlewares.py @@ -10,7 +10,6 @@ from ..services.utils.time import Timer async def send_data_middleware(request: Request, botId: str): - try: body = await request.json() org_id = request.state.profile['org']['id'] slugName = body.get("slugName") @@ -20,10 +19,11 @@ async def send_data_middleware(request: Request, botId: str): userId = profile['user']['id'] chatBotId = botId flag = body.get("flag") or False - if(message == ""): - response_data = {"success": False,"message": None,"data": {'error':"Message cannot be null"}} - request.state.statusCode = 400 - return response_data + if message == "": + raise HTTPException( + status_code=400, + detail={"success": False, "message": "Message cannot be null", "data": {'error': "Message cannot be null"}} + ) channelId = f"{chatBotId}{threadId.strip() if threadId and threadId.strip() else userId}" @@ -73,12 +73,6 @@ async def send_data_middleware(request: Request, botId: str): await add_configuration_data_to_body(request=request) return await chat_completion(request=request) - except HTTPException as http_error: - raise http_error # Re-raise HTTP exceptions for proper handling - except Exception as error: - response_data = {"success": False,"message": None,"data":{'error': str(error)}} - request.state.statusCode = 400 - return response_data async def chat_bot_auth(request: Request): timer_obj = Timer() @@ -152,6 +146,7 @@ async def reset_chatBot(request: Request, botId: str): response_data = {} return response_data else: - response_data = {"success": False,"message": "Error resetting chatbot","data": None} - request.state.statusCode = 400 - return response_data \ No newline at end of file + raise HTTPException( + status_code=400, + detail={"success": False, "message": "Error resetting chatbot", "data": None} + ) \ No newline at end of file diff --git a/src/services/commonServices/apiCallService.py b/src/services/commonServices/apiCallService.py index 247104c3..b97e4119 100644 --- a/src/services/commonServices/apiCallService.py +++ b/src/services/commonServices/apiCallService.py @@ -71,7 +71,6 @@ async def creates_api(request: Request): async def updates_api(request: Request, bridge_id: str): - try: body = await request.json() org_id = request.state.org_id if hasattr(request.state, 'org_id') else None pre_tools = body.get('pre_tools') @@ -90,25 +89,13 @@ async def updates_api(request: Request, bridge_id: str): result = await get_bridges_with_tools(bridge_id, org_id) - if result.get("success"): - return Helper.response_middleware_for_bridge({ - "success": True, - "message": "Bridge Updated successfully", - "bridge" : result.get('bridges') - - }) - else: - response_data = { - "success": False, - "message": None, - "data": result - } - request.state.statusCode = 400 - return response_data + return Helper.response_middleware_for_bridge({ + "success": True, + "message": "Bridge Updated successfully", + "bridge" : result.get('bridges') + + }) - except Exception as error: - print(f"error in viasocket embed get api => {error}") - raise HTTPException(status_code=400, detail=str(error)) def traverse_body(body, required_params=None, path="", paths=None): From a96fee9ad710efdc8b9ca5689b085f8a3a1bb9fa Mon Sep 17 00:00:00 2001 From: ViaSocket-Git Date: Tue, 10 Dec 2024 17:20:02 +0530 Subject: [PATCH 5/5] Exceptions removed --- src/controllers/apiCallController.py | 10 +----- src/controllers/apicallControllerV2.py | 7 ---- src/controllers/bridge_version_controller.py | 13 ++----- src/controllers/configController.py | 36 +++---------------- src/db_services/ConfigurationServices.py | 18 +++------- src/db_services/bridge_version_services.py | 8 ----- src/services/commonServices/apiCallService.py | 8 ----- src/services/commonServices/bridgeServices.py | 9 +---- src/services/utils/getConfiguration.py | 11 +++--- 9 files changed, 21 insertions(+), 99 deletions(-) diff --git a/src/controllers/apiCallController.py b/src/controllers/apiCallController.py index 0a9351ce..a778d911 100644 --- a/src/controllers/apiCallController.py +++ b/src/controllers/apiCallController.py @@ -4,13 +4,10 @@ from src.db_services.apiCallDbService import get_function_by_id async def get_all_apicalls_controller(request): - try: org_id = request.state.profile['org']['id'] functions = await get_all_api_calls_by_org_id(org_id=org_id) response_data = {"functions": functions,"org_id": org_id} return response_data - except Exception as e: - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e,) async def validate_data_to_update(data_to_update: dict, db_data: dict) -> bool: @@ -34,7 +31,6 @@ def recursive_check(data, expected, path=''): async def update_apicalls_controller(request, function_id): - try: org_id = request.state.profile['org']['id'] body = await request.json() data_to_update = body.get('dataToSend') @@ -57,8 +53,4 @@ async def update_apicalls_controller(request, function_id): org_id=org_id, function_id=function_id, data_to_update=data_to_update ) response_data = {updated_function} - return response_data - - except Exception as e: - print(f"Error updating function: {e}") - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e)) \ No newline at end of file + return response_data \ No newline at end of file diff --git a/src/controllers/apicallControllerV2.py b/src/controllers/apicallControllerV2.py index 42fc31e6..f27bb77e 100644 --- a/src/controllers/apicallControllerV2.py +++ b/src/controllers/apicallControllerV2.py @@ -7,7 +7,6 @@ async def creates_api(request: Request): - try: body = await request.json() org_id = request.state.profile.get("org",{}).get("id","") function_name = body.get('id') @@ -60,9 +59,6 @@ async def creates_api(request: Request): raise HTTPException(status_code=400, detail="Something went wrong!") - except Exception as error: - print(f"error in viasocket embed get api=> {error}") - raise HTTPException(status_code=400, detail=str(error)) async def updates_api(request: Request, bridge_id: str): @@ -86,10 +82,7 @@ async def updates_api(request: Request, bridge_id: str): result = await get_bridges_with_tools(bridge_id, org_id, version_id) return Helper.response_middleware_for_bridge({ - "success": True, - "message": "Bridge Updated successfully", "bridge" : result.get('bridges') - }) diff --git a/src/controllers/bridge_version_controller.py b/src/controllers/bridge_version_controller.py index a488c5b5..830e1823 100644 --- a/src/controllers/bridge_version_controller.py +++ b/src/controllers/bridge_version_controller.py @@ -14,13 +14,10 @@ async def create_version(request): update_fields = {'versions' : [create_new_version]} await update_bridges(parent_id, update_fields) return { - "success": True, - "message" : "version created successfully", "version_id" : create_new_version } async def get_version(request, version_id: str): - try: org_id = request.state.profile.get("org",{}).get("id","") bridge = await get_version_with_tools(version_id, org_id) prompt = bridge.get('bridges').get('configuration',{}).get('prompt') @@ -36,21 +33,16 @@ async def get_version(request, version_id: str): path_variables.append(vars_dict) all_variables = variables + path_variables bridge.get('bridges')['all_varaibles'] = all_variables - return Helper.response_middleware_for_bridge({"succcess": True,"message": "bridge get successfully","bridge":bridge.get("bridges", {})}) - except Exception as e: - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e,) + return Helper.response_middleware_for_bridge({"bridge":bridge.get("bridges", {})}) async def publish_version(request, version_id): - try: org_id = request.state.profile['org']['id'] result = await publish(org_id, version_id) if result['success']: response_data = {"version_id": version_id} return response_data return result - except Exception as e: - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e) async def discard_version(request, version_id): @@ -67,9 +59,10 @@ async def discard_version(request, version_id): function_ids = bridge_data['bridges'].get('function_ids', []) bridge_data['bridges']['function_ids'] = [ObjectId(fid) for fid in function_ids] result = await update_bridge(version_id=version_id, update_fields=bridge_data['bridges']) - if 'success' in result: + if 'result' in result and result['result']: response_data = {"version_id": version_id} return response_data return result + \ No newline at end of file diff --git a/src/controllers/configController.py b/src/controllers/configController.py index b1058908..3bc21caf 100644 --- a/src/controllers/configController.py +++ b/src/controllers/configController.py @@ -66,8 +66,6 @@ async def create_bridges_controller(request): return response_data async def duplicate_create_bridges(bridges): - try: - org_id = bridges.get('org_id') service = bridges.get('service') bridgeType = bridges.get('bridgeType') @@ -104,14 +102,8 @@ async def duplicate_create_bridges(bridges): raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=result) - except HTTPException as e: - raise e - except Exception as error: - print(f"common error=> {error}") - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="An unexpected error occurred while creating the bridge. Please try again later.") async def get_bridge(request, bridge_id: str): - try: bridge = await get_bridges_with_tools(bridge_id,request.state.profile['org']['id']) if(bridge.get('bridges') is None): raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Bridge not found") @@ -128,12 +120,9 @@ async def get_bridge(request, bridge_id: str): path_variables.append(vars_dict) all_variables = variables + path_variables bridge.get('bridges')['all_varaibles'] = all_variables - return Helper.response_middleware_for_bridge({"succcess": True,"message": "bridge get successfully","bridge":bridge.get("bridges", {})}) - except Exception as e: - raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=e,) + return Helper.response_middleware_for_bridge({"bridge":bridge.get("bridges", {})}) async def get_all_bridges(request): - try: org_id = request.state.profile['org']['id'] bridges = await get_all_bridges_in_org(org_id) embed_token = Helper.generate_token({ "org_id": Config.ORG_ID, "project_id": Config.PROJECT_ID, "user_id": org_id },Config.Access_key ) @@ -143,10 +132,8 @@ async def get_all_bridges(request): "org_id": org_id } return response_data - except Exception as e: - raise HTTPException(status_code=500, detail=str(e)) + async def get_all_service_models_controller(service): - try: service = service.lower() def restructure_configuration(config): model_field = config.get("configuration", {}).get("model", "") @@ -245,12 +232,8 @@ def restructure_configuration(config): } - except Exception as e: - raise HTTPException(status_code=500, detail=str(e)) - async def update_bridge_controller(request, bridge_id=None, version_id=None): - try: body = await request.json() org_id = request.state.profile['org']['id'] slugName = body.get('slugName') @@ -359,15 +342,6 @@ async def update_bridge_controller(request, bridge_id=None, version_id=None): result = await get_bridges_with_tools(bridge_id, org_id, version_id) await add_bulk_user_entries(user_history) - if result.get("success"): - return Helper.response_middleware_for_bridge({ - "success": True, - "message": "Bridge Updated successfully", - "bridge" : result.get('bridges') - - }) - except ValidationError as e: - raise HTTPException(status_code=400, detail=f"Validation error: {e.json()}") - except Exception as e: - print(e) - raise HTTPException(status_code=400, detail="Invalid request body!") \ No newline at end of file + return Helper.response_middleware_for_bridge({ + "bridge" : result.get('bridges') + }) \ No newline at end of file diff --git a/src/db_services/ConfigurationServices.py b/src/db_services/ConfigurationServices.py index 7dd2973e..b4bd98c7 100644 --- a/src/db_services/ConfigurationServices.py +++ b/src/db_services/ConfigurationServices.py @@ -1,5 +1,6 @@ from models.mongo_connection import db from bson import ObjectId +from fastapi import HTTPException, status import traceback configurationModel = db["configurations"] @@ -347,7 +348,6 @@ async def get_bridge_by_slugname(org_id, slug_name): } async def update_bridge(bridge_id = None, update_fields = None, version_id = None): - try: model = version_model if version_id else configurationModel id_to_use = ObjectId(version_id) if version_id else ObjectId(bridge_id) updated_bridge = model.find_one_and_update( @@ -358,26 +358,18 @@ async def update_bridge(bridge_id = None, update_fields = None, version_id = Non ) if not updated_bridge: - return { - 'success': False, - 'error': 'No records updated or bridge not found' - } + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="No records updated or bridge not found" + ) if updated_bridge: updated_bridge['_id'] = str(updated_bridge['_id']) # Convert ObjectId to string if 'function_ids' in updated_bridge: updated_bridge['function_ids'] = [str(fid) for fid in updated_bridge['function_ids']] # Convert function_ids to string return { - 'success': True, 'result': updated_bridge } - except Exception as error: - print(error) - return { - 'success': False, - 'error': 'Something went wrong!' - } - async def update_tools_calls(bridge_id, org_id, configuration): try: configurationModel.find_one_and_update( diff --git a/src/db_services/bridge_version_services.py b/src/db_services/bridge_version_services.py index da8bded9..2c00f155 100644 --- a/src/db_services/bridge_version_services.py +++ b/src/db_services/bridge_version_services.py @@ -149,7 +149,6 @@ async def get_version_with_tools(bridge_id, org_id): } async def publish(org_id, version_id): - try: get_version_data = version_model.find_one({'_id': ObjectId(version_id), 'org_id': org_id}) if not get_version_data: @@ -185,11 +184,4 @@ async def publish(org_id, version_id): return { "success": True, "message": "Configuration updated successfully" - } - - except Exception as e: - print(f"An error occurred: {e}") - return { - "success": False, - "error": str(e) } \ No newline at end of file diff --git a/src/services/commonServices/apiCallService.py b/src/services/commonServices/apiCallService.py index b97e4119..809b5b08 100644 --- a/src/services/commonServices/apiCallService.py +++ b/src/services/commonServices/apiCallService.py @@ -9,7 +9,6 @@ async def creates_api(request: Request): - try: body = await request.json() org_id = request.state.profile.get("org",{}).get("id","") function_name = body.get('id') @@ -62,12 +61,8 @@ async def creates_api(request: Request): return response_data else: raise HTTPException(status_code=400, detail=result) - raise HTTPException(status_code=400, detail="Something went wrong!") - except Exception as error: - print(f"error in viasocket embed get api=> {error}") - raise HTTPException(status_code=400, detail=str(error)) async def updates_api(request: Request, bridge_id: str): @@ -90,10 +85,7 @@ async def updates_api(request: Request, bridge_id: str): result = await get_bridges_with_tools(bridge_id, org_id) return Helper.response_middleware_for_bridge({ - "success": True, - "message": "Bridge Updated successfully", "bridge" : result.get('bridges') - }) diff --git a/src/services/commonServices/bridgeServices.py b/src/services/commonServices/bridgeServices.py index ecc68457..140106d8 100644 --- a/src/services/commonServices/bridgeServices.py +++ b/src/services/commonServices/bridgeServices.py @@ -7,7 +7,6 @@ import json async def duplicate_bridge(request : Request): - try: body = await request.json() org_id = request.state.profile.get("org",{}).get("id","") bridge_id = body.get('bridge_id') @@ -33,12 +32,9 @@ async def duplicate_bridge(request : Request): }) response_data = {json.loads(json.dumps(res, default=str))} return response_data - except Exception as e: - return {'error': str(e)} async def optimize_prompt_controller(request : Request, bridge_id: str): - try: body = await request.json(); purpose = body.get('purpose', "optimize") prompt_description = body.get('prompt_description', "") @@ -58,7 +54,4 @@ async def optimize_prompt_controller(request : Request, bridge_id: str): except Exception as err: print("Error calling function=>", err) response_data = {result} - return response_data - - except Exception as e: - return {'error': str(e)} \ No newline at end of file + return response_data \ No newline at end of file diff --git a/src/services/utils/getConfiguration.py b/src/services/utils/getConfiguration.py index d88259e5..cca0ab05 100644 --- a/src/services/utils/getConfiguration.py +++ b/src/services/utils/getConfiguration.py @@ -1,4 +1,5 @@ import src.db_services.ConfigurationServices as ConfigurationService +from fastapi import HTTPException, status from .helper import Helper from bson import ObjectId from models.mongo_connection import db @@ -11,11 +12,11 @@ async def getConfiguration(configuration, service, bridge_id, apikey, template_i RTLayer = False bridge = None result = await ConfigurationService.get_bridges_with_tools(bridge_id = bridge_id, org_id = org_id, version_id=version_id) - if not result['success']: - return { - 'success': False, - 'error': "bridge_id does not exist" - } + if not result: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="bridge_id does not exist" + ) db_configuration = result.get('bridges', {}).get('configuration', {}) if configuration: db_configuration.update(configuration)