mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-01-16 15:16:53 +01:00
* 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
225 lines
11 KiB
C#
225 lines
11 KiB
C#
// Copyright © WireMock.Net
|
|
|
|
using JsonConverter.Abstractions;
|
|
using WireMock.Net.Extensions.Routing.Models;
|
|
|
|
namespace WireMock.Net.Extensions.Routing.Extensions;
|
|
|
|
/// <summary>
|
|
/// Provides extension methods for mapping HTTP routes to handlers in <see cref="WireMockRouter"/>.
|
|
/// </summary>
|
|
public static class WireMockRouterExtensions
|
|
{
|
|
/// <summary>
|
|
/// Maps a GET request to a synchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapGet(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, object?> requestHandler) =>
|
|
source.Map(HttpMethod.Get.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a GET request to an asynchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapGet(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, Task<object?>> requestHandler) =>
|
|
source.Map(HttpMethod.Get.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a POST request to a synchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPost(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, object?> requestHandler) =>
|
|
source.Map(HttpMethod.Post.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a POST request to an asynchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPost(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, Task<object?>> requestHandler) =>
|
|
source.Map(HttpMethod.Post.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a POST request to a synchronous request handler with a typed body.
|
|
/// </summary>
|
|
/// <typeparam name="TRequest">The type of the request body.</typeparam>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <param name="jsonConverter">The <see cref="IJsonConverter"/> [optional]. Default value is NewtonsoftJsonConverter.</param>
|
|
/// <param name="jsonOptions">The <see cref="JsonConverterOptions"/> [optional].</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPost<TRequest>(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo<TRequest>, object?> requestHandler,
|
|
IJsonConverter? jsonConverter = null,
|
|
JsonConverterOptions? jsonOptions = null) =>
|
|
source.Map(HttpMethod.Post.Method, pattern, requestHandler, jsonConverter, jsonOptions);
|
|
|
|
/// <summary>
|
|
/// Maps a POST request to an asynchronous request handler with a typed body.
|
|
/// </summary>
|
|
/// <typeparam name="TRequest">The type of the request body.</typeparam>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <param name="jsonConverter">The <see cref="IJsonConverter"/> [optional]. Default value is NewtonsoftJsonConverter.</param>
|
|
/// <param name="jsonOptions">The <see cref="JsonConverterOptions"/> [optional].</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPost<TRequest>(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo<TRequest>, Task<object?>> requestHandler,
|
|
IJsonConverter? jsonConverter = null,
|
|
JsonConverterOptions? jsonOptions = null) =>
|
|
source.Map(HttpMethod.Post.Method, pattern, requestHandler, jsonConverter, jsonOptions);
|
|
|
|
/// <summary>
|
|
/// Maps a PUT request to a synchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPut(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, object?> requestHandler) =>
|
|
source.Map(HttpMethod.Put.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a PUT request to an asynchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPut(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, Task<object?>> requestHandler) =>
|
|
source.Map(HttpMethod.Put.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a PUT request to a synchronous request handler with a typed body.
|
|
/// </summary>
|
|
/// <typeparam name="TRequest">The type of the request body.</typeparam>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <param name="jsonConverter">The <see cref="IJsonConverter"/> [optional]. Default value is NewtonsoftJsonConverter.</param>
|
|
/// <param name="jsonOptions">The <see cref="JsonConverterOptions"/> [optional].</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPut<TRequest>(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo<TRequest>, object?> requestHandler,
|
|
IJsonConverter? jsonConverter = null,
|
|
JsonConverterOptions? jsonOptions = null) =>
|
|
source.Map(HttpMethod.Put.Method, pattern, requestHandler, jsonConverter, jsonOptions);
|
|
|
|
/// <summary>
|
|
/// Maps a PUT request to an asynchronous request handler with a typed body.
|
|
/// </summary>
|
|
/// <typeparam name="TRequest">The type of the request body.</typeparam>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <param name="jsonConverter">The <see cref="IJsonConverter"/> [optional]. Default value is NewtonsoftJsonConverter.</param>
|
|
/// <param name="jsonOptions">The <see cref="JsonConverterOptions"/> [optional].</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapPut<TRequest>(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo<TRequest>, Task<object?>> requestHandler,
|
|
IJsonConverter? jsonConverter = null,
|
|
JsonConverterOptions? jsonOptions = null) =>
|
|
source.Map(HttpMethod.Put.Method, pattern, requestHandler, jsonConverter, jsonOptions);
|
|
|
|
/// <summary>
|
|
/// Maps a DELETE request to a synchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapDelete(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, object?> requestHandler) =>
|
|
source.Map(HttpMethod.Delete.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a DELETE request to an asynchronous request handler.
|
|
/// </summary>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapDelete(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo, Task<object?>> requestHandler) =>
|
|
source.Map(HttpMethod.Delete.Method, pattern, requestHandler);
|
|
|
|
/// <summary>
|
|
/// Maps a DELETE request to a synchronous request handler with a typed body.
|
|
/// </summary>
|
|
/// <typeparam name="TRequest">The type of the request body.</typeparam>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The request handler function.</param>
|
|
/// <param name="jsonConverter">The <see cref="IJsonConverter"/> [optional]. Default value is NewtonsoftJsonConverter.</param>
|
|
/// <param name="jsonOptions">The <see cref="JsonConverterOptions"/> [optional].</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapDelete<TRequest>(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo<TRequest>, object?> requestHandler,
|
|
IJsonConverter? jsonConverter = null,
|
|
JsonConverterOptions? jsonOptions = null) =>
|
|
source.Map(HttpMethod.Delete.Method, pattern, requestHandler, jsonConverter, jsonOptions);
|
|
|
|
/// <summary>
|
|
/// Maps a DELETE request to an asynchronous request handler with a typed body.
|
|
/// </summary>
|
|
/// <typeparam name="TRequest">The type of the request body.</typeparam>
|
|
/// <param name="source">The router to extend.</param>
|
|
/// <param name="pattern">The route pattern.</param>
|
|
/// <param name="requestHandler">The asynchronous request handler function.</param>
|
|
/// <param name="jsonConverter">The <see cref="IJsonConverter"/> [optional]. Default value is NewtonsoftJsonConverter.</param>
|
|
/// <param name="jsonOptions">The <see cref="JsonConverterOptions"/> [optional].</param>
|
|
/// <returns>The current <see cref="WireMockRouter"/> instance.</returns>
|
|
public static WireMockRouter MapDelete<TRequest>(
|
|
this WireMockRouter source,
|
|
string pattern,
|
|
Func<WireMockRequestInfo<TRequest>, Task<object?>> requestHandler,
|
|
IJsonConverter? jsonConverter = null,
|
|
JsonConverterOptions? jsonOptions = null) =>
|
|
source.Map(HttpMethod.Delete.Method, pattern, requestHandler, jsonConverter, jsonOptions);
|
|
}
|