using System;
using System.Collections.Generic;
#if NETSTANDARD1_3_OR_GREATER || NET461
using System.Security.Cryptography.X509Certificates;
#endif
using WireMock.Types;
using WireMock.Util;
namespace WireMock;
///
/// IRequestMessage
///
public interface IRequestMessage
{
///
/// Gets the Client IP Address.
///
string ClientIP { get; }
///
/// Gets the url (relative).
///
string Url { get; }
///
/// Gets the AbsoluteUrl.
///
string AbsoluteUrl { get; }
///
/// The ProxyUrl (if a proxy is used).
///
string? ProxyUrl { get; set; }
///
/// Gets the DateTime.
///
DateTime DateTime { get; }
///
/// Gets the path (relative).
///
string Path { get; }
///
/// Gets the AbsolutePath.
///
string AbsolutePath { get; }
///
/// Gets the path segments.
///
string[] PathSegments { get; }
///
/// Gets the absolute path segments.
///
string[] AbsolutePathSegments { get; }
///
/// Gets the method.
///
string Method { get; }
///
/// Gets the headers.
///
IDictionary>? Headers { get; }
///
/// Gets the cookies.
///
IDictionary? Cookies { get; }
///
/// Gets the query.
///
IDictionary>? Query { get; }
///
/// Gets the query.
///
IDictionary>? QueryIgnoreCase { get; }
///
/// Gets the raw query.
///
string RawQuery { get; }
///
/// The body.
///
IBodyData? BodyData { get; }
///
/// The original body as string. Convenience getter for Handlebars.
///
string Body { get; }
///
/// The body (as JSON object). Convenience getter for Handlebars.
///
object BodyAsJson { get; }
///
/// The body (as bytearray). Convenience getter for Handlebars.
///
byte[] BodyAsBytes { get; }
///
/// The detected body type. Convenience getter for Handlebars.
///
string DetectedBodyType { get; }
///
/// The detected body type from the Content-Type header. Convenience getter for Handlebars.
///
string DetectedBodyTypeFromContentType { get; }
///
/// The detected compression from the Content-Encoding header. Convenience getter for Handlebars.
///
string DetectedCompression { get; }
///
/// Gets the Host
///
string Host { get; }
///
/// Gets the protocol
///
string Protocol { get; }
///
/// Gets the port
///
int Port { get; }
///
/// Gets the origin
///
string Origin { get; }
#if NETSTANDARD1_3_OR_GREATER || NET461
///
/// Gets the connection's client certificate
///
X509Certificate2? ClientCertificate { get; }
#endif
}