From e2b1b20633ef8dc88aeaddeae01e2d8e855314fe Mon Sep 17 00:00:00 2001 From: Safia Abdalla Date: Wed, 30 Sep 2020 13:50:31 -0700 Subject: [PATCH] Add doc strings for public APIs in Http.Abstractions and Routing.Abstractions (#26468) * Add doc strings to Http.Abstractions and Routing.Abstractions * Address feedback from peer review * Update src/Http/Http.Abstractions/src/ConnectionInfo.cs Co-authored-by: James Newton-King Co-authored-by: James Newton-King --- .../Http.Abstractions/src/ConnectionInfo.cs | 22 ++ .../Extensions/HeaderDictionaryExtensions.cs | 3 + .../Extensions/ResponseTrailerExtensions.cs | 4 + .../Http.Abstractions/src/FragmentString.cs | 26 ++ src/Http/Http.Abstractions/src/HostString.cs | 3 + src/Http/Http.Abstractions/src/HttpMethods.cs | 49 +++- .../Http.Abstractions/src/HttpProtocol.cs | 23 +- ...rosoft.AspNetCore.Http.Abstractions.csproj | 2 +- src/Http/Http.Abstractions/src/QueryString.cs | 50 +++- .../Http.Abstractions/src/Routing/Endpoint.cs | 3 + .../src/Routing/RouteValueDictionary.cs | 13 +- src/Http/Http.Abstractions/src/StatusCodes.cs | 263 +++++++++++++++++- src/Http/Routing.Abstractions/src/IRouter.cs | 12 + .../Routing.Abstractions/src/LinkOptions.cs | 5 +- ...oft.AspNetCore.Routing.Abstractions.csproj | 2 +- 15 files changed, 456 insertions(+), 24 deletions(-) diff --git a/src/Http/Http.Abstractions/src/ConnectionInfo.cs b/src/Http/Http.Abstractions/src/ConnectionInfo.cs index da26205faa..193ae86e51 100644 --- a/src/Http/Http.Abstractions/src/ConnectionInfo.cs +++ b/src/Http/Http.Abstractions/src/ConnectionInfo.cs @@ -8,6 +8,9 @@ using System.Threading.Tasks; namespace Microsoft.AspNetCore.Http { + /// + /// Represents the underlying connection for a request. + /// public abstract class ConnectionInfo { /// @@ -15,16 +18,35 @@ namespace Microsoft.AspNetCore.Http /// public abstract string Id { get; set; } + /// + /// Gets or sets the IP address of the remote target. Can be null. + /// public abstract IPAddress? RemoteIpAddress { get; set; } + /// + /// Gets or sets the port of the remote target. + /// public abstract int RemotePort { get; set; } + /// + /// Gets or sets the IP address of the local host. + /// public abstract IPAddress? LocalIpAddress { get; set; } + /// + /// Gets or sets the port of the local host. + /// public abstract int LocalPort { get; set; } + /// + /// Gets or sets the client certificate. + /// public abstract X509Certificate2? ClientCertificate { get; set; } + /// + /// Retrieves the client certificate. + /// + /// Asynchronously returns an . Can be null. public abstract Task GetClientCertificateAsync(CancellationToken cancellationToken = new CancellationToken()); } } diff --git a/src/Http/Http.Abstractions/src/Extensions/HeaderDictionaryExtensions.cs b/src/Http/Http.Abstractions/src/Extensions/HeaderDictionaryExtensions.cs index e942b1b1e9..0cb648032c 100644 --- a/src/Http/Http.Abstractions/src/Extensions/HeaderDictionaryExtensions.cs +++ b/src/Http/Http.Abstractions/src/Extensions/HeaderDictionaryExtensions.cs @@ -5,6 +5,9 @@ using Microsoft.Extensions.Primitives; namespace Microsoft.AspNetCore.Http { + /// + /// Contains extension methods for modifying an instance. + /// public static class HeaderDictionaryExtensions { /// diff --git a/src/Http/Http.Abstractions/src/Extensions/ResponseTrailerExtensions.cs b/src/Http/Http.Abstractions/src/Extensions/ResponseTrailerExtensions.cs index 684dcdd164..d2c01717e7 100644 --- a/src/Http/Http.Abstractions/src/Extensions/ResponseTrailerExtensions.cs +++ b/src/Http/Http.Abstractions/src/Extensions/ResponseTrailerExtensions.cs @@ -8,6 +8,10 @@ using Microsoft.Net.Http.Headers; namespace Microsoft.AspNetCore.Http { + /// + /// Contains extension methods for modifying the `Trailer` response header + /// and trailing headers in an . + /// public static class ResponseTrailerExtensions { /// diff --git a/src/Http/Http.Abstractions/src/FragmentString.cs b/src/Http/Http.Abstractions/src/FragmentString.cs index 6233d7f2a1..a38aca637b 100644 --- a/src/Http/Http.Abstractions/src/FragmentString.cs +++ b/src/Http/Http.Abstractions/src/FragmentString.cs @@ -105,6 +105,11 @@ namespace Microsoft.AspNetCore.Http return new FragmentString(fragmentValue); } + /// + /// Evaluates if the current fragment is equal to another fragment . + /// + /// A to compare. + /// if the fragments are equal. public bool Equals(FragmentString other) { if (!HasValue && !other.HasValue) @@ -114,6 +119,11 @@ namespace Microsoft.AspNetCore.Http return string.Equals(_value, other._value, StringComparison.Ordinal); } + /// + /// Evaluates if the current fragment is equal to an object . + /// + /// An object to compare. + /// if the fragments are equal. public override bool Equals(object? obj) { if (ReferenceEquals(null, obj)) @@ -123,16 +133,32 @@ namespace Microsoft.AspNetCore.Http return obj is FragmentString && Equals((FragmentString)obj); } + /// + /// Gets a hash code for the value. + /// + /// The hash code as an . public override int GetHashCode() { return (HasValue ? _value.GetHashCode() : 0); } + /// + /// Evaluates if one fragment is equal to another. + /// + /// A instance. + /// A instance. + /// if the fragments are equal. public static bool operator ==(FragmentString left, FragmentString right) { return left.Equals(right); } + /// + /// Evalutes if one framgent is not equal to another. + /// + /// A instance. + /// A instance. + /// if the fragments are not equal. public static bool operator !=(FragmentString left, FragmentString right) { return !left.Equals(right); diff --git a/src/Http/Http.Abstractions/src/HostString.cs b/src/Http/Http.Abstractions/src/HostString.cs index f9ba89d2f1..41aff88478 100644 --- a/src/Http/Http.Abstractions/src/HostString.cs +++ b/src/Http/Http.Abstractions/src/HostString.cs @@ -65,6 +65,9 @@ namespace Microsoft.AspNetCore.Http get { return _value; } } + /// + /// Returns true if the host is set. + /// public bool HasValue { get { return !string.IsNullOrEmpty(_value); } diff --git a/src/Http/Http.Abstractions/src/HttpMethods.cs b/src/Http/Http.Abstractions/src/HttpMethods.cs index e0204ac762..90055730d6 100644 --- a/src/Http/Http.Abstractions/src/HttpMethods.cs +++ b/src/Http/Http.Abstractions/src/HttpMethods.cs @@ -6,7 +6,7 @@ using System; namespace Microsoft.AspNetCore.Http { /// - /// Contains methods to verify the request method of an HTTP request. + /// Contains methods to verify the request method of an HTTP request. /// public static class HttpMethods { @@ -18,18 +18,45 @@ namespace Microsoft.AspNetCore.Http // and allow us to optimize comparisons when these constants are used. // Please do NOT change these to 'const' + /// + /// HTTP "CONNECT" method. + /// public static readonly string Connect = "CONNECT"; + /// + /// HTTP "DELETE" method. + /// public static readonly string Delete = "DELETE"; + /// + /// HTTP "GET" method. + /// public static readonly string Get = "GET"; + /// + /// HTTP "HEAD" method. + /// public static readonly string Head = "HEAD"; + /// + /// HTTP "OPTIONS" method. + /// public static readonly string Options = "OPTIONS"; + /// + /// HTTP "PATCH" method. + /// public static readonly string Patch = "PATCH"; + /// + /// HTTP "POST" method. + /// public static readonly string Post = "POST"; + /// + /// HTTP "PUT" method. + /// public static readonly string Put = "PUT"; + /// + /// HTTP "TRACE" method. + /// public static readonly string Trace = "TRACE"; /// - /// Returns a value that indicates if the HTTP request method is CONNECT. + /// Returns a value that indicates if the HTTP request method is CONNECT. /// /// The HTTP request method. /// @@ -41,7 +68,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is DELETE. + /// Returns a value that indicates if the HTTP request method is DELETE. /// /// The HTTP request method. /// @@ -53,7 +80,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is GET. + /// Returns a value that indicates if the HTTP request method is GET. /// /// The HTTP request method. /// @@ -65,7 +92,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is HEAD. + /// Returns a value that indicates if the HTTP request method is HEAD. /// /// The HTTP request method. /// @@ -77,7 +104,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is OPTIONS. + /// Returns a value that indicates if the HTTP request method is OPTIONS. /// /// The HTTP request method. /// @@ -89,7 +116,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is PATCH. + /// Returns a value that indicates if the HTTP request method is PATCH. /// /// The HTTP request method. /// @@ -101,7 +128,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is POST. + /// Returns a value that indicates if the HTTP request method is POST. /// /// The HTTP request method. /// @@ -113,7 +140,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is PUT. + /// Returns a value that indicates if the HTTP request method is PUT. /// /// The HTTP request method. /// @@ -125,7 +152,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request method is TRACE. + /// Returns a value that indicates if the HTTP request method is TRACE. /// /// The HTTP request method. /// @@ -156,7 +183,7 @@ namespace Microsoft.AspNetCore.Http }; /// - /// Returns a value that indicates if the HTTP methods are the same. + /// Returns a value that indicates if the HTTP methods are the same. /// /// The first HTTP request method to compare. /// The second HTTP request method to compare. diff --git a/src/Http/Http.Abstractions/src/HttpProtocol.cs b/src/Http/Http.Abstractions/src/HttpProtocol.cs index a0f1c21b7b..229cb4396c 100644 --- a/src/Http/Http.Abstractions/src/HttpProtocol.cs +++ b/src/Http/Http.Abstractions/src/HttpProtocol.cs @@ -6,7 +6,7 @@ using System; namespace Microsoft.AspNetCore.Http { /// - /// Contains methods to verify the request protocol version of an HTTP request. + /// Contains methods to verify the request protocol version of an HTTP request. /// public static class HttpProtocol { @@ -18,13 +18,26 @@ namespace Microsoft.AspNetCore.Http // and allow us to optimize comparisons when these constants are used. // Please do NOT change these to 'const' + + /// + /// HTTP protocol version 1.0. + /// public static readonly string Http10 = "HTTP/1.0"; + /// + /// HTTP protocol version 1.1. + /// public static readonly string Http11 = "HTTP/1.1"; + /// + /// HTTP protocol version 2. + /// public static readonly string Http2 = "HTTP/2"; + /// + /// HTTP protcol version 3. + /// public static readonly string Http3 = "HTTP/3"; /// - /// Returns a value that indicates if the HTTP request protocol is HTTP/1.0. + /// Returns a value that indicates if the HTTP request protocol is HTTP/1.0. /// /// The HTTP request protocol. /// @@ -36,7 +49,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request protocol is HTTP/1.1. + /// Returns a value that indicates if the HTTP request protocol is HTTP/1.1. /// /// The HTTP request protocol. /// @@ -48,7 +61,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request protocol is HTTP/2. + /// Returns a value that indicates if the HTTP request protocol is HTTP/2. /// /// The HTTP request protocol. /// @@ -60,7 +73,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Returns a value that indicates if the HTTP request protocol is HTTP/3. + /// Returns a value that indicates if the HTTP request protocol is HTTP/3. /// /// The HTTP request protocol. /// diff --git a/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj b/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj index dfc0ee4740..8fcf928e72 100644 --- a/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj +++ b/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj @@ -12,7 +12,7 @@ Microsoft.AspNetCore.Http.HttpResponse true true aspnetcore - $(NoWarn);CS1591 + $(NoWarn.Replace('1591', '')) false enable diff --git a/src/Http/Http.Abstractions/src/QueryString.cs b/src/Http/Http.Abstractions/src/QueryString.cs index f9babe7889..478d972fce 100644 --- a/src/Http/Http.Abstractions/src/QueryString.cs +++ b/src/Http/Http.Abstractions/src/QueryString.cs @@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Http /// /// Initialize the query string with a given value. This value must be in escaped and delimited format with - /// a leading '?' character. + /// a leading '?' character. /// /// The query string to be assigned to the Value property. public QueryString(string? value) @@ -45,7 +45,7 @@ namespace Microsoft.AspNetCore.Http public bool HasValue => !string.IsNullOrEmpty(Value); /// - /// Provides the query string escaped in a way which is correct for combining into the URI representation. + /// Provides the query string escaped in a way which is correct for combining into the URI representation. /// A leading '?' character will be included unless the Value is null or empty. Characters which are potentially /// dangerous are escaped. /// @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Http } /// - /// Provides the query string escaped in a way which is correct for combining into the URI representation. + /// Provides the query string escaped in a way which is correct for combining into the URI representation. /// A leading '?' character will be included unless the Value is null or empty. Characters which are potentially /// dangerous are escaped. /// @@ -170,6 +170,11 @@ namespace Microsoft.AspNetCore.Http return new QueryString(builder.ToString()); } + /// + /// Concatenates to the current query string. + /// + /// The to concatenate. + /// The concatenated . public QueryString Add(QueryString other) { if (!HasValue || Value!.Equals("?", StringComparison.Ordinal)) @@ -185,6 +190,13 @@ namespace Microsoft.AspNetCore.Http return new QueryString(Value + "&" + other.Value.Substring(1)); } + /// + /// Concatenates a query string with and + /// to the current query string. + /// + /// The name of the query string to concatenate. + /// The value of the query string to concatenate. + /// The concatenated . public QueryString Add(string name, string value) { if (name == null) @@ -202,6 +214,11 @@ namespace Microsoft.AspNetCore.Http return new QueryString(builder.ToString()); } + /// + /// Evalutes if the current query string is equal to . + /// + /// The to compare. + /// if the ssquery strings are equal. public bool Equals(QueryString other) { if (!HasValue && !other.HasValue) @@ -211,6 +228,11 @@ namespace Microsoft.AspNetCore.Http return string.Equals(Value, other.Value, StringComparison.Ordinal); } + /// + /// Evaluates if the current query string is equal to an object . + /// + /// An object to compare. + /// if the query strings are equal. public override bool Equals(object? obj) { if (ReferenceEquals(null, obj)) @@ -220,21 +242,43 @@ namespace Microsoft.AspNetCore.Http return obj is QueryString && Equals((QueryString)obj); } + /// + /// Gets a hash code for the value. + /// + /// The hash code as an . public override int GetHashCode() { return (HasValue ? Value!.GetHashCode() : 0); } + /// + /// Evaluates if one query string is equal to another. + /// + /// A instance. + /// A instance. + /// if the query strings are equal. public static bool operator ==(QueryString left, QueryString right) { return left.Equals(right); } + /// + /// Evaluates if one query string is not equal to another. + /// + /// A instance. + /// A instance. + /// if the query strings are not equal. public static bool operator !=(QueryString left, QueryString right) { return !left.Equals(right); } + /// + /// Concatenates and into a single query string. + /// + /// A instance. + /// A instance. + /// The concatenated . public static QueryString operator +(QueryString left, QueryString right) { return left.Add(right); diff --git a/src/Http/Http.Abstractions/src/Routing/Endpoint.cs b/src/Http/Http.Abstractions/src/Routing/Endpoint.cs index 1f795f74ad..ea44716e5f 100644 --- a/src/Http/Http.Abstractions/src/Routing/Endpoint.cs +++ b/src/Http/Http.Abstractions/src/Routing/Endpoint.cs @@ -44,6 +44,9 @@ namespace Microsoft.AspNetCore.Http /// public RequestDelegate RequestDelegate { get; } + /// + /// Returns a string representation of the endpoint. + /// public override string? ToString() => DisplayName ?? base.ToString(); } } diff --git a/src/Http/Http.Abstractions/src/Routing/RouteValueDictionary.cs b/src/Http/Http.Abstractions/src/Routing/RouteValueDictionary.cs index 4f95693da9..4ef18195dc 100644 --- a/src/Http/Http.Abstractions/src/Routing/RouteValueDictionary.cs +++ b/src/Http/Http.Abstractions/src/Routing/RouteValueDictionary.cs @@ -187,7 +187,7 @@ namespace Microsoft.AspNetCore.Routing // We're calling this here for the side-effect of converting from properties // to array. We need to create the array even if we just set an existing value since - // property storage is immutable. + // property storage is immutable. EnsureCapacity(_count); var index = FindIndex(key); @@ -661,11 +661,16 @@ namespace Microsoft.AspNetCore.Routing return false; } + /// public struct Enumerator : IEnumerator> { private readonly RouteValueDictionary _dictionary; private int _index; + /// + /// Instantiates a new enumerator with the values provided in . + /// + /// A . public Enumerator(RouteValueDictionary dictionary) { if (dictionary == null) @@ -679,15 +684,20 @@ namespace Microsoft.AspNetCore.Routing _index = 0; } + /// public KeyValuePair Current { get; private set; } object IEnumerator.Current => Current; + /// + /// Releases resources used by the . + /// public void Dispose() { } // Similar to the design of List.Enumerator - Split into fast path and slow path for inlining friendliness + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool MoveNext() { @@ -721,6 +731,7 @@ namespace Microsoft.AspNetCore.Routing return false; } + /// public void Reset() { Current = default; diff --git a/src/Http/Http.Abstractions/src/StatusCodes.cs b/src/Http/Http.Abstractions/src/StatusCodes.cs index 3261bce2f2..d3b42b2b10 100644 --- a/src/Http/Http.Abstractions/src/StatusCodes.cs +++ b/src/Http/Http.Abstractions/src/StatusCodes.cs @@ -3,77 +3,338 @@ namespace Microsoft.AspNetCore.Http { - // Status Codes listed at http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml + /// + /// A collection of contants for HTTP status codes. + /// + /// Status Codes listed at http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml + /// public static class StatusCodes { + /// + /// HTTP status code 100. + /// public const int Status100Continue = 100; + + /// + /// HTTP status code 101. + /// public const int Status101SwitchingProtocols = 101; + + /// + /// HTTP status code 102. + /// public const int Status102Processing = 102; + /// + /// HTTP status code 200. + /// public const int Status200OK = 200; + + /// + /// HTTP status code 201. + /// public const int Status201Created = 201; + + /// + /// HTTP status code 202. + /// public const int Status202Accepted = 202; + + /// + /// HTTP status code 203. + /// public const int Status203NonAuthoritative = 203; + + /// + /// HTTP status code 204. + /// public const int Status204NoContent = 204; + + /// + /// HTTP status code 205. + /// public const int Status205ResetContent = 205; + + /// + /// HTTP status code 206. + /// public const int Status206PartialContent = 206; + + /// + /// HTTP status code 207. + /// public const int Status207MultiStatus = 207; + + /// + /// HTTP status code 208. + /// public const int Status208AlreadyReported = 208; + + /// + /// HTTP status code 226. + /// public const int Status226IMUsed = 226; + /// + /// HTTP status code 300. + /// public const int Status300MultipleChoices = 300; + + /// + /// HTTP status code 301. + /// public const int Status301MovedPermanently = 301; + + /// + /// HTTP status code 302. + /// public const int Status302Found = 302; + + /// + /// HTTP status code 303. + /// public const int Status303SeeOther = 303; + + /// + /// HTTP status code 304. + /// public const int Status304NotModified = 304; + + /// + /// HTTP status code 305. + /// public const int Status305UseProxy = 305; + + /// + /// HTTP status code 306. + /// public const int Status306SwitchProxy = 306; // RFC 2616, removed + + /// + /// HTTP status code 307. + /// public const int Status307TemporaryRedirect = 307; + + /// + /// HTTP status code 308. + /// public const int Status308PermanentRedirect = 308; + /// + /// HTTP status code 400. + /// + public const int Status400BadRequest = 400; + + /// + /// HTTP status code 401. + /// public const int Status401Unauthorized = 401; + + /// + /// HTTP status code 402. + /// public const int Status402PaymentRequired = 402; + + /// + /// HTTP status code 403. + /// public const int Status403Forbidden = 403; + + /// + /// HTTP status code 404. + /// public const int Status404NotFound = 404; + + /// + /// HTTP status code 405. + /// public const int Status405MethodNotAllowed = 405; + + /// + /// HTTP status code 406. + /// public const int Status406NotAcceptable = 406; + + /// + /// HTTP status code 407. + /// public const int Status407ProxyAuthenticationRequired = 407; + + /// + /// HTTP status code 408. + /// public const int Status408RequestTimeout = 408; + + /// + /// HTTP status code 409. + /// public const int Status409Conflict = 409; + + /// + /// HTTP status code 410. + /// public const int Status410Gone = 410; + + /// + /// HTTP status code 411. + /// public const int Status411LengthRequired = 411; + + /// + /// HTTP status code 412. + /// public const int Status412PreconditionFailed = 412; + + /// + /// HTTP status code 413. + /// public const int Status413RequestEntityTooLarge = 413; // RFC 2616, renamed + + /// + /// HTTP status code 413. + /// public const int Status413PayloadTooLarge = 413; // RFC 7231 + + /// + /// HTTP status code 414. + /// public const int Status414RequestUriTooLong = 414; // RFC 2616, renamed + + /// + /// HTTP status code 414. + /// public const int Status414UriTooLong = 414; // RFC 7231 + + /// + /// HTTP status code 415. + /// public const int Status415UnsupportedMediaType = 415; + + /// + /// HTTP status code 416. + /// public const int Status416RequestedRangeNotSatisfiable = 416; // RFC 2616, renamed + + /// + /// HTTP status code 416. + /// public const int Status416RangeNotSatisfiable = 416; // RFC 7233 + + /// + /// HTTP status code 417. + /// public const int Status417ExpectationFailed = 417; + + /// + /// HTTP status code 418. + /// public const int Status418ImATeapot = 418; + + /// + /// HTTP status code 419. + /// public const int Status419AuthenticationTimeout = 419; // Not defined in any RFC + + /// + /// HTTP status code 422. + /// public const int Status421MisdirectedRequest = 421; + + /// + /// HTTP status code 422. + /// public const int Status422UnprocessableEntity = 422; + + /// + /// HTTP status code 423. + /// public const int Status423Locked = 423; + + /// + /// HTTP status code 424. + /// public const int Status424FailedDependency = 424; + + /// + /// HTTP status code 426. + /// public const int Status426UpgradeRequired = 426; + + /// + /// HTTP status code 428. + /// public const int Status428PreconditionRequired = 428; + + /// + /// HTTP status code 429. + /// public const int Status429TooManyRequests = 429; + + /// + /// HTTP status code 431. + /// public const int Status431RequestHeaderFieldsTooLarge = 431; + + /// + /// HTTP status code 451. + /// public const int Status451UnavailableForLegalReasons = 451; + /// + /// HTTP status code 500. + /// + public const int Status500InternalServerError = 500; + + /// + /// HTTP status code 501. + /// public const int Status501NotImplemented = 501; + + /// + /// HTTP status code 502. + /// public const int Status502BadGateway = 502; + + /// + /// HTTP status code 503. + /// public const int Status503ServiceUnavailable = 503; + + /// + /// HTTP status code 504. + /// public const int Status504GatewayTimeout = 504; + + /// + /// HTTP status code 505. + /// public const int Status505HttpVersionNotsupported = 505; + + /// + /// HTTP status code 506. + /// public const int Status506VariantAlsoNegotiates = 506; + + /// + /// HTTP status code 507. + /// public const int Status507InsufficientStorage = 507; + + /// + /// HTTP status code 508. + /// public const int Status508LoopDetected = 508; + + /// + /// HTTP status code 510. + /// public const int Status510NotExtended = 510; + + /// + /// HTTP status code 511. + /// public const int Status511NetworkAuthenticationRequired = 511; } } diff --git a/src/Http/Routing.Abstractions/src/IRouter.cs b/src/Http/Routing.Abstractions/src/IRouter.cs index d16dcba8fe..ad7bac633c 100644 --- a/src/Http/Routing.Abstractions/src/IRouter.cs +++ b/src/Http/Routing.Abstractions/src/IRouter.cs @@ -5,10 +5,22 @@ using System.Threading.Tasks; namespace Microsoft.AspNetCore.Routing { + /// + /// + /// public interface IRouter { + /// + /// Asynchronously routes based on the current . + /// + /// A instance. Task RouteAsync(RouteContext context); + /// + /// Returns the URL that is assicated with the route details provided in + /// + /// A instance. + /// A object. Can be null. VirtualPathData? GetVirtualPath(VirtualPathContext context); } } diff --git a/src/Http/Routing.Abstractions/src/LinkOptions.cs b/src/Http/Routing.Abstractions/src/LinkOptions.cs index 5c1e377bb1..5d63756d23 100644 --- a/src/Http/Routing.Abstractions/src/LinkOptions.cs +++ b/src/Http/Routing.Abstractions/src/LinkOptions.cs @@ -3,6 +3,9 @@ namespace Microsoft.AspNetCore.Routing { + /// + /// Configures options for generated URLs. + /// public class LinkOptions { /// @@ -13,7 +16,7 @@ namespace Microsoft.AspNetCore.Routing /// /// Gets or sets a value indicating whether a generated query strings are lowercase. - /// This property will be unless is also true. + /// This property will be false unless is also true. /// public bool? LowercaseQueryStrings { get; set; } diff --git a/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj b/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj index 01a9d07382..3b81f41838 100644 --- a/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj +++ b/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj @@ -7,7 +7,7 @@ Microsoft.AspNetCore.Routing.IRouter Microsoft.AspNetCore.Routing.RouteData $(DefaultNetCoreTargetFramework) true - $(NoWarn);CS1591 + $(NoWarn.Replace('1591', '')) true aspnetcore;routing false