def resolve_regex_path_parameter(path_regex, variable): """ convert django style path parameters to OpenAPI parameters. TODO also try to handle regular grouped regex parameters """ for match in _PATH_PARAMETER_COMPONENT_RE.finditer(path_regex): converter, parameter = match.group('converter'), match.group( 'parameter') if converter and converter.startswith('drf_format_suffix_'): converter = 'drf_format_suffix' # remove appended options if parameter == variable and converter in DJANGO_PATH_CONVERTER_MAPPING: return { 'name': parameter, 'schema': build_basic_type(DJANGO_PATH_CONVERTER_MAPPING[converter]), 'in': OpenApiParameter.PATH, 'required': False if converter == 'drf_format_suffix' else True, } return None
def resolve_regex_path_parameter(path_regex, variable, available_formats): """ convert django style path parameters to OpenAPI parameters. TODO also try to handle regular grouped regex parameters """ for match in _PATH_PARAMETER_COMPONENT_RE.finditer(path_regex): converter, parameter = match.group('converter'), match.group( 'parameter') enum_values = None if converter and converter.startswith('drf_format_suffix_'): explicit_formats = converter[len('drf_format_suffix_'):].split('_') enum_values = [ f'.{suffix}' for suffix in explicit_formats if suffix in available_formats ] converter = 'drf_format_suffix' elif converter == 'drf_format_suffix': enum_values = [f'.{suffix}' for suffix in available_formats] if parameter == variable and converter in DJANGO_PATH_CONVERTER_MAPPING: return build_parameter_type( name=parameter, schema=build_basic_type( DJANGO_PATH_CONVERTER_MAPPING[converter]), location=OpenApiParameter.PATH, enum=enum_values, ) return None