Skip to content

Commit b045eca

Browse files
committed
updated Introspection taken care
Signed-off-by: raovishal <[email protected]>
1 parent 0f376d5 commit b045eca

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

qudini-reactive-graphql/src/main/java/com/qudini/reactive/graphql/ReactiveGraphQLAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import graphql.schema.idl.SchemaParser;
1414
import graphql.schema.idl.TypeDefinitionRegistry;
1515
import graphql.schema.idl.TypeRuntimeWiring;
16+
import graphql.schema.visibility.NoIntrospectionGraphqlFieldVisibility;
1617
import lombok.SneakyThrows;
1718
import org.springframework.beans.factory.ListableBeanFactory;
1819
import org.springframework.beans.factory.annotation.Value;
@@ -68,7 +69,7 @@ public TypeDefinitionRegistry graphqlRegistry(@Value("classpath:schema.graphql")
6869
@Bean
6970
@ConditionalOnMissingBean
7071
public RuntimeWiring graphqlWiring(Gom gom, Collection<Scalar<?, ?, ?>> scalars, Collection<TypeRuntimeWiring> wirings) {
71-
var wiring = RuntimeWiring.newRuntimeWiring();
72+
var wiring = RuntimeWiring.newRuntimeWiring().fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);
7273
scalars.stream().map(Scalar::build).forEach(wiring::scalar);
7374
wirings.forEach(wiring::type);
7475
gom.decorateRuntimeWiringBuilder(wiring);
@@ -98,5 +99,4 @@ public RouterFunction<ServerResponse> graphqlRouter(GraphQLHandler graphqlHandle
9899
graphqlHandler::postJson
99100
);
100101
}
101-
102102
}

qudini-reactive-graphql/src/main/java/com/qudini/reactive/graphql/http/GraphQLHandler.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44
import com.qudini.reactive.logging.Log;
55
import graphql.ExecutionResult;
66
import graphql.GraphQL;
7+
import graphql.analysis.MaxQueryComplexityInstrumentation;
78
import graphql.analysis.MaxQueryDepthInstrumentation;
89
import graphql.execution.DataFetcherExceptionHandler;
10+
import graphql.execution.instrumentation.ChainedInstrumentation;
11+
import graphql.execution.instrumentation.Instrumentation;
912
import graphql.schema.GraphQLSchema;
1013
import lombok.RequiredArgsConstructor;
1114
import org.dataloader.DataLoaderRegistry;
@@ -16,6 +19,7 @@
1619
import reactor.core.publisher.Mono;
1720
import reactor.util.context.ContextView;
1821

22+
import java.util.Arrays;
1923
import java.util.Map;
2024

2125
import static com.qudini.utils.MoreTuples.onBoth;
@@ -46,7 +50,7 @@ private Mono<Map<String, Object>> execute(ContextView context, GraphQLRequest re
4650
var input = request.toExecutionInput(context, registry);
4751
var graphql = GraphQL
4852
.newGraphQL(schema)
49-
.instrumentation(new MaxQueryDepthInstrumentation(maxDepth))
53+
.instrumentation(instrumentation())
5054
.defaultDataFetcherExceptionHandler(exceptionHandler)
5155
.build();
5256
return Log
@@ -60,4 +64,13 @@ private Mono<ServerResponse> respond(Mono<Map<String, Object>> body) {
6064
.body(body, ParameterizedTypeReference.forType(Map.class));
6165
}
6266

67+
public Instrumentation instrumentation() {
68+
return new ChainedInstrumentation(
69+
Arrays.asList(
70+
new MaxQueryDepthInstrumentation(maxDepth), // Limit query depth to maxDepth
71+
new MaxQueryComplexityInstrumentation(maxDepth) // Limit query complexity to maxDepth
72+
)
73+
);
74+
}
75+
6376
}

0 commit comments

Comments
 (0)