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