using JetBrains.Annotations;
using System;
using System.Collections.Generic;
using WireMock.Matchers;
namespace WireMock.RequestBuilders
{
///
/// The HeadersRequestBuilder interface.
///
public interface IHeadersRequestBuilder : ICookiesRequestBuilder
{
///
/// WithHeader: matching based on name, pattern and matchBehaviour.
///
/// The name.
/// The pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string pattern, MatchBehaviour matchBehaviour);
///
/// WithHeader: matching based on name, pattern, ignoreCase and matchBehaviour.
///
/// The name.
/// The pattern.
/// Ignore the case from the pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string pattern, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
///
/// WithHeader: matching based on name, patterns and matchBehaviour.
///
/// The name.
/// The patterns.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string[] patterns, MatchBehaviour matchBehaviour);
///
/// WithHeader: matching based on name, patterns, ignoreCase and matchBehaviour.
///
/// The name.
/// The patterns.
/// Ignore the case from the pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string[] patterns, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
///
/// WithHeader: matching based on name and IStringMatcher[].
///
/// The name.
/// The matchers.
/// The .
IRequestBuilder WithHeader([NotNull] string name, [NotNull] params IStringMatcher[] matchers);
///
/// WithHeader: matching based on name, ignoreCase and IStringMatcher[].
///
/// The name.
/// Ignore the case from the header-keys.
/// The matchers.
/// The .
IRequestBuilder WithHeader([NotNull] string name, bool ignoreCase, [NotNull] params IStringMatcher[] matchers);
///
/// WithHeader: matching based on name, ignoreCase, matchBehaviour and IStringMatcher[].
///
/// The name.
/// Ignore the case from the header-keys.
/// The match behaviour.
/// The matchers.
/// The .
IRequestBuilder WithHeader([NotNull] string name, bool ignoreCase, MatchBehaviour matchBehaviour, [NotNull] params IStringMatcher[] matchers);
///
/// WithHeader: matching based on functions.
///
/// The headers funcs.
/// The .
IRequestBuilder WithHeader([NotNull] params Func, bool>[] funcs);
}
}