fix: correctly escape path templates

Previously, the resulting regex was incorrect, as the
newly introduced control characters (when handling
path parameters) were also escaped. This caused
paths with parameters to not be generated.

Also removes an effect-less `for` loop.
pull/49/head
Antal Szabó 2 years ago
parent 6e28a45545
commit f85071e4b9

@ -23,18 +23,10 @@ from mitmproxy2swagger.mitmproxy_capture_reader import (
def path_to_regex(path): def path_to_regex(path):
# replace the path template with a regex # replace the path template with a regex
path = path.replace("\\", "\\\\") path = re.escape(path)
path = path.replace("{", "(?P<") path = path.replace(r"\{", "(?P<")
path = path.replace("}", ">[^/]+)") path = path.replace(r"\}", ">[^/]+)")
path = path.replace("*", ".*") path = path.replace(r"\*", ".*")
path = path.replace("/", "\\/")
path = path.replace("?", "\\?")
path = path.replace("(", "\\(")
path = path.replace(")", "\\)")
path = path.replace(".", "\\.")
path = path.replace("+", "\\+")
path = path.replace("[", "\\[")
path = path.replace("]", "\\]")
return "^" + path + "$" return "^" + path + "$"
@ -160,8 +152,6 @@ def main(override_args: Optional[Sequence[str]] = None):
# new endpoints will be added here so that they can be added as comments in the swagger file # new endpoints will be added here so that they can be added as comments in the swagger file
new_path_templates = [] new_path_templates = []
for path in path_templates:
re.compile(path_to_regex(path))
path_template_regexes = [re.compile(path_to_regex(path)) for path in path_templates] path_template_regexes = [re.compile(path_to_regex(path)) for path in path_templates]
try: try:

Loading…
Cancel
Save