mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-21 00:28:59 +01:00
* Update aspire to 13.1 (examples + code) Allows usage of aspire CLI which is very useful for dev in codespaces (for my next PR). * Add OTEL support * Initial PR feedback * PR feedback * PR feedback * PR feedback * Cleanup. * Cleanup * Fix * Fix * Rename stuff around to be more accurate * PR feedback * Update WireMock.Net.OpenTelemetry.csproj Update <Authors> * PR feedback parser * PR feedback package versions * Status code feedback. * Update preprocessor directives to to Activity Tracing instead of OpenTelemetry. Is more descriptive. * Add tests * Improve tests --------- Co-authored-by: Stef Heyenrath <Stef.Heyenrath@gmail.com>
73 lines
3.4 KiB
C#
73 lines
3.4 KiB
C#
// Copyright © WireMock.Net
|
|
|
|
using System;
|
|
using Stef.Validation;
|
|
using WireMock.Owin.ActivityTracing;
|
|
using WireMock.Settings;
|
|
|
|
namespace WireMock.Owin;
|
|
|
|
internal static class WireMockMiddlewareOptionsHelper
|
|
{
|
|
public static IWireMockMiddlewareOptions InitFromSettings(
|
|
WireMockServerSettings settings,
|
|
IWireMockMiddlewareOptions? options = null,
|
|
Action<IWireMockMiddlewareOptions>? postConfigure = null
|
|
)
|
|
{
|
|
Guard.NotNull(settings);
|
|
|
|
options ??= new WireMockMiddlewareOptions();
|
|
|
|
options.AllowBodyForAllHttpMethods = settings.AllowBodyForAllHttpMethods;
|
|
options.AllowOnlyDefinedHttpStatusCodeInResponse = settings.AllowOnlyDefinedHttpStatusCodeInResponse;
|
|
options.AllowPartialMapping = settings.AllowPartialMapping;
|
|
options.DisableJsonBodyParsing = settings.DisableJsonBodyParsing;
|
|
options.DisableRequestBodyDecompressing = settings.DisableRequestBodyDecompressing;
|
|
options.DoNotSaveDynamicResponseInLogEntry = settings.DoNotSaveDynamicResponseInLogEntry;
|
|
options.FileSystemHandler = settings.FileSystemHandler;
|
|
options.HandleRequestsSynchronously = settings.HandleRequestsSynchronously;
|
|
options.Logger = settings.Logger;
|
|
options.MaxRequestLogCount = settings.MaxRequestLogCount;
|
|
options.PostWireMockMiddlewareInit = settings.PostWireMockMiddlewareInit;
|
|
options.PreWireMockMiddlewareInit = settings.PreWireMockMiddlewareInit;
|
|
options.QueryParameterMultipleValueSupport = settings.QueryParameterMultipleValueSupport;
|
|
options.RequestLogExpirationDuration = settings.RequestLogExpirationDuration;
|
|
options.SaveUnmatchedRequests = settings.SaveUnmatchedRequests;
|
|
|
|
// Validate and configure activity tracing
|
|
ActivityTracingValidator.ValidateActivityApiPresence(settings);
|
|
#if ACTIVITY_TRACING_SUPPORTED
|
|
if (settings.ActivityTracingOptions is not null)
|
|
{
|
|
options.ActivityTracingOptions = new Owin.ActivityTracing.ActivityTracingOptions
|
|
{
|
|
ExcludeAdminRequests = settings.ActivityTracingOptions.ExcludeAdminRequests,
|
|
RecordRequestBody = settings.ActivityTracingOptions.RecordRequestBody,
|
|
RecordResponseBody = settings.ActivityTracingOptions.RecordResponseBody,
|
|
RecordMatchDetails = settings.ActivityTracingOptions.RecordMatchDetails
|
|
};
|
|
}
|
|
#endif
|
|
#if USE_ASPNETCORE
|
|
options.AdditionalServiceRegistration = settings.AdditionalServiceRegistration;
|
|
options.CorsPolicyOptions = settings.CorsPolicyOptions;
|
|
options.ClientCertificateMode = settings.ClientCertificateMode;
|
|
options.AcceptAnyClientCertificate = settings.AcceptAnyClientCertificate;
|
|
#endif
|
|
|
|
if (settings.CustomCertificateDefined)
|
|
{
|
|
options.X509StoreName = settings.CertificateSettings!.X509StoreName;
|
|
options.X509StoreLocation = settings.CertificateSettings.X509StoreLocation;
|
|
options.X509ThumbprintOrSubjectName = settings.CertificateSettings.X509StoreThumbprintOrSubjectName;
|
|
options.X509Certificate = settings.CertificateSettings.X509Certificate;
|
|
options.X509CertificateFilePath = settings.CertificateSettings.X509CertificateFilePath;
|
|
options.X509CertificatePassword = settings.CertificateSettings.X509CertificatePassword;
|
|
}
|
|
|
|
postConfigure?.Invoke(options);
|
|
|
|
return options;
|
|
}
|
|
} |