btcpayserver-plugin-builder/PluginBuilder/ModelBinders/PluginVersionModelBinder.cs
2025-04-24 22:54:41 -05:00

26 lines
786 B
C#

using Microsoft.AspNetCore.Mvc.ModelBinding;
namespace PluginBuilder.ModelBinders;
public class PluginVersionModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var val = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var v = val.FirstValue;
if (v is null)
return Task.CompletedTask;
if (PluginVersion.TryParse(v, out var version))
{
bindingContext.Result = ModelBindingResult.Success(version);
}
else
{
bindingContext.Result = ModelBindingResult.Failed();
bindingContext.ModelState.AddModelError(bindingContext.ModelName, "Invalid plugin version");
}
return Task.CompletedTask;
}
}