// Copyright © WireMock.Net using System; using System.Collections.Generic; using GraphQL.Types; using Stef.Validation; using WireMock.Matchers; using WireMock.Matchers.Request; using WireMock.Models; using WireMock.Models.GraphQL; namespace WireMock.RequestBuilders; /// /// IRequestBuilderExtensions extensions for GraphQL. /// // ReSharper disable once InconsistentNaming public static class IRequestBuilderExtensions { /// /// WithBodyAsGraphQL: The GraphQL body as a string. /// /// The . /// The GraphQL schema. /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch). /// The . public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, string schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema)); } /// /// WithBodyAsGraphQL: The GraphQL schema as a string. /// /// The . /// The GraphQL schema. /// A dictionary defining the custom scalars used in this schema. (optional) /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch). /// The . public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, string schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema, customScalars)); } /// /// WithBodyAsGraphQL: The GraphQL schema as a . /// /// The . /// The GraphQL schema. /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch). /// The . public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchema schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, new SchemaDataWrapper(schema))); } /// /// WithBodyAsGraphQL: The GraphQL schema as a . /// /// The . /// The GraphQL schema. /// A dictionary defining the custom scalars used in this schema. (optional) /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch). /// The . public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchema schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, new SchemaDataWrapper(schema), customScalars)); } /// /// WithBodyAsGraphQL: The GraphQL schema as a . /// /// The . /// The GraphQL schema. /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch). /// The . public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchemaData schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema)); } /// /// WithBodyAsGraphQL: The GraphQL schema as a . /// /// The . /// The GraphQL schema. /// A dictionary defining the custom scalars used in this schema. (optional) /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch). /// The . public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchemaData schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema, customScalars)); } }