mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-11-13 12:23:42 +01:00
- Add WireMockServerSettings.ScribanRegistrationCallback (Action<object, IFileSystemHandler>?) so code-configured servers can add functions, objects or variables to Scriban and Scriban-DotLiquid templates. - Pass the settings to ScribanContextFactory, which invokes the callback with a new ScriptObject per transformer context. - Push the custom globals beneath the template model in ScribanContext so request, response, mapping and data take precedence; keep the original Template.Render call when no callback is configured. - Add the strongly typed WithScribanRegistration extension method. - Add a Scriban example to the .NET 8 console app. - Make the proxy tests use a local target server instead of www.google.com, and skip the IPv6 loopback test when the OS has no IPv6 support. Co-authored-by: Mattias <13809209+Quattordici@users.noreply.github.com>
41 lines
1.6 KiB
C#
41 lines
1.6 KiB
C#
// Copyright © WireMock.Net
|
|
|
|
using JetBrains.Annotations;
|
|
using Scriban.Runtime;
|
|
using Stef.Validation;
|
|
using WireMock.Handlers;
|
|
|
|
namespace WireMock.Settings;
|
|
|
|
/// <summary>
|
|
/// Extension methods for <see cref="WireMockServerSettings"/>.
|
|
/// </summary>
|
|
public static class WireMockServerSettingsExtensions
|
|
{
|
|
/// <summary>
|
|
/// Adds a strongly typed Scriban registration to <see cref="WireMockServerSettings.ScribanRegistrationCallback"/>.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Members added to the <see cref="ScriptObject"/> are available as globals in Scriban and Scriban-DotLiquid templates.
|
|
/// When a callback is already configured, it is kept and invoked before <paramref name="registrationCallback"/>.
|
|
/// </remarks>
|
|
/// <param name="settings">The settings.</param>
|
|
/// <param name="registrationCallback">The action which registers functions, objects or variables on the <see cref="ScriptObject"/>.</param>
|
|
/// <returns>The same <see cref="WireMockServerSettings"/> instance.</returns>
|
|
[PublicAPI]
|
|
public static WireMockServerSettings WithScribanRegistration(this WireMockServerSettings settings, Action<ScriptObject, IFileSystemHandler> registrationCallback)
|
|
{
|
|
Guard.NotNull(settings);
|
|
Guard.NotNull(registrationCallback);
|
|
|
|
var existingCallback = settings.ScribanRegistrationCallback;
|
|
settings.ScribanRegistrationCallback = (scriptObject, fileSystemHandler) =>
|
|
{
|
|
existingCallback?.Invoke(scriptObject, fileSystemHandler);
|
|
registrationCallback((ScriptObject)scriptObject, fileSystemHandler);
|
|
};
|
|
|
|
return settings;
|
|
}
|
|
}
|