Skip to content
Snippets Groups Projects
Commit 7e5ff90e authored by Jiahang Chen's avatar Jiahang Chen
Browse files

add some try except in on_service_req

parent 31f8d8db
Branches
Tags
No related merge requests found
Pipeline #366577 passed
...@@ -299,6 +299,7 @@ def on_get_value_request(self, msg): ...@@ -299,6 +299,7 @@ def on_get_value_request(self, msg):
value = self._uriToData(attribute_path) value = self._uriToData(attribute_path)
except KeyError: except KeyError:
value = "invalid attribute path" value = "invalid attribute path"
APP_LOGGER.critical(value)
get_value_reply.fillGetValueReply( get_value_reply.fillGetValueReply(
senderUUID=self.thing_id, senderUUID=self.thing_id,
...@@ -416,6 +417,7 @@ def on_service_request(self, body_json): ...@@ -416,6 +417,7 @@ def on_service_request(self, body_json):
) )
service_type = body_json.get("serviceType") service_type = body_json.get("serviceType")
parameters = body_json.get("parameters") parameters = body_json.get("parameters")
service_reply = ServiceReply()
service_functionality = service_type.split('/')[0] service_functionality = service_type.split('/')[0]
service_functionality_obj = self.features.get(service_functionality) service_functionality_obj = self.features.get(service_functionality)
if service_functionality_obj is None: if service_functionality_obj is None:
...@@ -423,8 +425,33 @@ def on_service_request(self, body_json): ...@@ -423,8 +425,33 @@ def on_service_request(self, body_json):
"Functionality %s is not one of the built-in functionalities in %s!" % ( "Functionality %s is not one of the built-in functionalities in %s!" % (
service_functionality, self.name) service_functionality, self.name)
) )
service_reply.fillServiceReply(
senderUUID=self.thing_id,
receiverUUID=body_json.get("sender", None),
serviceType=body_json.get("serviceType", None),
results={"error": "invalid functionalities (serviceType) {}".format(service_functionality)},
replyingToUUID=body_json.get("identifier", None),
msgUUID="s3i:{}".format(uuid.uuid4())
)
else: else:
# TODO: Call right functionality. # TODO: Call right functionality.
try:
method = getattr(service_functionality_obj, service_type.split('/')[1])
except AttributeError:
APP_LOGGER.critical(
"Functionality %s is not one of the built-in functionalities in %s!" % (
service_type.split('/')[1], self.name)
)
service_reply.fillServiceReply(
senderUUID=self.thing_id,
receiverUUID=body_json.get("sender", None),
serviceType=body_json.get("serviceType", None),
results={"error": "invalid functionalities (serviceType) {}".format(service_type.split('/')[1])},
replyingToUUID=body_json.get("identifier", None),
msgUUID="s3i:{}".format(uuid.uuid4())
)
else:
print( print(
BColors.OKBLUE BColors.OKBLUE
+ "[S³I][Broker]" + "[S³I][Broker]"
...@@ -432,13 +459,21 @@ def on_service_request(self, body_json): ...@@ -432,13 +459,21 @@ def on_service_request(self, body_json):
+ ": Execute the function {0} of the class {1}.".format(service_type.split('/')[1], + ": Execute the function {0} of the class {1}.".format(service_type.split('/')[1],
service_type.split('/')[0]) service_type.split('/')[0])
) )
method = getattr(service_functionality_obj, service_type.split('/')[1]) try:
result = method(**parameters) result = method(**parameters)
except TypeError:
APP_LOGGER.critical("Invalid function arguments")
service_reply.fillServiceReply(
senderUUID=self.thing_id,
receiverUUID=body_json.get("sender", None),
serviceType=body_json.get("serviceType", None),
results={"error": "invalid function arguments (parameters)"},
replyingToUUID=body_json.get("identifier", None),
msgUUID="s3i:{}".format(uuid.uuid4())
)
else:
if isinstance(result, bool): if isinstance(result, bool):
result = {"ok": result} result = {"ok": result}
service_reply = ServiceReply()
service_reply.fillServiceReply( service_reply.fillServiceReply(
senderUUID=self.thing_id, senderUUID=self.thing_id,
receiverUUID=body_json.get("sender", None), receiverUUID=body_json.get("sender", None),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment