mirror of
https://github.com/correl/openapi-core.git
synced 2024-11-28 11:09:52 +00:00
32 lines
933 B
Python
32 lines
933 B
Python
from parse import Parser
|
|
|
|
|
|
class ExtendedParser(Parser):
|
|
def _handle_field(self, field):
|
|
# handle as path parameter field
|
|
field = field[1:-1]
|
|
path_parameter_field = "{%s:PathParameter}" % field
|
|
return super(ExtendedParser, self)._handle_field(
|
|
path_parameter_field)
|
|
|
|
|
|
def parse_path_parameter(text):
|
|
return text
|
|
|
|
|
|
parse_path_parameter.pattern = r"[^\/]+"
|
|
parse_path_parameter.name = "PathParameter"
|
|
|
|
|
|
def search(path_pattern, full_url_pattern):
|
|
extra_types = {parse_path_parameter.name: parse_path_parameter}
|
|
p = ExtendedParser(path_pattern, extra_types)
|
|
p._expression = p._expression + '$'
|
|
return p.search(full_url_pattern)
|
|
|
|
|
|
def parse(server_url, server_url_pattern):
|
|
extra_types = {parse_path_parameter.name: parse_path_parameter}
|
|
p = ExtendedParser(server_url, extra_types)
|
|
p._expression = '^' + p._expression
|
|
return p.parse(server_url_pattern)
|