# Microsoft.AspNetCore.Http.Features

``` diff
 {
     namespace Microsoft.AspNetCore.Http.Features {
         public struct FeatureReferences<TCache> {
+            public void Initalize(IFeatureCollection collection);
+            public void Initalize(IFeatureCollection collection, int revision);
         }
+        public enum HttpsCompressionMode {
+            Compress = 2,
+            Default = 0,
+            DoNotCompress = 1,
+        }
+        public interface IHttpRequestTrailersFeature {
+            bool Available { get; }
+            IHeaderDictionary Trailers { get; }
+        }
+        public interface IHttpResetFeature {
+            void Reset(int errorCode);
+        }
+        public interface IHttpResponseBodyFeature {
+            Stream Stream { get; }
+            PipeWriter Writer { get; }
+            Task CompleteAsync();
+            void DisableBuffering();
+            Task SendFileAsync(string path, long offset, long? count, CancellationToken cancellationToken = default(CancellationToken));
+            Task StartAsync(CancellationToken cancellationToken = default(CancellationToken));
+        }
+        public interface IHttpsCompressionFeature {
+            HttpsCompressionMode Mode { get; set; }
+        }
+        public interface IRequestBodyPipeFeature {
+            PipeReader Reader { get; }
+        }
+        public interface IServerVariablesFeature {
+            string this[string variableName] { get; set; }
+        }
     }
     namespace Microsoft.AspNetCore.Http.Features.Authentication {
-        public class AuthenticateContext {
 {
-            public AuthenticateContext(string authenticationScheme);

-            public bool Accepted { get; private set; }

-            public string AuthenticationScheme { get; }

-            public IDictionary<string, object> Description { get; private set; }

-            public Exception Error { get; private set; }

-            public ClaimsPrincipal Principal { get; private set; }

-            public IDictionary<string, string> Properties { get; private set; }

-            public virtual void Authenticated(ClaimsPrincipal principal, IDictionary<string, string> properties, IDictionary<string, object> description);

-            public virtual void Failed(Exception error);

-            public virtual void NotAuthenticated();

-        }
-        public enum ChallengeBehavior {
 {
-            Automatic = 0,

-            Forbidden = 2,

-            Unauthorized = 1,

-        }
-        public class ChallengeContext {
 {
-            public ChallengeContext(string authenticationScheme);

-            public ChallengeContext(string authenticationScheme, IDictionary<string, string> properties, ChallengeBehavior behavior);

-            public bool Accepted { get; private set; }

-            public string AuthenticationScheme { get; }

-            public ChallengeBehavior Behavior { get; }

-            public IDictionary<string, string> Properties { get; }

-            public void Accept();

-        }
-        public class DescribeSchemesContext {
 {
-            public DescribeSchemesContext();

-            public IEnumerable<IDictionary<string, object>> Results { get; }

-            public void Accept(IDictionary<string, object> description);

-        }
-        public interface IAuthenticationHandler {
 {
-            Task AuthenticateAsync(AuthenticateContext context);

-            Task ChallengeAsync(ChallengeContext context);

-            void GetDescriptions(DescribeSchemesContext context);

-            Task SignInAsync(SignInContext context);

-            Task SignOutAsync(SignOutContext context);

-        }
         public interface IHttpAuthenticationFeature {
-            IAuthenticationHandler Handler { get; set; }

         }
-        public class SignInContext {
 {
-            public SignInContext(string authenticationScheme, ClaimsPrincipal principal, IDictionary<string, string> properties);

-            public bool Accepted { get; private set; }

-            public string AuthenticationScheme { get; }

-            public ClaimsPrincipal Principal { get; }

-            public IDictionary<string, string> Properties { get; }

-            public void Accept();

-        }
-        public class SignOutContext {
 {
-            public SignOutContext(string authenticationScheme, IDictionary<string, string> properties);

-            public bool Accepted { get; private set; }

-            public string AuthenticationScheme { get; }

-            public IDictionary<string, string> Properties { get; }

-            public void Accept();

-        }
     }
 }
```

