modular_api/helpers/request_processor.py (24 lines of code) (raw):

import copy def iterate_through_dict_values(result_meta, commands_meta, command_meta, mount_point): # TODO why two copies?. Does not seem right for key, value in commands_meta.items(): if isinstance(value, dict): if key.startswith('/'): mount_point = key elif value.get('route'): command_meta = value iterate_through_dict_values(result_meta, value, command_meta, mount_point) else: if key == 'path': copy_command_meta = copy.deepcopy(command_meta) copy_command_meta.update({'mount_point': mount_point}) result_meta.update({value: copy_command_meta}) command_meta = None def generate_route_meta_mapping(commands_meta): command_meta = {} route_meta_mapping = {} mount_point = None iterate_through_dict_values(route_meta_mapping, commands_meta, command_meta, mount_point) return route_meta_mapping