using System; using System.Collections.Generic; using FrostFS.SDK.ModelsV2; namespace FrostFS.SDK.ClientV2.Extensions; public static class ObjectExtensions { public static ModelsV2.Object SetPayloadLength(this ModelsV2.Object obj, ulong length) { obj.Header.PayloadLength = length; return obj; } public static ModelsV2.Object AddAttribute(this ModelsV2.Object obj, string key, string value) { obj.AddAttribute(new ObjectAttribute(key, value)); return obj; } public static ModelsV2.Object AddAttribute(this ModelsV2.Object obj, ObjectAttribute attribute) { obj.Header.Attributes.Add(attribute); return obj; } public static ModelsV2.Object AddAttributes(this ModelsV2.Object obj, IEnumerable attributes) { obj.Header.Attributes.AddRange(attributes); return obj; } public static ModelsV2.Object SetSplit(this ModelsV2.Object obj, Split split) { obj.Header.Split = split; return obj; } public static LinkObject AddChildren(this LinkObject linkObject, IEnumerable objectIds) { linkObject.Header.Split!.Children.AddRange(objectIds); return linkObject; } public static ModelsV2.Object CalculateObjectId(this ModelsV2.Object obj) { if (obj.Payload == null) throw new MissingFieldException("Payload cannot be null"); if (obj.Header == null) throw new MissingFieldException("Header cannot be null"); return obj; } }