// 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));
}
}