in modular_api/helpers/params_converter.py [0:0]
def convert_api_params(body, command_def, secure_parameters):
"""
Convert api params and check
:param body: The body of the request
:param command_def: The command definition of the current
command from command_base.json file
:param secure_parameters: Secure parameters of the command
:return: List of the temporary files
"""
parameters_list = []
log_parameters_list = []
temp_files_list = []
def_map = {j['name']: i for i, j in enumerate(command_def['parameters'])}
for key, value in body.items():
if def_map.get(key) and command_def['parameters'][def_map[key]].get(
'convert_content_to_file'):
meta_file_extensions = command_def['parameters'][def_map[key]].get(
'temp_file_extension')
received_file_extension = value['file_extension']
is_valid_file_extensions_passed(
meta_file_extensions=meta_file_extensions,
received_file_extension=received_file_extension
)
temp_file_key = TEMP_FILE_TEMPLATE.format(key)
temp_file = os.path.join(TEMP_FILE_FOLDER_PATH, temp_file_key)
temp_file += received_file_extension
process_file_with_extension(
file_extension=received_file_extension,
file_content=b64decode(value['file_content']),
temp_file=temp_file
)
parameters_list, log_parameters_list = \
build_param_and_value_in_click_format(
key, temp_file, secure_parameters, parameters_list,
log_parameters_list)
temp_files_list.append(temp_file)
continue
is_flag = command_def['parameters'][def_map[key]].get('is_flag')
if is_flag:
if value not in [True, 'True', 'true']:
raise ModularApiBadRequestException(
f'Unexpected value for the flag \'{key}\'. '
f'Only \'True\' is allowed, got \'{value}\'.'
)
pretty_param = convert_param(key)
parameters_list.append(pretty_param)
log_parameters_list.append(pretty_param)
elif isinstance(value, (str, int, float, bool)):
parameters_list, log_parameters_list = \
build_param_and_value_in_click_format(
key, value, secure_parameters, parameters_list,
log_parameters_list)
elif isinstance(value, list):
for param_value in value:
parameters_list, log_parameters_list = \
build_param_and_value_in_click_format(
key, param_value, secure_parameters, parameters_list,
log_parameters_list)
return parameters_list, temp_files_list, log_parameters_list