Module connpy.cli.api_handler

Classes

class APIHandler (app)
Expand source code
class APIHandler:
    def __init__(self, app):
        self.app = app

    def dispatch(self, args):
        try:
            status = self.app.services.system.get_api_status()
            
            if args.command == "stop":
                if not status["running"]:
                    printer.warning("API does not seem to be running.")
                else:
                    stopped = self.app.services.system.stop_api()
                    if stopped:
                        printer.success("API stopped successfully.")
            
            elif args.command == "restart":
                port = args.data if args.data and isinstance(args.data, int) else None
                if status["running"]:
                    printer.info(f"Stopping server with process ID {status['pid']}...")
                
                # Service handles port preservation if port is None
                self.app.services.system.restart_api(port=port)
                
                if status["running"]:
                    printer.info(f"Server with process ID {status['pid']} stopped.")
                
                # Re-fetch status to show the actual port used
                new_status = self.app.services.system.get_api_status()
                printer.success(f"API restarted on port {new_status.get('port', 'unknown')}.")

            elif args.command == "start":
                if status["running"]:
                    msg = f"Connpy server is already running (PID: {status['pid']}"
                    if status.get("port"):
                        msg += f", Port: {status['port']}"
                    msg += ")."
                    printer.warning(msg)
                else:
                    port = args.data if args.data and isinstance(args.data, int) else 8048
                    self.app.services.system.start_api(port=port)
                    printer.success(f"API started on port {port}.")
                
            elif args.command == "debug":
                port = args.data if args.data and isinstance(args.data, int) else 8048
                self.app.services.system.debug_api(port=port)
        except ConnpyError as e:
            printer.error(str(e))
            sys.exit(1)

Methods

def dispatch(self, args)
Expand source code
def dispatch(self, args):
    try:
        status = self.app.services.system.get_api_status()
        
        if args.command == "stop":
            if not status["running"]:
                printer.warning("API does not seem to be running.")
            else:
                stopped = self.app.services.system.stop_api()
                if stopped:
                    printer.success("API stopped successfully.")
        
        elif args.command == "restart":
            port = args.data if args.data and isinstance(args.data, int) else None
            if status["running"]:
                printer.info(f"Stopping server with process ID {status['pid']}...")
            
            # Service handles port preservation if port is None
            self.app.services.system.restart_api(port=port)
            
            if status["running"]:
                printer.info(f"Server with process ID {status['pid']} stopped.")
            
            # Re-fetch status to show the actual port used
            new_status = self.app.services.system.get_api_status()
            printer.success(f"API restarted on port {new_status.get('port', 'unknown')}.")

        elif args.command == "start":
            if status["running"]:
                msg = f"Connpy server is already running (PID: {status['pid']}"
                if status.get("port"):
                    msg += f", Port: {status['port']}"
                msg += ")."
                printer.warning(msg)
            else:
                port = args.data if args.data and isinstance(args.data, int) else 8048
                self.app.services.system.start_api(port=port)
                printer.success(f"API started on port {port}.")
            
        elif args.command == "debug":
            port = args.data if args.data and isinstance(args.data, int) else 8048
            self.app.services.system.debug_api(port=port)
    except ConnpyError as e:
        printer.error(str(e))
        sys.exit(1)