// 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;
using System.Collections.Generic;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Features;
namespace Microsoft.AspNet.Builder
{
///
/// Defines a class that provides the mechanisms to configure an application's request pipeline.
///
public interface IApplicationBuilder
{
///
/// Gets or sets the that provides access to the application's service container.
///
IServiceProvider ApplicationServices { get; set; }
///
/// Gets the set of HTTP features the application's server provides.
///
IFeatureCollection ServerFeatures { get; }
///
/// Gets a key/value collection that can be used to share data between middleware.
///
IDictionary Properties { get; }
///
/// Adds a middleware delegate to the application's request pipeline.
///
/// The middleware delgate.
/// The .
IApplicationBuilder Use(Func middleware);
///
/// Creates a new that shares the of this
/// .
///
/// The new .
IApplicationBuilder New();
///
/// Builds the delegate used by this application to process HTTP requests.
///
/// The request handling delegate.
RequestDelegate Build();
}
}