Migrated tree related classes to .NET core
This commit is contained in:
105
src/Umbraco.Web.Common/Extensions/FormCollectionExtensions.cs
Normal file
105
src/Umbraco.Web.Common/Extensions/FormCollectionExtensions.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Web.Common.Extensions;
|
||||
|
||||
namespace Umbraco.Web.Common.Extensions
|
||||
{
|
||||
public static class FormCollectionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts a dictionary object to a query string representation such as:
|
||||
/// firstname=shannon&lastname=deminick
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="keysToIgnore">Any keys found in this collection will be removed from the output</param>
|
||||
/// <returns></returns>
|
||||
public static string ToQueryString(this FormCollection items, params string[] keysToIgnore)
|
||||
{
|
||||
if (items == null) return "";
|
||||
if (items.Any() == false) return "";
|
||||
|
||||
var builder = new StringBuilder();
|
||||
foreach (var i in items.Where(i => keysToIgnore.InvariantContains(i.Key) == false))
|
||||
builder.Append(string.Format("{0}={1}&", i.Key, i.Value));
|
||||
return builder.ToString().TrimEnd('&');
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the FormCollection to a dictionary
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <returns></returns>
|
||||
public static IDictionary<string, object> ToDictionary(this FormCollection items)
|
||||
{
|
||||
return items.ToDictionary(x => x.Key, x => (object)x.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the value of a mandatory item in the FormCollection
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetRequiredString(this FormCollection items, string key)
|
||||
{
|
||||
if (items.HasKey(key) == false)
|
||||
throw new ArgumentNullException("The " + key + " query string parameter was not found but is required");
|
||||
return items.Single(x => x.Key.InvariantEquals(key)).Value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the collection contains the key
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static bool HasKey(this FormCollection items, string key)
|
||||
{
|
||||
return items.Any(x => x.Key.InvariantEquals(key));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the object based in the collection based on it's key. This does this with a conversion so if it doesn't convert a null object is returned.
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static T GetValue<T>(this FormCollection items, string key)
|
||||
{
|
||||
if (items.TryGetValue(key, out var val) == false || string.IsNullOrEmpty(val))
|
||||
{
|
||||
return default;
|
||||
}
|
||||
|
||||
var converted = val.TryConvertTo<T>();
|
||||
return converted.Success
|
||||
? converted.Result
|
||||
: default;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the object based in the collection based on it's key. This does this with a conversion so if it doesn't convert or the query string is no there an exception is thrown
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static T GetRequiredValue<T>(this FormCollection items, string key)
|
||||
{
|
||||
if (items.TryGetValue(key, out var val) == false || string.IsNullOrEmpty(val))
|
||||
{
|
||||
throw new InvalidOperationException($"The required query string parameter {key} is missing");
|
||||
}
|
||||
|
||||
var converted = val.TryConvertTo<T>();
|
||||
return converted.Success
|
||||
? converted.Result
|
||||
: throw new InvalidOperationException($"The required query string parameter {key} cannot be converted to type {typeof(T)}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user