summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI.Web/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'src/StardewModdingAPI.Web/Framework')
-rw-r--r--src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinder.cs58
-rw-r--r--src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinderProvider.cs27
-rw-r--r--src/StardewModdingAPI.Web/Framework/ModRepositories/NexusRepository.cs6
3 files changed, 3 insertions, 88 deletions
diff --git a/src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinder.cs b/src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinder.cs
deleted file mode 100644
index 119b18e6..00000000
--- a/src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinder.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Reflection;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Mvc.ModelBinding;
-
-namespace StardewModdingAPI.Web.Framework
-{
- /// <summary>Maps comma-delimited values to an <see cref="System.Collections.Generic.IEnumerable{T}"/> parameter.</summary>
- /// <remarks>Derived from <a href="https://stackoverflow.com/a/43655986/262123" />.</remarks>
- public class CommaDelimitedModelBinder : IModelBinder
- {
- /*********
- ** Public methods
- *********/
- /// <summary>Attempts to bind a model.</summary>
- /// <param name="bindingContext">The model binding context.</param>
- public Task BindModelAsync(ModelBindingContext bindingContext)
- {
- // validate
- if (bindingContext == null)
- throw new ArgumentNullException(nameof(bindingContext));
-
- // extract values
- string modelName = bindingContext.ModelName;
- ValueProviderResult valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);
- string[] values = valueProviderResult
- .ToString()
- .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
- Type elementType = bindingContext.ModelType.GetTypeInfo().GenericTypeArguments[0];
- if (values.Length == 0)
- {
- bindingContext.Result = ModelBindingResult.Success(Array.CreateInstance(elementType, 0));
- return Task.CompletedTask;
- }
-
- // map values
- TypeConverter converter = TypeDescriptor.GetConverter(elementType);
- Array typedArray = Array.CreateInstance(elementType, values.Length);
- try
- {
- for (int i = 0; i < values.Length; ++i)
- {
- string value = values[i];
- object convertedValue = converter.ConvertFromString(value);
- typedArray.SetValue(convertedValue, i);
- }
- }
- catch (Exception exception)
- {
- bindingContext.ModelState.TryAddModelError(modelName, exception, bindingContext.ModelMetadata);
- }
-
- bindingContext.Result = ModelBindingResult.Success(typedArray);
- return Task.CompletedTask;
- }
- }
-}
diff --git a/src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinderProvider.cs b/src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinderProvider.cs
deleted file mode 100644
index 1b3f0073..00000000
--- a/src/StardewModdingAPI.Web/Framework/CommaDelimitedModelBinderProvider.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using Microsoft.AspNetCore.Mvc.ModelBinding;
-
-namespace StardewModdingAPI.Web.Framework
-{
- /// <summary>Provides comma-delimited model binds for mapping parameters.</summary>
- /// <remarks>Derived from <a href="https://stackoverflow.com/a/43655986/262123" />.</remarks>
- public class CommaDelimitedModelBinderProvider : IModelBinderProvider
- {
- /*********
- ** Public methods
- *********/
- /// <summary>Creates a model binder based on the given context.</summary>
- /// <param name="context">The model binding context.</param>
- public IModelBinder GetBinder(ModelBinderProviderContext context)
- {
- // validate
- if (context == null)
- throw new ArgumentNullException(nameof(context));
-
- // get model binder
- return context.Metadata.IsEnumerableType && !context.Metadata.ElementMetadata.IsComplexType
- ? new CommaDelimitedModelBinder()
- : null;
- }
- }
-}
diff --git a/src/StardewModdingAPI.Web/Framework/ModRepositories/NexusRepository.cs b/src/StardewModdingAPI.Web/Framework/ModRepositories/NexusRepository.cs
index 7e3ce4b6..02c2939a 100644
--- a/src/StardewModdingAPI.Web/Framework/ModRepositories/NexusRepository.cs
+++ b/src/StardewModdingAPI.Web/Framework/ModRepositories/NexusRepository.cs
@@ -44,12 +44,12 @@ namespace StardewModdingAPI.Web.Framework.ModRepositories
.As<NexusResponseModel>();
return response != null
- ? new ModInfoModel($"{this.VendorKey}:{id}", response.Name, response.Version, response.Url)
- : new ModInfoModel($"{this.VendorKey}:{id}", "Found no mod with this ID.");
+ ? new ModInfoModel(response.Name, response.Version, response.Url)
+ : new ModInfoModel("Found no mod with this ID.");
}
catch (Exception ex)
{
- return new ModInfoModel($"{this.VendorKey}:{id}", ex.ToString());
+ return new ModInfoModel(ex.ToString());
}
}