frostfs-sdk-csharp/src/FrostFS.SDK.Client/Tools/RequestConstructor.cs
Pavel Gross 9bb7b5eff8 [#28] Clients: Make immutable parameters
Signed-off-by: Pavel Gross <p.gross@yadro.com>
2024-12-02 19:33:45 +03:00

37 lines
1 KiB
C#

using System;
using FrostFS.SDK.Client.Mappers.GRPC;
using FrostFS.SDK.Proto.Interfaces;
using FrostFS.Session;
namespace FrostFS.SDK.Client;
public static class RequestConstructor
{
public static void AddMetaHeader(this IRequest request,
string[] xHeaders,
SessionToken? sessionToken = null)
{
if (request is null)
throw new ArgumentNullException(nameof(request));
if (request.MetaHeader is not null)
return;
request.MetaHeader = MetaHeader.Default().ToMessage();
if (sessionToken != null)
request.MetaHeader.SessionToken = sessionToken;
if (xHeaders != null && xHeaders.Length > 0)
{
if (xHeaders.Length % 2 != 0)
throw new ArgumentException("xHeaders with odd length");
for (var i = 0; i < xHeaders.Length; i += 2)
{
request.MetaHeader.XHeaders.Add(new XHeader { Key = xHeaders[i], Value = xHeaders[i + 1] });
}
}
}
}