mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-28 12:22:14 +01:00
Add new package WireMock.Net.Extensions.Routing which provides minimal-API-style routing for WireMock.Net (#1344)
* Add new package WireMock.Net.Extensions.Routing * Update documentation for WireMock.Net.Extensions.Routing * Cleanup imports * Add header to all source files inside WireMock.Net.Extensions.Routing * Add header to all source files inside WireMock.Net.Extensions.Routing.Tests * Revert unintended changes * Remove redundant build configurations * Remove incorrect links from documentation * Update nuget package references * Revert unintended changes * Migrate to AwesomeAssertions * Remove redundant project reference * Adjust formatting * Migrate to primary constructor * Refactoring: rename delegate parameter * Abstract over JSON converter * Replace WireMock with WireMock.Net in comments * Move local functions to the bottom of the methods
This commit is contained in:
committed by
GitHub
parent
60eb519ae2
commit
be2ea67b89
@@ -0,0 +1,73 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
using System.Collections.Concurrent;
|
||||
using JsonConverter.Abstractions;
|
||||
using WireMock.Net.Extensions.Routing.Delegates;
|
||||
using WireMock.Server;
|
||||
|
||||
namespace WireMock.Net.Extensions.Routing;
|
||||
|
||||
/// <summary>
|
||||
/// Provides a builder for configuring and creating a <see cref="WireMockRouter"/> with middleware and JSON settings.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Initializes a new instance of the <see cref="WireMockServerRouterBuilder"/> class.
|
||||
/// </remarks>
|
||||
/// <param name="server">The WireMock.Net server instance.</param>
|
||||
public sealed class WireMockServerRouterBuilder(WireMockServer server)
|
||||
{
|
||||
private readonly WireMockServer _server = server;
|
||||
|
||||
private readonly ConcurrentQueue<WireMockMiddleware> _middlewareCollection = new();
|
||||
|
||||
private IJsonConverter? _defaultJsonConverter;
|
||||
|
||||
private JsonConverterOptions? _defaultJsonOptions;
|
||||
|
||||
/// <summary>
|
||||
/// Builds a <see cref="WireMockRouter"/> with the configured middleware and JSON settings.
|
||||
/// </summary>
|
||||
/// <returns>The configured <see cref="WireMockRouter"/>.</returns>
|
||||
public WireMockRouter Build() =>
|
||||
new(_server)
|
||||
{
|
||||
MiddlewareCollection = _middlewareCollection,
|
||||
DefaultJsonConverter = _defaultJsonConverter,
|
||||
DefaultJsonOptions = _defaultJsonOptions,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Adds a middleware to the router builder.
|
||||
/// </summary>
|
||||
/// <param name="middleware">The middleware to add.</param>
|
||||
/// <returns>The current <see cref="WireMockServerRouterBuilder"/> instance.</returns>
|
||||
public WireMockServerRouterBuilder Use(WireMockMiddleware middleware)
|
||||
{
|
||||
_middlewareCollection.Enqueue(middleware);
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the default <see cref="IJsonConverter"/>.
|
||||
/// </summary>
|
||||
/// <param name="defaultJsonConverter">the default <see cref="IJsonConverter"/></param>
|
||||
/// <returns>The current <see cref="WireMockServerRouterBuilder"/> instance.</returns>
|
||||
public WireMockServerRouterBuilder WithDefaultJsonConverter(
|
||||
IJsonConverter? defaultJsonConverter)
|
||||
{
|
||||
_defaultJsonConverter = defaultJsonConverter;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the default <see cref="JsonConverterOptions"/> [optional].
|
||||
/// </summary>
|
||||
/// <param name="defaultJsonOptions">the default <see cref="JsonConverterOptions"/> [optional]</param>
|
||||
/// <returns>The current <see cref="WireMockServerRouterBuilder"/> instance.</returns>
|
||||
public WireMockServerRouterBuilder WithDefaultJsonOptions(
|
||||
JsonConverterOptions? defaultJsonOptions)
|
||||
{
|
||||
_defaultJsonOptions = defaultJsonOptions;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user