From 40531db1aea0af90777c42275ec1cb55bb587030 Mon Sep 17 00:00:00 2001 From: crobibero Date: Sat, 21 Nov 2020 11:58:35 -0700 Subject: Add NullableEnumModelBinder and NullableEnumModelBinderProvider --- .../NullableEnumModelBinderProvider.cs | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Jellyfin.Api/ModelBinders/NullableEnumModelBinderProvider.cs (limited to 'Jellyfin.Api/ModelBinders/NullableEnumModelBinderProvider.cs') diff --git a/Jellyfin.Api/ModelBinders/NullableEnumModelBinderProvider.cs b/Jellyfin.Api/ModelBinders/NullableEnumModelBinderProvider.cs new file mode 100644 index 0000000000..bc12ad05da --- /dev/null +++ b/Jellyfin.Api/ModelBinders/NullableEnumModelBinderProvider.cs @@ -0,0 +1,27 @@ +using System; +using Microsoft.AspNetCore.Mvc.ModelBinding; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.Api.ModelBinders +{ + /// + /// Nullable enum model binder provider. + /// + public class NullableEnumModelBinderProvider : IModelBinderProvider + { + /// + public IModelBinder? GetBinder(ModelBinderProviderContext context) + { + var nullableType = Nullable.GetUnderlyingType(context.Metadata.ModelType); + if (nullableType == null || !nullableType.IsEnum) + { + // Type isn't nullable or isn't an enum. + return null; + } + + var logger = context.Services.GetRequiredService>(); + return new NullableEnumModelBinder(logger); + } + } +} \ No newline at end of file -- cgit v1.2.3