Skip to content

Commit c17450e

Browse files
perf(client): optimize header creation
1 parent a49e832 commit c17450e

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/Orb/Core/ParamsBase.cs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@ namespace Orb.Core;
1212

1313
public abstract record class ParamsBase
1414
{
15+
static readonly IReadOnlyDictionary<string, string> s_defaultHeaders;
16+
17+
static ParamsBase()
18+
{
19+
var runtime = GetRuntime();
20+
s_defaultHeaders = new Dictionary<string, string>
21+
{
22+
["X-Stainless-Arch"] = GetOSArch(),
23+
["X-Stainless-Lang"] = "csharp",
24+
["X-Stainless-OS"] = GetOS(),
25+
["X-Stainless-Package-Version"] = GetPackageVersion(),
26+
["X-Stainless-Runtime"] = runtime.Name,
27+
["X-Stainless-Runtime-Version"] = runtime.Version,
28+
};
29+
}
30+
1531
private protected FreezableDictionary<string, JsonElement> _queryProperties = [];
1632

1733
public IReadOnlyDictionary<string, JsonElement> QueryProperties
@@ -163,13 +179,10 @@ protected string QueryString(ClientOptions options)
163179

164180
protected static void AddDefaultHeaders(HttpRequestMessage request, ClientOptions options)
165181
{
166-
request.Headers.Add("X-Stainless-Arch", GetOSArch());
167-
request.Headers.Add("X-Stainless-Lang", "csharp");
168-
request.Headers.Add("X-Stainless-OS", GetOS());
169-
request.Headers.Add("X-Stainless-Package-Version", GetPackageVersion());
170-
var (runtimeName, runtimeVersion) = GetRuntime();
171-
request.Headers.Add("X-Stainless-Runtime", runtimeName);
172-
request.Headers.Add("X-Stainless-Runtime-Version", runtimeVersion);
182+
foreach (var header in s_defaultHeaders)
183+
{
184+
request.Headers.Add(header.Key, header.Value);
185+
}
173186

174187
if (options.APIKey != null)
175188
{

0 commit comments

Comments
 (0)