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