// 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> requestHandler, IJsonConverter? jsonConverter = null, JsonConverterOptions? jsonOptions = null) => source.Map(HttpMethod.Post.Method, pattern, requestHandler, jsonConverter, jsonOptions); /// /// Maps a PUT request to a synchronous request handler. /// /// The router to extend. /// The route pattern. /// The request handler function. /// The current instance. public static WireMockRouter MapPut( this WireMockRouter source, string pattern, Func requestHandler) => source.Map(HttpMethod.Put.Method, pattern, requestHandler); /// /// Maps a PUT request to an asynchronous request handler. /// /// The router to extend. /// The route pattern. /// The asynchronous request handler function. /// The current instance. public static WireMockRouter MapPut( this WireMockRouter source, string pattern, Func> requestHandler) => source.Map(HttpMethod.Put.Method, pattern, requestHandler); /// /// Maps a PUT 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 MapPut( this WireMockRouter source, string pattern, Func, object?> requestHandler, IJsonConverter? jsonConverter = null, JsonConverterOptions? jsonOptions = null) => source.Map(HttpMethod.Put.Method, pattern, requestHandler, jsonConverter, jsonOptions); /// /// Maps a PUT 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 MapPut( this WireMockRouter source, string pattern, Func, Task> requestHandler, IJsonConverter? jsonConverter = null, JsonConverterOptions? jsonOptions = null) => source.Map(HttpMethod.Put.Method, pattern, requestHandler, jsonConverter, jsonOptions); /// /// Maps a DELETE request to a synchronous request handler. /// /// The router to extend. /// The route pattern. /// The request handler function. /// The current instance. public static WireMockRouter MapDelete( this WireMockRouter source, string pattern, Func requestHandler) => source.Map(HttpMethod.Delete.Method, pattern, requestHandler); /// /// Maps a DELETE request to an asynchronous request handler. /// /// The router to extend. /// The route pattern. /// The asynchronous request handler function. /// The current instance. public static WireMockRouter MapDelete( this WireMockRouter source, string pattern, Func> requestHandler) => source.Map(HttpMethod.Delete.Method, pattern, requestHandler); /// /// Maps a DELETE 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 MapDelete( this WireMockRouter source, string pattern, Func, object?> requestHandler, IJsonConverter? jsonConverter = null, JsonConverterOptions? jsonOptions = null) => source.Map(HttpMethod.Delete.Method, pattern, requestHandler, jsonConverter, jsonOptions); /// /// Maps a DELETE 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 MapDelete( this WireMockRouter source, string pattern, Func, Task> requestHandler, IJsonConverter? jsonConverter = null, JsonConverterOptions? jsonOptions = null) => source.Map(HttpMethod.Delete.Method, pattern, requestHandler, jsonConverter, jsonOptions); }