default_server.py 1.31 KB
from async_web.exceptions import BaseError
from async_web.read_conf import str2dict


keys = dict()

ERR_KEY = 91
ERR_ACTION = 76


class ErrKey(BaseError):
    def __init__(self, message):
        super().__init__(ERR_KEY, message, 'login')


class ErrAction(BaseError):
    def __init__(self, message, action=''):
        super().__init__(ERR_ACTION, message, action)


class Handler:
    def __init__(self, ip):
        self.ip = ip
        self.client_id = None

    def login(self, d: dict):
        if 'key' not in d:
            raise ErrKey('Field key tidak ditemukan')
        if d['key'] not in keys:
            raise ErrKey('key tidak terdaftar')
        self.client_id = keys[d['key']]
        return dict(
            action='login', client_id=self.client_id, code=0, message='OK')

    def close(self):
        pass

    def save_message(self, method, data):
        pass

    async def parse(self, d: dict):
        action = d.get('action')
        if not action:
            raise ErrAction('Field action tidak ditemukan')
        if action == 'echo':
            return dict(action='echo', code=0, message='OK')
        msg = f'ERROR action {action} tidak dipahami'
        raise ErrAction(msg, action)

    def get_data(self):
        return dict()


def init(conf: dict):
    d = str2dict(conf['keys'])
    keys.update(d)