Source code for obswsrc.requests

"""
This module holds dynamically generated classes.
For more info see protocol.py and protocol.json.
"""

# =============================================================================
# >> IMPORTS
# =============================================================================
# Python
from enum import Enum

# obs-ws-rc
from .struct import Struct, StructField, StructMeta


# =============================================================================
# >> BASE CLASSES
# =============================================================================
[docs]class ResponseStatus(Enum): OK = 'OK' ERROR = 'ERROR'
[docs]class BaseResponseMeta(StructMeta): def __init__(cls, name, bases, namespace): cls._fields = cls._fields[:] + ( StructField('message_id', "message-id", str), StructField( 'status', "status", lambda status: ResponseStatus(status.upper()) ), StructField('error', "error", str, True), ) super().__init__(name, bases, namespace)
[docs]class BaseResponse(Struct, metaclass=BaseResponseMeta): pass
[docs]class BaseRequest(Struct): @property def type_name(self): raise NotImplementedError
[docs] class response_class(BaseResponse): pass
[docs] def get_request_data(self, message_id): dict_ = self.copy() dict_['request-type'] = self.type_name dict_['message-id'] = message_id return dict_
[docs]def dummy_request(**kwargs): raise NotImplementedError("protocol.json doesn't implement this request")
AuthenticateRequest = dummy_request GetAuthRequiredRequest = dummy_request