code: def get_task_descriptor_content(self, courseid, taskid):
          
          if not id_checker(courseid):
              raise InvalidNameException("Course with invalid name: " + courseid)
          if not id_checker(taskid):
              raise InvalidNameException("Task with invalid name: " + taskid)
  
          descriptor_path, descriptor_manager = self._get_task_descriptor_info(courseid, taskid)
          try:
              task_content = descriptor_manager.load(self.get_task_fs(courseid, taskid).get(descriptor_path))
          except Exception as e:
              raise TaskUnreadableException(str(e))
          return task_content
docs: :param courseid: the course id of the course
          :param taskid: the task id of the task
          :raise InvalidNameException, TaskNotFoundException, TaskUnreadableException
          :return: the content of the task descriptor, as a dict