frostfs-sdk-csharp/src/FrostFS.SDK.ClientV2/RequestConstructor.cs
Ivan Pchelintsev 9b5b2eb5dc [#1] Optimized imports
Signed-off-by: Ivan Pchelintsev <i.pchelintsev@yadro.com>
2024-05-22 14:29:20 +03:00

40 lines
1.2 KiB
C#

using System.Security.Cryptography;
using FrostFS.Refs;
using FrostFS.SDK.ClientV2.Mappers.GRPC;
using FrostFS.SDK.ModelsV2;
using FrostFS.Session;
namespace FrostFS.SDK.ClientV2;
public static class RequestConstructor
{
public static void AddMetaHeader(this IRequest request, RequestMetaHeader? metaHeader = null)
{
if (request.MetaHeader is not null) return;
metaHeader ??= MetaHeader.Default().ToGrpcMessage();
request.MetaHeader = metaHeader;
}
public static void AddObjectSessionToken(
this IRequest request,
SessionToken sessionToken,
ContainerID cid,
ObjectID oid,
ObjectSessionContext.Types.Verb verb,
ECDsa key)
{
if (request.MetaHeader.SessionToken is not null) return;
request.MetaHeader.SessionToken = sessionToken;
var ctx = new ObjectSessionContext
{
Target = new ObjectSessionContext.Types.Target
{
Container = cid,
Objects = { oid }
},
Verb = verb
};
request.MetaHeader.SessionToken.Body.Object = ctx;
request.MetaHeader.SessionToken.Signature = key.SignMessagePart(request.MetaHeader.SessionToken.Body);
}
}