Files
motia/bitbylaw/steps/advoware_api_proxy_step.py
2025-10-19 14:57:07 +00:00

31 lines
1.2 KiB
Python

from services.advoware import AdvowareAPI
config = {
'type': 'api',
'name': 'Advoware Proxy',
'description': 'Universal proxy for Advoware API',
'path': '/api/advoware/proxy',
'method': 'GET',
'emits': [],
'flows': ['advoware']
}
async def handler(req, context):
try:
# Endpoint aus Query-Parametern
endpoint = req.get('queryParams', {}).get('endpoint', '')
if not endpoint:
return {'status': 400, 'body': {'error': 'Endpoint required as query param'}}
advoware = AdvowareAPI(context)
method = req.get('method', 'GET')
params = {k: v for k, v in req.get('queryParams', {}).items() if k != 'endpoint'}
json_data = req.get('body') if method in ['POST', 'PUT', 'PATCH'] else None
context.logger.info(f"Proxying request to Advoware: {method} {endpoint}")
result = await advoware.api_call(endpoint, method=method, params=params, json_data=json_data)
return {'status': 200, 'body': {'result': result}}
except Exception as e:
context.logger.error(f"Proxy error: {e}")
return {'status': 500, 'body': {'error': 'Internal server error', 'details': str(e)}}