Skip to content

Commit

Permalink
chore: Add HTTP message handler
Browse files Browse the repository at this point in the history
  • Loading branch information
HofmeisterAn committed Sep 22, 2023
1 parent 10d9e2a commit 4a7c19b
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 1 deletion.
8 changes: 8 additions & 0 deletions src/DockerEngine/DockerEngine.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
<PropertyGroup>
<TargetFrameworks>net6.0</TargetFrameworks>
<LangVersion>latest</LangVersion>
<Version>$(Version)+v1.43</Version>
<Product>DockerEngine</Product>
<Description></Description>
<Summary></Summary>
<PackageIcon></PackageIcon>
<PackageIconUrl></PackageIconUrl>
<PackageReadmeFile></PackageReadmeFile>
<PackageTags>api;client;docker;dotnet</PackageTags>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NSwag.MSBuild" Version="13.20.0">
Expand Down
6 changes: 5 additions & 1 deletion tests/DockerEngine.Tests/DockerClientTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ public sealed class DockerClientTest : IAsyncLifetime

public System.Threading.Tasks.Task InitializeAsync()
{
return System.Threading.Tasks.Task.CompletedTask;
return _dockerContainer.StartAsync();

Check warning on line 21 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (ubuntu-22.04)

Unreachable code detected

Check warning on line 21 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (ubuntu-22.04)

Unreachable code detected

Check warning on line 21 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (windows-2022)

Unreachable code detected

Check warning on line 21 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (windows-2022)

Unreachable code detected
}

public System.Threading.Tasks.Task DisposeAsync()
{
return System.Threading.Tasks.Task.CompletedTask;
return _dockerContainer.DisposeAsync().AsTask();

Check warning on line 27 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (ubuntu-22.04)

Unreachable code detected

Check warning on line 27 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (ubuntu-22.04)

Unreachable code detected

Check warning on line 27 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (windows-2022)

Unreachable code detected

Check warning on line 27 in tests/DockerEngine.Tests/DockerClientTest.cs

View workflow job for this annotation

GitHub Actions / build (windows-2022)

Unreachable code detected
}

Expand Down Expand Up @@ -60,7 +62,9 @@ public async System.Threading.Tasks.Task CreatesDockerClient(string endpoint)
// TODO: Fix the '$endpoint' scheme is not supported.

// Given
var dockerClient = new DockerClient(endpoint, new HttpClient());
using var httpClient = new HttpClient(HttpMessageHandlerFactory.GetHttpMessageHandler(new Uri(endpoint)));

var dockerClient = new DockerClient(endpoint, httpClient);

// When
var systemInfo = await dockerClient.SystemInfoAsync()
Expand Down
22 changes: 22 additions & 0 deletions tests/DockerEngine.Tests/HttpMessageHandlerFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace DockerEngine;

internal static class HttpMessageHandlerFactory
{
public static HttpMessageHandler GetHttpMessageHandler(Uri dockerEndpoint)
{
switch (dockerEndpoint.Scheme)
{
case "http":
case "https":
return new HttpClientHandler();
case "tcp":
return new HttpClientHandler();
case "npipe":
return new NamedPipeMessageHandler();
case "unix":
return new UnixSocketMessageHandler();
default:
throw new InvalidOperationException($"The Docker scheme {dockerEndpoint.Scheme} is not supported.");
}
}
}
11 changes: 11 additions & 0 deletions tests/DockerEngine.Tests/NamedPipeMessageHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace DockerEngine;

internal sealed class NamedPipeMessageHandler : HttpMessageHandler
{
private const string NamedPipe = "npipe://./pipe/docker_engine";

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}
11 changes: 11 additions & 0 deletions tests/DockerEngine.Tests/UnixSocketMessageHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace DockerEngine;

internal sealed class UnixSocketMessageHandler : HttpMessageHandler
{
private const string UnixSocket = "unix:///var/run/docker.sock";

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}
2 changes: 2 additions & 0 deletions tests/DockerEngine.Tests/Usings.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
global using System;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Commons;
global using DotNet.Testcontainers.Containers;
Expand Down

0 comments on commit 4a7c19b

Please sign in to comment.