diff --git a/src/Elastic.Transport/Components/Pipeline/ResponseBuilder.cs b/src/Elastic.Transport/Components/Pipeline/ResponseBuilder.cs index 132a043..f4952a9 100644 --- a/src/Elastic.Transport/Components/Pipeline/ResponseBuilder.cs +++ b/src/Elastic.Transport/Components/Pipeline/ResponseBuilder.cs @@ -17,6 +17,9 @@ namespace Elastic.Transport; /// public abstract class ResponseBuilder { + /// Exposes a default response builder to implementers without sharing more internal types to handle empty errors + public static ResponseBuilder Default { get; } = new DefaultResponseBuilder(); + /// /// Create an instance of from /// diff --git a/src/Elastic.Transport/Products/DefaultProductRegistration.cs b/src/Elastic.Transport/Products/DefaultProductRegistration.cs index 542a595..dbee053 100644 --- a/src/Elastic.Transport/Products/DefaultProductRegistration.cs +++ b/src/Elastic.Transport/Products/DefaultProductRegistration.cs @@ -20,24 +20,24 @@ public sealed class DefaultProductRegistration : ProductRegistration private readonly MetaHeaderProvider _metaHeaderProvider; /// - /// + /// /// public DefaultProductRegistration() => _metaHeaderProvider = new DefaultMetaHeaderProvider(typeof(HttpTransport), ServiceIdentifier); /// A static instance of to promote reuse - public static DefaultProductRegistration Default { get; } = new DefaultProductRegistration(); + public static DefaultProductRegistration Default { get; } = new(); /// - public override string Name { get; } = "elastic-transport-net"; + public override string Name => "elastic-transport-net"; /// public override string? ServiceIdentifier => "et"; /// - public override bool SupportsPing { get; } = false; + public override bool SupportsPing => false; /// - public override bool SupportsSniff { get; } = false; + public override bool SupportsSniff => false; /// public override int SniffOrder(Node node) => -1; @@ -51,9 +51,6 @@ public sealed class DefaultProductRegistration : ProductRegistration /// public override MetaHeaderProvider MetaHeaderProvider => _metaHeaderProvider; - /// - public override ResponseBuilder ResponseBuilder => new DefaultResponseBuilder(); - /// public override string DefaultMimeType => null; diff --git a/src/Elastic.Transport/Products/ProductRegistration.cs b/src/Elastic.Transport/Products/ProductRegistration.cs index 95da739..4248841 100644 --- a/src/Elastic.Transport/Products/ProductRegistration.cs +++ b/src/Elastic.Transport/Products/ProductRegistration.cs @@ -110,12 +110,12 @@ public abstract RequestData CreateSniffRequestData(Node node, IRequestConfigurat public abstract bool TryGetServerErrorReason(TResponse response, out string reason) where TResponse : TransportResponse; /// - /// TODO + /// Allows product implementations to inject a metadata header to all outgoing requests /// public abstract MetaHeaderProvider MetaHeaderProvider { get; } /// - /// TODO + /// Allows product implementations to take full control of building transport responses if needed. /// - public abstract ResponseBuilder ResponseBuilder { get; } + public virtual ResponseBuilder ResponseBuilder => ResponseBuilder.Default; } diff --git a/src/Elastic.Transport/Requests/MetaData/MetaHeaderProvider.cs b/src/Elastic.Transport/Requests/MetaData/MetaHeaderProvider.cs index 9f58c0b..0660e22 100644 --- a/src/Elastic.Transport/Requests/MetaData/MetaHeaderProvider.cs +++ b/src/Elastic.Transport/Requests/MetaData/MetaHeaderProvider.cs @@ -5,19 +5,13 @@ namespace Elastic.Transport; /// -/// TODO +/// Injects a metadata header into all outgoing requests /// public abstract class MetaHeaderProvider { - /// - /// - /// + /// Header name public abstract string HeaderName { get; } - /// - /// TODO - /// - /// - /// + /// Produces the header value based on current outgoing public abstract string ProduceHeaderValue(RequestData requestData); }