using System;
using System.Collections.Generic;
using JetBrains.Annotations;
using WireMock.Models;
using WireMock.ResponseProviders;
using WireMock.Types;
namespace WireMock.Server
{
///
/// IRespondWithAProvider
///
public interface IRespondWithAProvider
{
///
/// Gets the unique identifier for this mapping.
///
Guid Guid { get; }
///
/// Define a unique identifier for this mapping.
///
/// The unique identifier.
/// The .
IRespondWithAProvider WithGuid(Guid guid);
///
/// Define a unique title for this mapping.
///
/// The unique title.
/// The .
IRespondWithAProvider WithTitle(string title);
///
/// Define the full filepath for this mapping.
///
/// The full filepath.
/// The .
IRespondWithAProvider WithPath(string path);
///
/// Define a unique identifier for this mapping.
///
/// The unique identifier.
/// The .
IRespondWithAProvider WithGuid(string guid);
///
/// Define the priority for this mapping.
///
/// The priority.
/// The .
IRespondWithAProvider AtPriority(int priority);
///
/// The respond with.
///
/// The provider.
void RespondWith(IResponseProvider provider);
///
/// Sets the the scenario.
///
/// The scenario.
/// The .
IRespondWithAProvider InScenario(string scenario);
///
/// Sets the the scenario with an integer value.
///
/// The scenario.
/// The .
IRespondWithAProvider InScenario(int scenario);
///
/// Execute this respond only in case the current state is equal to specified one.
///
/// Any object which identifies the current state
/// The .
IRespondWithAProvider WhenStateIs(string state);
///
/// Execute this respond only in case the current state is equal to specified one.
///
/// Any object which identifies the current state
/// The .
IRespondWithAProvider WhenStateIs(int state);
///
/// Once this mapping is executed the state will be changed to specified one.
///
/// Any object which identifies the new state
/// The number of times this match should be matched before the state will be changed to the specified one. Default value is 1.
/// The .
IRespondWithAProvider WillSetStateTo(string state, int? times = 1);
///
/// Once this mapping is executed the state will be changed to specified one.
///
/// Any object which identifies the new state
/// The number of times this match should be matched before the state will be changed to the specified one. Default value is 1.
/// The .
IRespondWithAProvider WillSetStateTo(int state, int? times = 1);
///
/// Add (multiple) Webhook(s) to call after the response has been generated.
///
/// The Webhooks
/// The .
IRespondWithAProvider WithWebhook(params IWebhook[] webhooks);
///
/// Add a Webhook to call after the response has been generated.
///
/// The Webhook Url
/// The method to use. [optional]
/// The Headers to send. [optional]
/// The body (as string) to send. [optional]
/// Use Transformer. [optional]
/// The transformer type. [optional]
/// The .
IRespondWithAProvider WithWebhook(
[NotNull] string url,
[CanBeNull] string method = "post",
[CanBeNull] IDictionary> headers = null,
[CanBeNull] string body = null,
bool useTransformer = true,
TransformerType transformerType = TransformerType.Handlebars
);
///
/// Add a Webhook to call after the response has been generated.
///
/// The Webhook Url
/// The method to use. [optional]
/// The Headers to send. [optional]
/// The body (as json) to send. [optional]
/// Use Transformer. [optional]
/// The transformer type. [optional]
/// The .
IRespondWithAProvider WithWebhook(
[NotNull] string url,
[CanBeNull] string method = "post",
[CanBeNull] IDictionary> headers = null,
[CanBeNull] object body = null,
bool useTransformer = true,
TransformerType transformerType = TransformerType.Handlebars
);
}
}