-
Notifications
You must be signed in to change notification settings - Fork 70
Description
validation rules are the recommended way to implement things like depth limit validators and other sorts of protectors.
When inspecting the source code, I found out that validation_rules
aren't passed as an argument during schema execution. It would be nice if this could be fixed so that we could implement our own validation rules.
graphql-server/graphql_server/flask/graphqlview.py
Lines 87 to 98 in c03e1a4
execution_results, all_params = run_http_query( | |
self.schema, | |
request_method, | |
data, | |
query_data=request.args, | |
batch_enabled=self.batch, | |
catch=catch, | |
# Execute options | |
root_value=self.get_root_value(), | |
context_value=self.get_context(), | |
middleware=self.get_middleware(), | |
) |
over here, the http query is run via the run_http_query
function.
This method also takes other execution options, as shown below.
graphql-server/graphql_server/__init__.py
Lines 58 to 67 in c03e1a4
def run_http_query( | |
schema: GraphQLSchema, | |
request_method: str, | |
data: Union[Dict, List[Dict]], | |
query_data: Optional[Dict] = None, | |
batch_enabled: bool = False, | |
catch: bool = False, | |
run_sync: bool = True, | |
**execute_options, | |
) -> GraphQLResponse: |
Inside the run_http_query
method, this function is called.
graphql-server/graphql_server/__init__.py
Lines 122 to 124 in c03e1a4
get_response( | |
schema, params, catch_exc, allow_only_query, run_sync, **execute_options | |
) |
this function, get_response
takes another execution option, validation_rules
.
This is not being passed anywhere, and always remains None.
graphql-server/graphql_server/__init__.py
Lines 234 to 243 in c03e1a4
def get_response( | |
schema: GraphQLSchema, | |
params: GraphQLParams, | |
catch_exc: Type[BaseException], | |
allow_only_query: bool = False, | |
run_sync: bool = True, | |
validation_rules: Optional[Collection[Type[ASTValidationRule]]] = None, | |
max_errors: Optional[int] = None, | |
**kwargs, | |
) -> Optional[AwaitableOrValue[ExecutionResult]]: |
I will send a PR ASAP!