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);
}
}
}