mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 12:12:55 +00:00 
			
		
		
		
	Project-wide refactor of things named Component* to EventHandler*
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
			
		||||
from transitions import Machine
 | 
			
		||||
 | 
			
		||||
import component_connector
 | 
			
		||||
import event_handler_connector
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Buttons:
 | 
			
		||||
@@ -22,7 +22,7 @@ class Buttons:
 | 
			
		||||
 | 
			
		||||
    def forward_message(self, event_data):
 | 
			
		||||
        message = event_data.kwargs.get('message')
 | 
			
		||||
        component_connector.send_message(message)
 | 
			
		||||
        event_handler_connector.send_message(message)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
fsm = Buttons()
 | 
			
		||||
@@ -5,7 +5,7 @@ from util import parse_anchor_from_message
 | 
			
		||||
 | 
			
		||||
# from buttons import fsm
 | 
			
		||||
from sql_injection_fsm import fsm
 | 
			
		||||
import component_connector
 | 
			
		||||
import event_handler_connector
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ZMQWebSocketHandler(WebSocketHandler):
 | 
			
		||||
@@ -18,14 +18,14 @@ class ZMQWebSocketHandler(WebSocketHandler):
 | 
			
		||||
            logging.debug('Received on pull socket: {}'.format(data.decode()))
 | 
			
		||||
            self.write_message(data.decode())
 | 
			
		||||
 | 
			
		||||
        component_connector.register_callback(zmq_callback)
 | 
			
		||||
        event_handler_connector.register_callback(zmq_callback)
 | 
			
		||||
 | 
			
		||||
    def on_message(self, message):
 | 
			
		||||
        logging.debug('Received on WebSocket: {}'.format(message))
 | 
			
		||||
        fsm.trigger(parse_anchor_from_message(message), message=message)
 | 
			
		||||
 | 
			
		||||
    def send_message(self, message: str, anchor: str = None):
 | 
			
		||||
        component_connector.send_message(message, anchor)
 | 
			
		||||
        event_handler_connector.send_message(message, anchor)
 | 
			
		||||
 | 
			
		||||
    def on_close(self):
 | 
			
		||||
        pass
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
from transitions import Machine
 | 
			
		||||
 | 
			
		||||
import component_connector
 | 
			
		||||
import event_handler_connector
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SQLInjectionFSM:
 | 
			
		||||
@@ -26,7 +26,7 @@ class SQLInjectionFSM:
 | 
			
		||||
 | 
			
		||||
    def forward_message(self, event_data):
 | 
			
		||||
        message = event_data.kwargs.get('message')
 | 
			
		||||
        component_connector.send_message(message)
 | 
			
		||||
        event_handler_connector.send_message(message)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
fsm = SQLInjectionFSM()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
import json
 | 
			
		||||
from functools import partial
 | 
			
		||||
 | 
			
		||||
from component_base import ComponentBase
 | 
			
		||||
from event_handler_base import EventHandlerBase
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Component(ComponentBase):
 | 
			
		||||
    def __init__(self, anchor, event_handler, zmq_context=None):
 | 
			
		||||
        super().__init__(anchor, event_handler, zmq_context)
 | 
			
		||||
class EventHandler(EventHandlerBase):
 | 
			
		||||
    def __init__(self, anchor, event_handler_function, zmq_context=None):
 | 
			
		||||
        super().__init__(anchor, event_handler_function, zmq_context)
 | 
			
		||||
 | 
			
		||||
        def wrapper(msg_parts, handler):
 | 
			
		||||
            anchor, message = msg_parts
 | 
			
		||||
@@ -15,6 +15,4 @@ class Component(ComponentBase):
 | 
			
		||||
            encoded_response = json.dumps(response).encode('utf-8')
 | 
			
		||||
            self.zmq_push_socket.send_multipart([anchor, encoded_response])
 | 
			
		||||
 | 
			
		||||
        self.zmq_sub_stream.on_recv(partial(wrapper, handler=event_handler))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        self.zmq_sub_stream.on_recv(partial(wrapper, handler=event_handler_function))
 | 
			
		||||
