import queue
from command import TxCommand
import api_validations
import base64
from queue import Queue
from arq_session_iss import ARQSessionISS


class ARQRawCommand(TxCommand):

    def set_params_from_api(self, apiParams):
        self.dxcall = apiParams['dxcall']
        if not api_validations.validate_freedata_callsign(self.dxcall):
            self.dxcall = f"{self.dxcall}-0"

        self.data = base64.b64decode(apiParams['data'])

    def run(self, event_queue: Queue, modem):
        self.emit_event(event_queue)
        self.logger.info(self.log_message())

        iss = ARQSessionISS(self.config, modem, self.dxcall, self.data, self.state_manager)
        if iss.id:
            self.state_manager.register_arq_iss_session(iss)
            iss.start()
            return iss
        return False