// Copyright © WireMock.Net
using JsonConverter.Abstractions;
using WireMock.Net.Extensions.Routing.Models;
namespace WireMock.Net.Extensions.Routing.Extensions;
///
/// Provides extension methods for mapping HTTP routes to handlers in .
///
public static class WireMockRouterExtensions
{
///
/// Maps a GET request to a synchronous request handler.
///
/// The router to extend.
/// The route pattern.
/// The request handler function.
/// The current instance.
public static WireMockRouter MapGet(
this WireMockRouter source,
string pattern,
Func requestHandler) =>
source.Map(HttpMethod.Get.Method, pattern, requestHandler);
///
/// Maps a GET request to an asynchronous request handler.
///
/// The router to extend.
/// The route pattern.
/// The asynchronous request handler function.
/// The current instance.
public static WireMockRouter MapGet(
this WireMockRouter source,
string pattern,
Func> requestHandler) =>
source.Map(HttpMethod.Get.Method, pattern, requestHandler);
///
/// Maps a POST request to a synchronous request handler.
///
/// The router to extend.
/// The route pattern.
/// The request handler function.
/// The current instance.
public static WireMockRouter MapPost(
this WireMockRouter source,
string pattern,
Func requestHandler) =>
source.Map(HttpMethod.Post.Method, pattern, requestHandler);
///
/// Maps a POST request to an asynchronous request handler.
///
/// The router to extend.
/// The route pattern.
/// The asynchronous request handler function.
/// The current instance.
public static WireMockRouter MapPost(
this WireMockRouter source,
string pattern,
Func> requestHandler) =>
source.Map(HttpMethod.Post.Method, pattern, requestHandler);
///
/// Maps a POST request to a synchronous request handler with a typed body.
///
/// The type of the request body.
/// The router to extend.
/// The route pattern.
/// The request handler function.
/// The [optional]. Default value is NewtonsoftJsonConverter.
/// The [optional].
/// The current instance.
public static WireMockRouter MapPost(
this WireMockRouter source,
string pattern,
Func, object?> requestHandler,
IJsonConverter? jsonConverter = null,
JsonConverterOptions? jsonOptions = null) =>
source.Map(HttpMethod.Post.Method, pattern, requestHandler, jsonConverter, jsonOptions);
///
/// Maps a POST request to an asynchronous request handler with a typed body.
///
/// The type of the request body.
/// The router to extend.
/// The route pattern.
/// The asynchronous request handler function.
/// The [optional]. Default value is NewtonsoftJsonConverter.
/// The [optional].
/// The current instance.
public static WireMockRouter MapPost(
this WireMockRouter source,
string pattern,
Func, Task