Version that runs with new file upload stream and cleverswarm

This commit is contained in:
Stanislav Hejny
2025-04-01 02:54:21 +01:00
parent 141de355d4
commit 579102633c
11 changed files with 276 additions and 60 deletions
+4 -4
View File
@@ -35,7 +35,7 @@ class AMQService:
logging.info("***********************************************")
logging.info("********** AMQ Service *******************")
logging.info("***********************************************")
loop = asyncio.get_event_loop()
self.loop = asyncio.get_event_loop()
self.amq_configuration = amq_configuration
self.message_factory = AMQMessageFactory.get_instance(self.amq_configuration.amq_adapter.generator_id)
@@ -46,7 +46,7 @@ class AMQService:
self.amq_configuration.amq_adapter.service_name
)
# self.init(loop) will initialize RabbitMQ connection
loop.run_until_complete(self.init(loop, service_adapter))
self.loop.run_until_complete(self.init(self.loop, service_adapter))
# loop.run_until_complete(consume(loop))
# self.consumer_thread = asyncio.create_task(self.rabbit_mq_consumer.channel.start_consuming())
# self.rabbit_mq_consumer.request_routes()
@@ -54,7 +54,7 @@ class AMQService:
logging.info("***********************************************")
logging.info("****** AMQ Service Init Complete *********")
logging.info("***********************************************")
loop.run_forever()
self.loop.run_forever()
async def init(self, loop, service_adapter):
exchange: AbstractRobustExchange = await self.rabbit_mq_consumer.init(loop)
@@ -78,7 +78,7 @@ class AMQService:
async def reinitialize_if_disconnected(self):
if not self.rabbit_mq_consumer.channel or self.rabbit_mq_consumer.channel.is_closed:
self.rabbit_mq_consumer = RabbitMQConsumer(self.amq_configuration)
await self.rabbit_mq_consumer.init(loop=None)
await self.rabbit_mq_consumer.init(loop=self.loop)
await self.register_routes()
await self.rabbit_mq_consumer.request_routes()
+32
View File
@@ -32,6 +32,8 @@ class CleverMultiPartParser:
try:
self.form_data = json.loads(message.body())
self.is_json = True
if self.form_data['files'] and self.form_data['form']:
self.form_data = self.process_form_data(self.form_data)
except Exception as jsonerror:
logging.error(f"Error parsing JSON: {jsonerror}")
self.is_valid = False
@@ -48,3 +50,33 @@ class CleverMultiPartParser:
self.form_data[file.field_name.decode('utf-8')] = \
UploadFile(file.file_object, size=file.size, filename=file.file_name)
print(self.form_data)
def process_form_data(self, json_input):
"""
Processes the input JSON to extract form data, with files data overriding where available.
Args:
json_input: JSON string or dict containing the form and files data
Returns:
dict: Processed form data with files data overriding non-empty values
"""
# Load JSON if input is string
if isinstance(json_input, str):
data = json.loads(json_input)
else:
data = json_input
result = {}
# Process form data - take first element of each list
for key, value in data['form'].items():
if value: # Only process if list is not empty
result[key] = value[0]
# Override with files data where available
for key, value in data['files'].items():
if value: # Only override if files data is non-empty
result[key] = value[0]
return result