notif_report #3
@@ -196,7 +196,7 @@ class ServerCapabilities:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.action_registry: Dict[str, Type[AlpineBitsAction]] = {}
|
self.action_registry: Dict[AlpineBitsActionName, Type[AlpineBitsAction]] = {}
|
||||||
self._discover_actions()
|
self._discover_actions()
|
||||||
self.capability_dict = None
|
self.capability_dict = None
|
||||||
|
|
||||||
@@ -214,8 +214,8 @@ class ServerCapabilities:
|
|||||||
if self._is_action_implemented(obj):
|
if self._is_action_implemented(obj):
|
||||||
action_instance = obj()
|
action_instance = obj()
|
||||||
if hasattr(action_instance, "name"):
|
if hasattr(action_instance, "name"):
|
||||||
# Use capability name for the registry key
|
# Use capability attribute as registry key
|
||||||
self.action_registry[action_instance.name.capability_name] = obj
|
self.action_registry[action_instance.name] = obj
|
||||||
|
|
||||||
def _is_action_implemented(self, action_class: Type[AlpineBitsAction]) -> bool:
|
def _is_action_implemented(self, action_class: Type[AlpineBitsAction]) -> bool:
|
||||||
"""
|
"""
|
||||||
@@ -234,7 +234,7 @@ class ServerCapabilities:
|
|||||||
"""
|
"""
|
||||||
versions_dict = {}
|
versions_dict = {}
|
||||||
|
|
||||||
for action_name, action_class in self.action_registry.items():
|
for action_enum, action_class in self.action_registry.items():
|
||||||
action_instance = action_class()
|
action_instance = action_class()
|
||||||
|
|
||||||
# Get supported versions for this action
|
# Get supported versions for this action
|
||||||
@@ -250,7 +250,7 @@ class ServerCapabilities:
|
|||||||
if version_str not in versions_dict:
|
if version_str not in versions_dict:
|
||||||
versions_dict[version_str] = {"version": version_str, "actions": []}
|
versions_dict[version_str] = {"version": version_str, "actions": []}
|
||||||
|
|
||||||
action_dict = {"action": action_name}
|
action_dict = {"action": action_enum.capability_name}
|
||||||
|
|
||||||
# Add supports field if the action has custom supports
|
# Add supports field if the action has custom supports
|
||||||
if hasattr(action_instance, "supports") and action_instance.supports:
|
if hasattr(action_instance, "supports") and action_instance.supports:
|
||||||
@@ -714,14 +714,14 @@ class AlpineBitsServer:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Check if we have an implementation for this action
|
# Check if we have an implementation for this action
|
||||||
capability_name = action_enum.capability_name
|
|
||||||
if capability_name not in self._action_instances:
|
if action_enum not in self._action_instances:
|
||||||
return AlpineBitsResponse(
|
return AlpineBitsResponse(
|
||||||
f"Error: Action {request_action_name} is not implemented",
|
f"Error: Action {request_action_name} is not implemented",
|
||||||
HttpStatusCode.BAD_REQUEST,
|
HttpStatusCode.BAD_REQUEST,
|
||||||
)
|
)
|
||||||
|
|
||||||
action_instance: AlpineBitsAction = self._action_instances[capability_name]
|
action_instance: AlpineBitsAction = self._action_instances[action_enum]
|
||||||
|
|
||||||
# Check if the action supports the requested version
|
# Check if the action supports the requested version
|
||||||
if not await action_instance.check_version_supported(version_enum):
|
if not await action_instance.check_version_supported(version_enum):
|
||||||
@@ -733,7 +733,7 @@ class AlpineBitsServer:
|
|||||||
# Handle the request
|
# Handle the request
|
||||||
try:
|
try:
|
||||||
# Special case for ping action - pass server capabilities
|
# Special case for ping action - pass server capabilities
|
||||||
if capability_name == "action_OTA_Ping":
|
if action_enum == AlpineBitsActionName.OTA_PING:
|
||||||
return await action_instance.handle(
|
return await action_instance.handle(
|
||||||
action=request_action_name, request_xml=request_xml, version=version_enum, server_capabilities=self.capabilities, client_info=client_info
|
action=request_action_name, request_xml=request_xml, version=version_enum, server_capabilities=self.capabilities, client_info=client_info
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user