File tree 2 files changed +43
-2
lines changed
2 files changed +43
-2
lines changed Original file line number Diff line number Diff line change 1
1
from parse import Parser
2
2
3
3
4
+ class ExtendedParser (Parser ):
5
+ def _handle_field (self , field ):
6
+ # handle as path parameter field
7
+ field = field [1 :- 1 ]
8
+ path_parameter_field = "{%s:PathParameter}" % field
9
+ return super (ExtendedParser , self )._handle_field (
10
+ path_parameter_field )
11
+
12
+
13
+ def parse_path_parameter (text ):
14
+ return text
15
+ parse_path_parameter .pattern = r"[^\/]+"
16
+ parse_path_parameter .name = "PathParameter"
17
+
18
+
4
19
def search (path_pattern , full_url_pattern ):
5
- p = Parser (path_pattern )
20
+ extra_types = {parse_path_parameter .name : parse_path_parameter }
21
+ p = ExtendedParser (path_pattern , extra_types )
6
22
p ._expression = p ._expression + '$'
7
23
return p .search (full_url_pattern )
8
24
9
25
10
26
def parse (server_url , server_url_pattern ):
11
- p = Parser (server_url )
27
+ extra_types = {parse_path_parameter .name : parse_path_parameter }
28
+ p = ExtendedParser (server_url , extra_types )
12
29
p ._expression = '^' + p ._expression
13
30
return p .parse (server_url_pattern )
Original file line number Diff line number Diff line change
1
+ from openapi_core .templating .util import search
2
+
3
+
4
+ class TestSearch :
5
+
6
+ def test_endswith (self ):
7
+ path_patter = '/{test}/test'
8
+ full_url_pattern = '/test1/test/test2/test'
9
+
10
+ result = search (path_patter , full_url_pattern )
11
+
12
+ assert result .named == {
13
+ 'test' : 'test2' ,
14
+ }
15
+
16
+ def test_exact (self ):
17
+ path_patter = '/{test}/test'
18
+ full_url_pattern = '/test/test'
19
+
20
+ result = search (path_patter , full_url_pattern )
21
+
22
+ assert result .named == {
23
+ 'test' : 'test' ,
24
+ }
You can’t perform that action at this time.
0 commit comments