Skip to content

Commit 8ed97ce

Browse files
committed
Avoid roundtrip to string by serializing directly to UTF-8 bytes
1 parent a53a4a1 commit 8ed97ce

File tree

3 files changed

+5
-9
lines changed

3 files changed

+5
-9
lines changed

src/Docker.DotNet/Endpoints/ImageOperations.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Linq;
66
using System.Net;
77
using System.Net.Http;
8-
using System.Text;
98
using System.Threading;
109
using System.Threading.Tasks;
1110

@@ -307,9 +306,7 @@ private Dictionary<string, string> RegistryAuthHeaders(AuthConfig authConfig)
307306
{
308307
{
309308
RegistryAuthHeaderKey,
310-
Convert.ToBase64String(
311-
Encoding.UTF8.GetBytes(
312-
this._client.JsonSerializer.SerializeObject(authConfig ?? new AuthConfig())))
309+
Convert.ToBase64String(this._client.JsonSerializer.SerializeObject(authConfig ?? new AuthConfig()))
313310
.Replace("/", "_").Replace("+", "-")
314311
// This is not documented in Docker API but from source code (https://github.com/docker/docker-ce/blob/10e40bd1548f69354a803a15fde1b672cc024b91/components/cli/cli/command/registry.go#L47)
315312
// and from multiple internet sources it has to be base64-url-safe.
@@ -325,7 +322,7 @@ private Dictionary<string, string> RegistryConfigHeaders(IEnumerable<AuthConfig>
325322
{
326323
{
327324
RegistryConfigHeaderKey,
328-
Convert.ToBase64String(Encoding.UTF8.GetBytes(this._client.JsonSerializer.SerializeObject(configDictionary)))
325+
Convert.ToBase64String(this._client.JsonSerializer.SerializeObject(configDictionary))
329326
}
330327
};
331328
}

src/Docker.DotNet/Endpoints/SwarmOperations.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ namespace Docker.DotNet
44
using System.Collections.Generic;
55
using System.Net;
66
using System.Net.Http;
7-
using System.Text;
87
using System.Threading.Tasks;
98
using System.Threading;
109
using Models;
@@ -226,7 +225,7 @@ private IDictionary<string, string> RegistryAuthHeaders(AuthConfig authConfig)
226225
{
227226
{
228227
"X-Registry-Auth",
229-
Convert.ToBase64String(Encoding.UTF8.GetBytes(this._client.JsonSerializer.SerializeObject(authConfig)))
228+
Convert.ToBase64String(this._client.JsonSerializer.SerializeObject(authConfig))
230229
}
231230
};
232231
}

src/Docker.DotNet/JsonSerializer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ public T DeserializeObject<T>(string json)
6868
return System.Text.Json.JsonSerializer.Deserialize<T>(json, _options);
6969
}
7070

71-
public string SerializeObject<T>(T value)
71+
public byte[] SerializeObject<T>(T value)
7272
{
73-
return System.Text.Json.JsonSerializer.Serialize(value, _options);
73+
return System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(value, _options);
7474
}
7575

7676
public JsonContent GetHttpContent<T>(T value)

0 commit comments

Comments
 (0)