71 lines
No EOL
2 KiB
C#
71 lines
No EOL
2 KiB
C#
using FrostFS.Object;
|
|
using FrostFS.SDK.ModelsV2;
|
|
|
|
namespace FrostFS.SDK.ClientV2.Mappers.GRPC;
|
|
|
|
public static class ObjectAttributeMapper
|
|
{
|
|
public static Header.Types.Attribute ToGrpcMessage(this ObjectAttribute attribute)
|
|
{
|
|
return new Header.Types.Attribute
|
|
{
|
|
Key = attribute.Key,
|
|
Value = attribute.Value
|
|
};
|
|
}
|
|
|
|
public static ObjectAttribute ToModel(this Header.Types.Attribute attribute)
|
|
{
|
|
return new ObjectAttribute(attribute.Key, attribute.Value);
|
|
}
|
|
}
|
|
|
|
public static class ObjectHeadMapper
|
|
{
|
|
public static Header ToGrpcMessage(this ObjectHeader header)
|
|
{
|
|
var objTypeName = Enum.GetName(typeof(ObjectType), header.ObjectType);
|
|
if (objTypeName is null)
|
|
{
|
|
throw new ArgumentException($"Unknown ObjectType. Value: '{header.ObjectType}'.");
|
|
}
|
|
|
|
var head = new Header
|
|
{
|
|
Attributes = { },
|
|
ContainerId = header.ContainerId.ToGrpcMessage(),
|
|
ObjectType = Enum.Parse<ObjectType>(objTypeName)
|
|
};
|
|
foreach (var attribute in header.Attributes)
|
|
{
|
|
head.Attributes.Add(attribute.ToGrpcMessage());
|
|
}
|
|
|
|
return head;
|
|
}
|
|
|
|
public static ObjectHeader ToModel(this Header header)
|
|
{
|
|
var objTypeName = Enum.GetName(typeof(ModelsV2.Enums.ObjectType), header.ObjectType);
|
|
if (objTypeName is null)
|
|
{
|
|
throw new ArgumentException($"Unknown ObjectType. Value: '{header.ObjectType}'.");
|
|
}
|
|
|
|
var attributes = new List<ObjectAttribute>();
|
|
foreach (var attribute in header.Attributes)
|
|
{
|
|
attributes.Add(attribute.ToModel());
|
|
}
|
|
|
|
return new ObjectHeader(
|
|
ContainerId.FromHash(header.ContainerId.Value.ToByteArray()),
|
|
Enum.Parse<ModelsV2.Enums.ObjectType>(objTypeName),
|
|
attributes.ToArray()
|
|
)
|
|
{
|
|
Size = (long)header.PayloadLength,
|
|
Version = header.Version.ToModel()
|
|
};
|
|
}
|
|
} |