using FrostFS.Container; using FrostFS.SDK.ClientV2.Mappers.GRPC; using FrostFS.SDK.ModelsV2; namespace FrostFS.SDK.ClientV2; public partial class Client { public async Task GetContainerAsync(ContainerId cid) { var request = new GetRequest { Body = new GetRequest.Types.Body { ContainerId = cid.ToGrpcMessage() }, }; request.AddMetaHeader(); request.Sign(_key); var response = await _containerServiceClient.GetAsync(request); return response.Body.Container.ToModel(); } //TODO: Return iterator public async Task ListContainersAsync() { var request = new ListRequest { Body = new ListRequest.Types.Body { OwnerId = OwnerId.ToGrpcMessage() } }; request.AddMetaHeader(); request.Sign(_key); var response = await _containerServiceClient.ListAsync(request); return response.Body.ContainerIds.Select( cid => ContainerId.FromHash(cid.Value.ToByteArray()) ).ToArray(); } public async Task CreateContainerAsync(ModelsV2.Container container) { var cntnr = container.ToGrpcMessage(); cntnr.OwnerId = OwnerId.ToGrpcMessage(); cntnr.Version = Version.ToGrpcMessage(); var request = new PutRequest { Body = new PutRequest.Types.Body { Container = cntnr, Signature = _key.SignRFC6979(cntnr), } }; request.AddMetaHeader(); request.Sign(_key); var response = await _containerServiceClient.PutAsync(request); return ContainerId.FromHash(response.Body.ContainerId.Value.ToByteArray()); } public async Task DeleteContainerAsync(ContainerId cid) { var request = new DeleteRequest { Body = new DeleteRequest.Types.Body { ContainerId = cid.ToGrpcMessage(), Signature = _key.SignRFC6979(cid.ToGrpcMessage().Value) } }; request.AddMetaHeader(); request.Sign(_key); await _containerServiceClient.DeleteAsync(request); } }