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