pass params to interceptor
This commit is contained in:
@@ -4,6 +4,7 @@ import graphql.ExecutionInput;
|
||||
import graphql.ExecutionResult;
|
||||
import graphql.GraphQL;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.util.List;
|
||||
@@ -26,14 +27,17 @@ public class GraphQLHandler {
|
||||
.operationName(graphQLHttpRequest.getOperationName())
|
||||
.variables(graphQLHttpRequest.getVariables())
|
||||
.build();
|
||||
Mono<ExecutionInput> executionInput = interceptor.preHandle(input, graphQLHttpRequest.getHttpHeaders());
|
||||
MultiValueMap<String, String> requestParams = graphQLHttpRequest.getRequestParams();
|
||||
Mono<ExecutionInput> executionInput = interceptor.preHandle(input,
|
||||
graphQLHttpRequest.getHttpHeaders(),
|
||||
requestParams);
|
||||
return executionInput
|
||||
.flatMap(this::execute)
|
||||
.flatMap(result -> interceptor.postHandle(result, graphQLHttpRequest.getHttpHeaders()))
|
||||
.flatMap(result -> toResponseBody(result, graphQLHttpRequest.getHttpHeaders()));
|
||||
.flatMap(result -> interceptor.postHandle(result, graphQLHttpRequest.getHttpHeaders(), requestParams))
|
||||
.flatMap(result -> toResponseBody(result, graphQLHttpRequest.getHttpHeaders(), requestParams));
|
||||
}
|
||||
|
||||
private Mono<GraphQLHttpResponse> toResponseBody(ExecutionResult executionResult, HttpHeaders httpHeaders) {
|
||||
private Mono<GraphQLHttpResponse> toResponseBody(ExecutionResult executionResult, HttpHeaders httpHeaders, MultiValueMap<String, String> requestParams) {
|
||||
Map<String, Object> responseBodyRaw = executionResult.toSpecification();
|
||||
Object data = responseBodyRaw.get("data");
|
||||
List<Map<String, Object>> errors = (List<Map<String, Object>>) responseBodyRaw.get("errors");
|
||||
@@ -41,7 +45,7 @@ public class GraphQLHandler {
|
||||
GraphQLHttpResponse responseBody = new GraphQLHttpResponse(data,
|
||||
errors,
|
||||
extensions, httpHeaders);
|
||||
Mono<GraphQLHttpResponse> graphQLResponseBodyMono = interceptor.customizeResponseBody(responseBody, executionResult, httpHeaders);
|
||||
Mono<GraphQLHttpResponse> graphQLResponseBodyMono = interceptor.customizeResponseBody(responseBody, executionResult, httpHeaders, requestParams);
|
||||
return graphQLResponseBodyMono;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,19 +3,27 @@ package org.springframework.graphql;
|
||||
import graphql.ExecutionInput;
|
||||
import graphql.ExecutionResult;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
public interface GraphQLInterceptor {
|
||||
|
||||
default Mono<ExecutionInput> preHandle(ExecutionInput input, HttpHeaders headers) {
|
||||
default Mono<ExecutionInput> preHandle(ExecutionInput input,
|
||||
HttpHeaders headers,
|
||||
MultiValueMap<String, String> requestParams) {
|
||||
return Mono.just(input);
|
||||
}
|
||||
|
||||
default Mono<ExecutionResult> postHandle(ExecutionResult result, HttpHeaders httpHeaders) {
|
||||
default Mono<ExecutionResult> postHandle(ExecutionResult result,
|
||||
HttpHeaders httpHeaders,
|
||||
MultiValueMap<String, String> requestParams) {
|
||||
return Mono.just(result);
|
||||
}
|
||||
|
||||
default Mono<GraphQLHttpResponse> customizeResponseBody(GraphQLHttpResponse graphQLHttpResponse, ExecutionResult executionResult, HttpHeaders httpHeader) {
|
||||
default Mono<GraphQLHttpResponse> customizeResponseBody(GraphQLHttpResponse graphQLHttpResponse,
|
||||
ExecutionResult executionResult,
|
||||
HttpHeaders httpHeader,
|
||||
MultiValueMap<String, String> requestParams) {
|
||||
return Mono.just(graphQLHttpResponse);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user