diff --git a/src/WireMock.Net.Abstractions/Admin/Requests/LogRequestModel.cs b/src/WireMock.Net.Abstractions/Admin/Requests/LogRequestModel.cs
index 22d58b17..4dd95732 100644
--- a/src/WireMock.Net.Abstractions/Admin/Requests/LogRequestModel.cs
+++ b/src/WireMock.Net.Abstractions/Admin/Requests/LogRequestModel.cs
@@ -18,7 +18,7 @@ public class LogRequestModel
///
/// The DateTime.
///
- public DateTime DateTime { get; set; }
+ public required DateTime DateTime { get; set; }
///
/// The Path.
@@ -58,7 +58,7 @@ public class LogRequestModel
///
/// The HTTP Version.
///
- public string HttpVersion { get; set; } = null!;
+ public string? HttpVersion { get; set; }
///
/// The Headers.
diff --git a/src/WireMock.Net.Abstractions/Admin/Requests/LogResponseModel.cs b/src/WireMock.Net.Abstractions/Admin/Requests/LogResponseModel.cs
index 7f2b3b56..168d6318 100644
--- a/src/WireMock.Net.Abstractions/Admin/Requests/LogResponseModel.cs
+++ b/src/WireMock.Net.Abstractions/Admin/Requests/LogResponseModel.cs
@@ -1,6 +1,5 @@
// Copyright © WireMock.Net
-using System.Collections.Generic;
using WireMock.Admin.Mappings;
using WireMock.Types;
@@ -80,4 +79,14 @@ public class LogResponseModel
/// Gets or sets the Fault percentage.
///
public double? FaultPercentage { get; set; }
+
+ ///
+ /// The DateTime.
+ ///
+ public required DateTime DateTime { get; set; }
+
+ ///
+ /// The method.
+ ///
+ public string? Method { get; set; }
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Abstractions/IResponseMessage.cs b/src/WireMock.Net.Abstractions/IResponseMessage.cs
index 232100a6..8abf4114 100644
--- a/src/WireMock.Net.Abstractions/IResponseMessage.cs
+++ b/src/WireMock.Net.Abstractions/IResponseMessage.cs
@@ -56,6 +56,11 @@ public interface IResponseMessage
///
DateTime DateTime { get; }
+ ///
+ /// Gets the method.
+ ///
+ string? Method { get; }
+
///
/// Adds the header.
///
diff --git a/src/WireMock.Net.Minimal/Owin/WireMockMiddlewareLogger.cs b/src/WireMock.Net.Minimal/Owin/WireMockMiddlewareLogger.cs
index a5c9d602..6f03c77d 100644
--- a/src/WireMock.Net.Minimal/Owin/WireMockMiddlewareLogger.cs
+++ b/src/WireMock.Net.Minimal/Owin/WireMockMiddlewareLogger.cs
@@ -52,23 +52,23 @@ internal class WireMockMiddlewareLogger(
public void LogLogEntry(LogEntry entry, bool addRequest)
{
- if (entry.RequestMessage != null)
- {
- _options.Logger.DebugRequestResponse(_logEntryMapper.Map(entry), entry.RequestMessage.Path.StartsWith("/__admin/"));
+ _options.Logger.DebugRequestResponse(_logEntryMapper.Map(entry), entry.RequestMessage?.Path.StartsWith("/__admin/") == true);
- // If addRequest is set to true and MaxRequestLogCount is null or does have a value greater than 0, try to add a new request log.
- if (addRequest && _options.MaxRequestLogCount is null or > 0)
- {
- TryAddLogEntry(entry);
- }
+ // If addRequest is set to true and MaxRequestLogCount is null or does have a value greater than 0, try to add a new request log.
+ if (addRequest && _options.MaxRequestLogCount is null or > 0)
+ {
+ TryAddLogEntry(entry);
}
+
// In case MaxRequestLogCount has a value greater than 0, try to delete existing request logs based on the count.
if (_options.MaxRequestLogCount is > 0)
{
- var logEntries = _options.LogEntries.Where(le => le.RequestMessage != null).ToList();
+ var logEntries = _options.LogEntries.ToList();
- foreach (var logEntry in logEntries.OrderBy(le => le.RequestMessage!.DateTime).Take(logEntries.Count - _options.MaxRequestLogCount.Value))
+ foreach (var logEntry in logEntries
+ .OrderBy(le => le.RequestMessage?.DateTime ?? le.ResponseMessage?.DateTime)
+ .Take(logEntries.Count - _options.MaxRequestLogCount.Value))
{
TryRemoveLogEntry(logEntry);
}
@@ -77,10 +77,10 @@ internal class WireMockMiddlewareLogger(
// In case RequestLogExpirationDuration has a value greater than 0, try to delete existing request logs based on the date.
if (_options.RequestLogExpirationDuration is > 0)
{
- var logEntries = _options.LogEntries.Where(le => le.RequestMessage != null).ToList();
+ var logEntries = _options.LogEntries.ToList();
var checkTime = DateTime.UtcNow.AddHours(-_options.RequestLogExpirationDuration.Value);
- foreach (var logEntry in logEntries.Where(le => le.RequestMessage!.DateTime < checkTime))
+ foreach (var logEntry in logEntries.Where(le => le.RequestMessage?.DateTime < checkTime || le.ResponseMessage?.DateTime < checkTime))
{
TryRemoveLogEntry(logEntry);
}
diff --git a/src/WireMock.Net.Minimal/ResponseMessage.cs b/src/WireMock.Net.Minimal/ResponseMessage.cs
index 524e6575..70ae16c1 100644
--- a/src/WireMock.Net.Minimal/ResponseMessage.cs
+++ b/src/WireMock.Net.Minimal/ResponseMessage.cs
@@ -41,6 +41,9 @@ public class ResponseMessage : IResponseMessage
///
public DateTime DateTime { get; set; }
+ ///
+ public string? Method { get; set; }
+
///
public void AddHeader(string name, string value)
{
diff --git a/src/WireMock.Net.Minimal/ResponseProviders/WebSocketResponseProvider.cs b/src/WireMock.Net.Minimal/ResponseProviders/WebSocketResponseProvider.cs
index 8c1c65ce..1a1c7cff 100644
--- a/src/WireMock.Net.Minimal/ResponseProviders/WebSocketResponseProvider.cs
+++ b/src/WireMock.Net.Minimal/ResponseProviders/WebSocketResponseProvider.cs
@@ -565,7 +565,7 @@ internal class WebSocketResponseProvider(WebSocketBuilder builder) : IResponsePr
bodyData = new BodyData
{
BodyAsString = messageType.ToString(),
- DetectedBodyType = BodyType.Bytes
+ DetectedBodyType = BodyType.String
};
}
@@ -595,16 +595,13 @@ internal class WebSocketResponseProvider(WebSocketBuilder builder) : IResponsePr
// Sent message - log as response
responseMessage = new ResponseMessage
{
+ Method = method,
StatusCode = HttpStatusCode.SwitchingProtocols, // WebSocket status
BodyData = bodyData,
DateTime = DateTime.UtcNow
};
}
- // Create a perfect match result
- var requestMatchResult = new RequestMatchResult();
- requestMatchResult.AddScore(typeof(WebSocketMessageDirection), MatchScores.Perfect, null);
-
// Create log entry
var logEntry = new LogEntry
{
@@ -612,8 +609,7 @@ internal class WebSocketResponseProvider(WebSocketBuilder builder) : IResponsePr
RequestMessage = requestMessage,
ResponseMessage = responseMessage,
MappingGuid = context.Mapping.Guid,
- MappingTitle = context.Mapping.Title,
- RequestMatchResult = requestMatchResult
+ MappingTitle = context.Mapping.Title
};
// Enrich activity if present
diff --git a/src/WireMock.Net.Minimal/Serialization/LogEntryMapper.cs b/src/WireMock.Net.Minimal/Serialization/LogEntryMapper.cs
index db942197..01357526 100644
--- a/src/WireMock.Net.Minimal/Serialization/LogEntryMapper.cs
+++ b/src/WireMock.Net.Minimal/Serialization/LogEntryMapper.cs
@@ -71,6 +71,8 @@ internal class LogEntryMapper(IWireMockMiddlewareOptions options)
{
logResponseModel = new LogResponseModel
{
+ DateTime = logEntry.ResponseMessage.DateTime,
+ Method = logEntry.ResponseMessage.Method,
StatusCode = logEntry.ResponseMessage.StatusCode,
Headers = logEntry.ResponseMessage.Headers
};
diff --git a/src/WireMock.Net.Minimal/WebSockets/WireMockWebSocketContext.cs b/src/WireMock.Net.Minimal/WebSockets/WireMockWebSocketContext.cs
index a6fe28e3..3bceae76 100644
--- a/src/WireMock.Net.Minimal/WebSockets/WireMockWebSocketContext.cs
+++ b/src/WireMock.Net.Minimal/WebSockets/WireMockWebSocketContext.cs
@@ -6,7 +6,6 @@ using System.Net.WebSockets;
using System.Text;
using Microsoft.AspNetCore.Http;
using Stef.Validation;
-using WireMock.Extensions;
using WireMock.Logging;
using WireMock.Matchers;
using WireMock.Matchers.Request;
@@ -167,7 +166,7 @@ public class WireMockWebSocketContext : IWebSocketContext
bodyData = new BodyData
{
BodyAsString = messageType.ToString(),
- DetectedBodyType = BodyType.Bytes
+ DetectedBodyType = BodyType.String
};
}
@@ -197,16 +196,13 @@ public class WireMockWebSocketContext : IWebSocketContext
// Sent message - log as response
responseMessage = new ResponseMessage
{
+ Method = method,
StatusCode = HttpStatusCode.SwitchingProtocols, // WebSocket status
BodyData = bodyData,
DateTime = DateTime.UtcNow
};
}
- // Create a perfect match result
- var requestMatchResult = new RequestMatchResult();
- requestMatchResult.AddScore(typeof(WebSocketMessageDirection), MatchScores.Perfect, null);
-
// Create log entry
var logEntry = new LogEntry
{
@@ -214,8 +210,7 @@ public class WireMockWebSocketContext : IWebSocketContext
RequestMessage = requestMessage,
ResponseMessage = responseMessage,
MappingGuid = Mapping.Guid,
- MappingTitle = Mapping.Title,
- RequestMatchResult = requestMatchResult
+ MappingTitle = Mapping.Title
};
// Enrich activity if present