using System;
using System.Text;
using JetBrains.Annotations;
namespace WireMock.ResponseBuilders
{
///
/// The BodyResponseBuilder interface.
///
public interface IBodyResponseBuilder : ITransformResponseBuilder
{
///
/// WithBody : Create a ... response based on a string.
///
/// The body.
/// The Body Destination format (SameAsSource, String or Bytes).
/// The body encoding.
/// A .
IResponseBuilder WithBody([NotNull] string body, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null);
///
/// WithBody : Create a ... response based on a callback function.
///
/// The delegate to build the body.
/// The Body Destination format (SameAsSource, String or Bytes).
/// The body encoding.
/// A .
IResponseBuilder WithBody([NotNull] Func bodyFactory, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null);
///
/// WithBody : Create a ... response based on a bytearray.
///
/// The body.
/// The Body Destination format (SameAsSource, String or Bytes).
/// The body encoding.
/// A .
IResponseBuilder WithBody([NotNull] byte[] body, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null);
///
/// WithBody : Create a string response based on a object (which will be converted to a JSON string).
///
/// The body.
/// The body encoding.
/// Use JSON indented.
/// A .
IResponseBuilder WithBodyAsJson([NotNull] object body, [CanBeNull] Encoding encoding = null, bool? indented = null);
///
/// WithBody : Create a string response based on a object (which will be converted to a JSON string).
///
/// The body.
/// Define whether child objects to be indented according to the Newtonsoft.Json.JsonTextWriter.Indentation and Newtonsoft.Json.JsonTextWriter.IndentChar settings.
/// A .
IResponseBuilder WithBodyAsJson([NotNull] object body, bool indented);
///
/// WithBody : Create a string response based on a Base64 string (which will be decoded to a normal string).
///
/// The body.
/// The Encoding.
/// A .
[Obsolete]
IResponseBuilder WithBodyFromBase64([NotNull] string bodyAsbase64, [CanBeNull] Encoding encoding = null);
///
/// WithBodyFromFile : Create a ... response based on a File.
///
/// The filename.
/// Defines if this file is cached in memory or retrieved from disk everytime the response is created.
/// A .
IResponseBuilder WithBodyFromFile([NotNull] string filename, bool cache = true);
}
}