Skip to content

Commit 5e6b3bd

Browse files
feat(client): send X-Stainless-Runtime and X-Stainless-Runtime-Version
1 parent e645cb6 commit 5e6b3bd

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

src/ArcadeDotnet/Core/ParamsBase.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ protected static void AddDefaultHeaders(HttpRequestMessage request, ClientOption
172172
request.Headers.Add("X-Stainless-Lang", "csharp");
173173
request.Headers.Add("X-Stainless-OS", GetOS());
174174
request.Headers.Add("X-Stainless-Package-Version", GetPackageVersion());
175+
var (runtimeName, runtimeVersion) = GetRuntime();
176+
request.Headers.Add("X-Stainless-Runtime", runtimeName);
177+
request.Headers.Add("X-Stainless-Runtime-Version", runtimeVersion);
175178

176179
if (options.APIKey != null)
177180
{
@@ -216,4 +219,24 @@ static string GetPackageVersion() =>
216219
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
217220
?.InformationalVersion
218221
?? "unknown";
222+
223+
static Runtime GetRuntime()
224+
{
225+
var runtimeDescription = RuntimeInformation.FrameworkDescription;
226+
var lastSpaceIndex = runtimeDescription.LastIndexOf(' ');
227+
if (lastSpaceIndex == -1)
228+
{
229+
return new() { Name = runtimeDescription, Version = "unknown" };
230+
}
231+
232+
var name = runtimeDescription[..lastSpaceIndex].Trim();
233+
var version = runtimeDescription[(lastSpaceIndex + 1)..].Trim();
234+
return new()
235+
{
236+
Name = name.Length == 0 ? "unknown" : name,
237+
Version = version.Length == 0 ? "unknown" : version,
238+
};
239+
}
240+
241+
readonly record struct Runtime(string Name, string Version);
219242
}

0 commit comments

Comments
 (0)