some fixes to transmit messages..

This commit is contained in:
DJ2LS 2024-01-25 15:48:00 +01:00
parent eb3a74e146
commit 2a98731b5d
5 changed files with 24 additions and 9 deletions

View file

@ -82,8 +82,9 @@ class ARQDataTypeHandler:
def handle_p2pmsg_lzma(self, data):
decompressed_data = lzma.decompress(data)
self.log(f"Handling LZMA compressed P2PMSG data: {len(decompressed_data)} Bytes from {len(data)} Bytes")
received_message_obj = MessageP2P.from_payload(decompressed_data)
decompressed_json_string = decompressed_data.decode('utf-8')
received_message_obj = MessageP2P.from_payload(decompressed_json_string)
received_message_dict = MessageP2P.to_dict(received_message_obj, received=True)
DatabaseManager(uri='sqlite:///:memory:').add_message(received_message_dict)
result = DatabaseManager(uri='sqlite:///:memory:').add_message(received_message_dict)
return decompressed_data

View file

@ -15,12 +15,17 @@ class SendMessageCommand(TxCommand):
self.message = MessageP2P.from_api_params(origin, apiParams)
def transmit(self, modem):
data, data_type = self.arq_data_type_handler.prepare(self.message.to_payload, 'p2pmsg_lzma')
iss = ARQSessionISS(self.config, modem,
self.message.destination,
data,
# Convert JSON string to bytes (using UTF-8 encoding)
payload = self.message.to_payload().encode('utf-8')
json_bytearray = bytearray(payload)
data, data_type = self.arq_data_type_handler.prepare(json_bytearray, 'p2pmsg_lzma')
iss = ARQSessionISS(self.config,
modem,
self.message.destination,
self.state_manager,
data_type)
data,
data_type
)
self.state_manager.register_arq_iss_session(iss)
iss.start()

View file

@ -6,6 +6,8 @@ from threading import local
from message_system_db_model import Base, Station, Status, Attachment, P2PMessage
from datetime import datetime
import json
import structlog
class DatabaseManager:
def __init__(self, uri='sqlite:///freedata-messages.db'):
@ -14,6 +16,11 @@ class DatabaseManager:
self.session_factory = sessionmaker(bind=self.engine)
Base.metadata.create_all(self.engine)
def log(self, message, isWarning=False):
msg = f"[{type(self).__name__}]: {message}"
logger = self.logger.warn if isWarning else self.logger.info
logger(msg)
def get_thread_scoped_session(self):
if not hasattr(self.thread_local, "session"):
self.thread_local.session = scoped_session(self.session_factory)
@ -71,6 +78,8 @@ class DatabaseManager:
session.add(new_message)
session.commit()
self.log(f"Added data to database: {new_message.id}")
return new_message.id
except Exception as e:
session.rollback()

View file

@ -238,7 +238,7 @@ def get_post_radio():
return api_response(app.state_manager.get_radio_status())
@app.route('/freedata/messages', methods=['POST', 'GET'])
def post_freedata_message():
def get_post_freedata_message():
if request.method in ['GET']:
result = DatabaseManager(uri='sqlite:///:memory:').get_all_messages_json()
return api_response(result)

View file

@ -34,7 +34,7 @@ class TestDataFrameFactory(unittest.TestCase):
}
message = MessageP2P(self.mycall, 'DJ2LS-3', 'Hello World!', [attachment])
payload = message.to_payload()
print(payload)
received_message = MessageP2P.from_payload(payload)
received_message_dict = MessageP2P.to_dict(received_message, received=True)
self.database_manager.add_message(received_message_dict)