// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Net.Http;
using System.Web.Http.Routing;
namespace System.Web.Http.Controllers
{
///
/// Contains information for a single HTTP operation.
///
public class HttpControllerContext
{
private HttpRequestContext _requestContext;
private HttpRequestMessage _request;
private HttpControllerDescriptor _controllerDescriptor;
private IHttpController _controller;
/// Initializes a new instance of the class.
/// The request context.
/// The HTTP request.
/// The controller descriptor.
/// The controller.
public HttpControllerContext(HttpRequestContext requestContext, HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor, IHttpController controller)
{
if (requestContext == null)
{
throw Error.ArgumentNull("requestContext");
}
if (request == null)
{
throw Error.ArgumentNull("request");
}
if (controllerDescriptor == null)
{
throw Error.ArgumentNull("controllerDescriptor");
}
if (controller == null)
{
throw Error.ArgumentNull("controller");
}
_requestContext = requestContext;
_request = request;
_controllerDescriptor = controllerDescriptor;
_controller = controller;
}
public HttpControllerContext(HttpConfiguration configuration, IHttpRouteData routeData,
HttpRequestMessage request)
{
if (configuration == null)
{
throw Error.ArgumentNull("configuration");
}
if (routeData == null)
{
throw Error.ArgumentNull("routeData");
}
if (request == null)
{
throw Error.ArgumentNull("request");
}
_requestContext = new HttpRequestContext
{
Configuration = configuration,
RouteData = routeData
};
_request = request;
}
///
/// Initializes a new instance of the class.
///
/// The default constructor is intended for use by unit testing only.
public HttpControllerContext()
{
// Note: This constructor is also used by a FormDataCollectionExtensions where we attempt to create a
// controller context with incomplete request context.
_requestContext = new HttpRequestContext();
}
public HttpConfiguration Configuration
{
get
{
return _requestContext.Configuration;
}
set
{
if (value == null)
{
throw Error.PropertyNull();
}
_requestContext.Configuration = value;
}
}
///
/// Gets or sets the controller descriptor.
///
///
/// The controller descriptor.
///
public HttpControllerDescriptor ControllerDescriptor
{
get { return _controllerDescriptor; }
set
{
if (value == null)
{
throw Error.PropertyNull();
}
_controllerDescriptor = value;
}
}
///
/// Gets or sets the HTTP controller.
///
///
/// The HTTP controller.
///
public IHttpController Controller
{
get { return _controller; }
set
{
if (value == null)
{
throw Error.PropertyNull();
}
_controller = value;
}
}
public HttpRequestMessage Request
{
get { return _request; }
set
{
if (value == null)
{
throw Error.PropertyNull();
}
_request = value;
}
}
/// Gets or sets the request context.
public HttpRequestContext RequestContext
{
get { return _requestContext; }
set
{
if (value == null)
{
throw Error.PropertyNull();
}
_requestContext = value;
}
}
public IHttpRouteData RouteData
{
get { return _requestContext.RouteData; }
set
{
if (value == null)
{
throw Error.PropertyNull();
}
_requestContext.RouteData = value;
}
}
}
}