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(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(); foreach (var attribute in header.Attributes) { attributes.Add(attribute.ToModel()); } return new ObjectHeader( ContainerId.FromHash(header.ContainerId.Value.ToByteArray()), Enum.Parse(objTypeName), attributes.ToArray() ) { Size = (long)header.PayloadLength, Version = header.Version.ToModel() }; } }