Files
Umbraco-CMS/src/Umbraco.Web/HttpRequestExtensions.cs
Shannon c3736ce7ab Merge remote-tracking branch 'origin/dev-v7' into temp8
# Conflicts:
#	.github/README.md
#	build.bat
#	src/Umbraco.Core/Migrations/Expressions/Alter/Table/AlterTableBuilder.cs
#	src/Umbraco.Core/Migrations/Expressions/Create/Column/CreateColumnBuilder.cs
#	src/Umbraco.Core/Migrations/Expressions/Create/Index/CreateIndexBuilder.cs
#	src/Umbraco.Core/Migrations/Expressions/Create/Table/CreateTableBuilder.cs
#	src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DefinitionFactory.cs
#	src/Umbraco.Core/Persistence/DatabaseModelDefinitions/IndexDefinition.cs
#	src/Umbraco.Core/Persistence/Factories/MediaFactory.cs
#	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Column/AlterColumnBuilder.cs
#	src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/UserRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
#	src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs
#	src/Umbraco.Core/Services/EntityService.cs
#	src/Umbraco.Core/Services/IMediaService.cs
#	src/Umbraco.Core/Services/MediaService.cs
#	src/Umbraco.Core/Services/NotificationService.cs
#	src/Umbraco.Web.UI.Client/bower.json
#	src/Umbraco.Web.UI.Client/src/common/directives/components/imaging/umbimagegravity.directive.js
#	src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtreeitem.directive.js
#	src/Umbraco.Web.UI.Client/src/common/directives/validation/valtab.directive.js
#	src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/mediatype.resource.js
#	src/Umbraco.Web.UI.Client/src/controllers/navigation.controller.js
#	src/Umbraco.Web.UI.Client/src/less/main.less
#	src/Umbraco.Web.UI.Client/src/less/panel.less
#	src/Umbraco.Web.UI.Client/src/less/property-editors.less
#	src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.html
#	src/Umbraco.Web.UI.Client/src/views/components/imaging/umb-image-gravity.html
#	src/Umbraco.Web.UI.Client/src/views/content/copy.html
#	src/Umbraco.Web.UI.Client/src/views/content/emptyrecyclebin.html
#	src/Umbraco.Web.UI.Client/src/views/content/move.html
#	src/Umbraco.Web.UI.Client/src/views/dashboard/settings/settingsdashboardintro.html
#	src/Umbraco.Web.UI.Client/src/views/datatypes/move.html
#	src/Umbraco.Web.UI.Client/src/views/documenttypes/copy.html
#	src/Umbraco.Web.UI.Client/src/views/documenttypes/create.html
#	src/Umbraco.Web.UI.Client/src/views/documenttypes/move.html
#	src/Umbraco.Web.UI.Client/src/views/documenttypes/views/templates/templates.controller.js
#	src/Umbraco.Web.UI.Client/src/views/documenttypes/views/templates/templates.html
#	src/Umbraco.Web.UI.Client/src/views/media/move.html
#	src/Umbraco.Web.UI.Client/src/views/mediatypes/copy.html
#	src/Umbraco.Web.UI.Client/src/views/mediatypes/create.html
#	src/Umbraco.Web.UI.Client/src/views/mediatypes/move.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.prevalues.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/radiobuttons/radiobuttons.html
#	src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
#	src/Umbraco.Web.UI/Umbraco/config/lang/da.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/fr.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/nl.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/pl.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/ru.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/sv.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/zh.xml
#	src/Umbraco.Web.UI/Umbraco/developer/Macros/editMacro.aspx
#	src/Umbraco.Web.UI/Umbraco/dialogs/ChangeDocType.aspx
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/es.xml
#	src/Umbraco.Web.UI/umbraco/dialogs/editMacro.aspx
#	src/Umbraco.Web/Controllers/UmbLoginController.cs
#	src/Umbraco.Web/Editors/ContentControllerBase.cs
#	src/Umbraco.Web/Editors/ContentTypeController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
#	src/Umbraco.Web/Editors/PasswordChanger.cs
#	src/Umbraco.Web/HttpRequestExtensions.cs
#	src/Umbraco.Web/Models/ContentEditing/Tab.cs
#	src/Umbraco.Web/PropertyEditors/ImageCropperPropertyEditor.cs
#	src/Umbraco.Web/Templates/TemplateRenderer.cs
#	src/Umbraco.Web/Trees/ApplicationTreeController.cs
#	src/Umbraco.Web/Trees/ContentTreeController.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/Trees/MediaTreeController.cs
#	src/Umbraco.Web/_Legacy/Controls/TabView.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/editXslt.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/settings/editLanguage.aspx.cs
#	src/umbraco.cms/Actions/Action.cs
#	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2018-11-19 15:32:26 +11:00

85 lines
3.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using Umbraco.Core;
namespace Umbraco.Web
{
/// <summary>
/// Extension methods for the HttpRequest and HttpRequestBase objects
/// </summary>
public static class HttpRequestExtensions
{
/// <summary>
/// Extracts the value from the query string and cleans it to prevent xss attacks.
/// </summary>
/// <param name="request"></param>
/// <param name="key"></param>
/// <param name="valueIfNotFound"></param>
/// <returns></returns>
public static string CleanForXss(this HttpRequest request, string key, string valueIfNotFound = "")
{
var item = request.GetItemAsString(key, valueIfNotFound);
return item.CleanForXss();
}
/// <summary>
/// Safely get a request item as string, if the item does not exist, an empty string is returned.
/// </summary>
/// <param name="request"></param>
/// <param name="key"></param>
/// <param name="valueIfNotFound">The value to return if the key is not found in the collection</param>
/// <returns></returns>
public static string GetItemAsString(this HttpRequest request, string key, string valueIfNotFound = "")
{
return new HttpRequestWrapper(request).GetItemAsString(key, valueIfNotFound);
}
/// <summary>
/// Safely get a request item as string, if the item does not exist, an empty string is returned.
/// </summary>
/// <param name="request"></param>
/// <param name="key"></param>
/// <param name="valueIfNotFound">The value to return if the key is not found in the collection</param>
/// <returns></returns>
public static string GetItemAsString(this HttpRequestBase request, string key, string valueIfNotFound = "")
{
var val = request[key];
return !val.IsNullOrWhiteSpace() ? val : valueIfNotFound;
}
/// <summary>
/// Safely get the item from the query string and convert it to type 'T', otherwise will return default(T).
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="request"></param>
/// <param name="key"></param>
/// <returns></returns>
public static T GetItemAs<T>(this HttpRequestBase request, string key)
{
var val = request[key];
var whitespaceCheck = !val.IsNullOrWhiteSpace() ? val : string.Empty;
if (whitespaceCheck.IsNullOrWhiteSpace())
return (T) typeof (T).GetDefaultValue();
var attempt = val.TryConvertTo<T>();
if (attempt.Success)
return attempt.Result;
return (T)typeof(T).GetDefaultValue();
}
/// <summary>
/// Safely get the item from the query string and convert it to type 'T', otherwise will return default(T).
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="request"></param>
/// <param name="key"></param>
/// <returns></returns>
public static T GetItemAs<T>(this HttpRequest request, string key)
{
return new HttpRequestWrapper(request).GetItemAs<T>(key);
}
}
}