@@ -8,10 +8,10 @@ from config import PUBLISHER_PORT, RECEIVER_PORT
 | 
			
		||||
ioloop.install()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ComponentBase:
 | 
			
		||||
    def __init__(self, anchor, event_handler, zmq_context=None):
 | 
			
		||||
class EventHandlerBase:
 | 
			
		||||
    def __init__(self, anchor, event_handler_function, zmq_context=None):
 | 
			
		||||
        self.anchor = anchor
 | 
			
		||||
        self.event_handler = event_handler
 | 
			
		||||
        self.event_handler_function = event_handler_function
 | 
			
		||||
        self.zmq_context = zmq_context or zmq.Context.instance()
 | 
			
		||||
        self.zmq_sub_socket = self.zmq_context.socket(zmq.SUB)
 | 
			
		||||
        self.subscriptions = {self.anchor}
 | 
			
		||||
@@ -2,8 +2,8 @@ import codecs
 | 
			
		||||
import sqlite3
 | 
			
		||||
 | 
			
		||||
import source_code
 | 
			
		||||
from component import Component
 | 
			
		||||
from stateful_component import StatefulComponent
 | 
			
		||||
from event_handler import EventHandler
 | 
			
		||||
from stateful_event_handler import StatefulEventHandler
 | 
			
		||||
from tornado.ioloop import IOLoop
 | 
			
		||||
 | 
			
		||||
from login_component import authorize_login
 | 
			
		||||
@@ -70,17 +70,17 @@ def login_handler(data, component):
 | 
			
		||||
    yield ('anchor_login', '# Login page\n' + response)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def source_code_handler(data, component):
 | 
			
		||||
    component.unsubscribe(data['anchor'])
 | 
			
		||||
def source_code_handler(data, event_handler):
 | 
			
		||||
    event_handler.unsubscribe(data['anchor'])
 | 
			
		||||
    yield (data['anchor'],
 | 
			
		||||
           source_code.get_source_code(authorize_login, strip_comments=True))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    anchor_a = Component('anchor_a', change_case_handler)
 | 
			
		||||
    anchor_b = Component('anchor_b', rot13_handler)
 | 
			
		||||
    anchor_c = Component('anchor_c', reverse_handler)
 | 
			
		||||
    anchor_login = StatefulComponent('anchor_login', login_handler)
 | 
			
		||||
    anchor_webide = StatefulComponent('anchor_webide', source_code_handler)
 | 
			
		||||
    anchor_a = EventHandler('anchor_a', change_case_handler)
 | 
			
		||||
    anchor_b = EventHandler('anchor_b', rot13_handler)
 | 
			
		||||
    anchor_c = EventHandler('anchor_c', reverse_handler)
 | 
			
		||||
    anchor_login = StatefulEventHandler('anchor_login', login_handler)
 | 
			
		||||
    anchor_webide = StatefulEventHandler('anchor_webide', source_code_handler)
 | 
			
		||||
    IOLoop.instance().start()
 | 
			
		||||
 | 
			
		||||
@@ -3,10 +3,10 @@ from functools import partial
 | 
			
		||||
 | 
			
		||||
import zmq
 | 
			
		||||
 | 
			
		||||
from component_base import ComponentBase
 | 
			
		||||
from event_handler_base import EventHandlerBase
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class StatefulComponent(ComponentBase):
 | 
			
		||||
class StatefulEventHandler(EventHandlerBase):
 | 
			
		||||
    def __init__(self, anchor, event_handler, zmq_context=None):
 | 
			
		||||
        super().__init__(anchor, event_handler, zmq_context)
 | 
			
		||||
        self.generator = None
 | 
			
		||||
		Reference in New Issue
	
	Block a user