using FrostFS.Container; using FrostFS.SDK.ClientV2.Mappers.GRPC; using FrostFS.SDK.Cryptography; using FrostFS.SDK.ModelsV2; using System.Collections.Generic; using System.Threading.Tasks; 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); Verifier.CheckResponse(response); return response.Body.Container.ToModel(); } public async IAsyncEnumerable ListContainersAsync() { var request = new ListRequest { Body = new ListRequest.Types.Body { OwnerId = OwnerId.ToGrpcMessage() } }; request.AddMetaHeader(); request.Sign(_key); var response = await _containerServiceClient.ListAsync(request); Verifier.CheckResponse(response); foreach (var cid in response.Body.ContainerIds) { yield return new ContainerId(Base58.Encode(cid.Value.ToByteArray())); } } 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); Verifier.CheckResponse(response); return new ContainerId(Base58.Encode(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); var response = await _containerServiceClient.DeleteAsync(request); Verifier.CheckResponse(response); } }