Skip to content

Commit beb931a

Browse files
committed
feat: Add default HTTP custom header
1 parent fd073bf commit beb931a

File tree

2 files changed

+29
-22
lines changed

2 files changed

+29
-22
lines changed

src/Docker.DotNet/DockerClient.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,13 @@ internal HttpRequestMessage PrepareRequest(HttpMethod method, string path, IQuer
393393
request.Version = new Version(1, 1);
394394
request.Headers.Add("User-Agent", UserAgent);
395395

396-
if (headers != null)
396+
var customHeaders = headers == null
397+
? Configuration.DefaultHttpRequestHeaders
398+
: Configuration.DefaultHttpRequestHeaders.Concat(headers);
399+
400+
foreach (var header in customHeaders)
397401
{
398-
foreach (var header in headers)
399-
{
400-
request.Headers.Add(header.Key, header.Value);
401-
}
402+
request.Headers.Add(header.Key, header.Value);
402403
}
403404

404405
if (data != null)

src/Docker.DotNet/DockerClientConfiguration.cs

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Runtime.InteropServices;
34
using System.Threading;
45

56
namespace Docker.DotNet
67
{
78
public class DockerClientConfiguration : IDisposable
89
{
9-
public DockerClientConfiguration(Credentials credentials = null, TimeSpan defaultTimeout = default)
10-
: this(GetLocalDockerEndpoint(), credentials, defaultTimeout)
10+
public DockerClientConfiguration(
11+
Credentials credentials = null,
12+
TimeSpan defaultTimeout = default,
13+
TimeSpan namedPipeConnectTimeout = default,
14+
IReadOnlyDictionary<string, string> defaultHttpRequestHeaders = null)
15+
: this(GetLocalDockerEndpoint(), credentials, defaultTimeout, namedPipeConnectTimeout, defaultHttpRequestHeaders)
1116
{
1217
}
1318

14-
public DockerClientConfiguration(Uri endpoint, Credentials credentials = null, TimeSpan defaultTimeout = default)
19+
public DockerClientConfiguration(
20+
Uri endpoint,
21+
Credentials credentials = null,
22+
TimeSpan defaultTimeout = default,
23+
TimeSpan namedPipeConnectTimeout = default,
24+
IReadOnlyDictionary<string, string> defaultHttpRequestHeaders = null)
1525
{
1626
if (endpoint == null)
1727
{
@@ -23,29 +33,25 @@ public DockerClientConfiguration(Uri endpoint, Credentials credentials = null, T
2333
throw new ArgumentException("Default timeout must be greater than -1", nameof(defaultTimeout));
2434
}
2535

26-
if (credentials == null)
27-
{
28-
credentials = new AnonymousCredentials();
29-
}
30-
31-
if (defaultTimeout == default)
32-
{
33-
defaultTimeout = TimeSpan.FromSeconds(100);
34-
}
35-
3636
EndpointBaseUri = endpoint;
37-
Credentials = credentials;
38-
DefaultTimeout = defaultTimeout;
39-
NamedPipeConnectTimeout = TimeSpan.FromMilliseconds(100);
37+
Credentials = credentials ?? new AnonymousCredentials();
38+
DefaultTimeout = TimeSpan.Equals(default, defaultTimeout) ? TimeSpan.FromSeconds(100) : defaultTimeout;
39+
NamedPipeConnectTimeout = TimeSpan.Equals(default, namedPipeConnectTimeout) ? TimeSpan.FromMilliseconds(100) : namedPipeConnectTimeout;
40+
DefaultHttpRequestHeaders = defaultHttpRequestHeaders ?? new Dictionary<string, string>();
4041
}
4142

43+
/// <summary>
44+
/// Gets the collection of default HTTP request headers.
45+
/// </summary>
46+
public IReadOnlyDictionary<string, string> DefaultHttpRequestHeaders { get; }
47+
4248
public Uri EndpointBaseUri { get; }
4349

4450
public Credentials Credentials { get; }
4551

4652
public TimeSpan DefaultTimeout { get; }
4753

48-
public TimeSpan NamedPipeConnectTimeout { get; set; }
54+
public TimeSpan NamedPipeConnectTimeout { get; }
4955

5056
public DockerClient CreateClient(Version requestedApiVersion = null)
5157
{

0 commit comments

Comments
 (0)