30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
from typing import Optional, Callable
|
|
|
|
from Crypto.PublicKey.ECC import EccKey
|
|
|
|
from SantaExchange.Message import Message
|
|
from SantaExchange.MessageHandler import MessageHandler
|
|
from SantaExchange.SantasBrain import Brain
|
|
from SantaExchange.UserInterface import UserInterface
|
|
|
|
class ExchangeClient(MessageHandler, UserInterface):
|
|
def __init__(self, send_message_function, receive_user_function, announce_recipient_function):
|
|
MessageHandler.__init__(self)
|
|
UserInterface.__init__(self)
|
|
|
|
self.send_message_function = send_message_function
|
|
self.receive_user_function = receive_user_function
|
|
self.announce_recipient_function = announce_recipient_function
|
|
|
|
self.brain = Brain(self, self)
|
|
|
|
def send_message(self, message: Message, signing_key: EccKey):
|
|
message_string = message.generate_and_sign(signing_key)
|
|
self.send_message_function(message_string)
|
|
|
|
def receive_user(self, name: str):
|
|
self.receive_user_function(name)
|
|
|
|
def announce_recipient(self, name: str, other_info: str):
|
|
self.announce_recipient_function(name, other_info)
|