@@ -36,8 +36,7 @@ def __init__(
3636
3737 def validate (self , request ):
3838 try :
39- path = self ._get_path (request )
40- operation = self ._get_operation (request )
39+ path , operation , _ , _ , _ = self ._find_path (request )
4140 # don't process if operation errors
4241 except (InvalidServer , InvalidPath , InvalidOperation ) as exc :
4342 return RequestValidationResult ([exc , ], None , None , None )
@@ -61,8 +60,7 @@ def validate(self, request):
6160
6261 def _validate_parameters (self , request ):
6362 try :
64- path = self ._get_path (request )
65- operation = self ._get_operation (request )
63+ path , operation , _ , _ , _ = self ._find_path (request )
6664 except (InvalidServer , InvalidPath , InvalidOperation ) as exc :
6765 return RequestValidationResult ([exc , ], None , None )
6866
@@ -76,7 +74,7 @@ def _validate_parameters(self, request):
7674
7775 def _validate_body (self , request ):
7876 try :
79- operation = self ._get_operation (request )
77+ _ , operation , _ , _ , _ = self ._find_path (request )
8078 except (InvalidServer , InvalidOperation ) as exc :
8179 return RequestValidationResult ([exc , ], None , None )
8280
@@ -90,15 +88,17 @@ def _get_operation_pattern(self, request):
9088 server .default_url , request .full_url_pattern
9189 )
9290
93- def _get_path (self , request ):
91+ def _find_path (self , request ):
9492 operation_pattern = self ._get_operation_pattern (request )
9593
96- return self .spec [operation_pattern ]
94+ path = self .spec [operation_pattern ]
95+ path_variables = {}
96+ operation = self .spec .get_operation (operation_pattern , request .method )
97+ servers = path .servers or operation .servers or self .spec .servers
98+ server = servers [0 ]
99+ server_variables = {}
97100
98- def _get_operation (self , request ):
99- operation_pattern = self ._get_operation_pattern (request )
100-
101- return self .spec .get_operation (operation_pattern , request .method )
101+ return path , operation , server , path_variables , server_variables
102102
103103 def _get_security (self , request , operation ):
104104 security = operation .security or self .spec .security
0 commit comments