Index: tools/android/loading/cloud/common/clovis_task.py |
diff --git a/tools/android/loading/cloud/common/clovis_task.py b/tools/android/loading/cloud/common/clovis_task.py |
index 739bb9cb6712b070fb3dea7970fd7141a3c2fd39..97c88a53e238a278ea5d28ebc6ec7ea20c503796 100644 |
--- a/tools/android/loading/cloud/common/clovis_task.py |
+++ b/tools/android/loading/cloud/common/clovis_task.py |
@@ -30,16 +30,15 @@ class ClovisTask(object): |
self._backend_params.update({'tag': str(uuid.uuid1())}) |
@classmethod |
- def FromJsonString(cls, json_dict): |
- """Loads a ClovisTask from a JSON string. |
+ def FromJsonDict(cls, json_dict): |
+ """Loads a ClovisTask from a JSON dictionary. |
Returns: |
ClovisTask: The task, or None if the string is invalid. |
""" |
try: |
- data = json.loads(json_dict) |
- action = data['action'] |
- action_params = data['action_params'] |
+ action = json_dict['action'] |
+ action_params = json_dict['action_params'] |
# Vaidate the format. |
if action == 'trace': |
urls = action_params['urls'] |
@@ -51,7 +50,19 @@ class ClovisTask(object): |
else: |
# When more actions are supported, check that they are valid here. |
return None |
- return cls(action, action_params, data.get('backend_params')) |
+ return cls(action, action_params, json_dict.get('backend_params')) |
+ except Exception: |
+ return None |
+ |
+ @classmethod |
+ def FromJsonString(cls, json_string): |
+ """Loads a ClovisTask from a JSON string. |
+ |
+ Returns: |
+ ClovisTask: The task, or None if the string is invalid. |
+ """ |
+ try: |
+ return cls.FromJsonDict(json.loads(json_string)) |
except Exception: |
return None |
@@ -60,11 +71,14 @@ class ClovisTask(object): |
"""Loads a ClovisTask from a base 64 string.""" |
return ClovisTask.FromJsonString(base64.b64decode(base64_string)) |
+ def ToJsonDict(self): |
+ """Returns the JSON representation of the task as a dictionary.""" |
+ return {'action': self._action, 'action_params': self._action_params, |
+ 'backend_params': self._backend_params} |
+ |
def ToJsonString(self): |
- """Returns the JSON representation of the task.""" |
- task_dict = {'action': self._action, 'action_params': self._action_params, |
- 'backend_params': self._backend_params} |
- return json.dumps(task_dict) |
+ """Returns the JSON representation of the task as a string.""" |
+ return json.dumps(self.ToJsonDict()) |
def Action(self): |
return self._action |