WIP: C# implementation of FrostFS SDK
Find a file
Ivan Pchelintsev ae3fc419a4 [#1] Add response checker
Signed-off-by: Ivan Pchelintsev <i.pchelintsev@yadro.com>
2024-05-22 14:29:20 +03:00
.forgejo/workflows Add empty repo 2024-04-24 14:59:21 +03:00
src [#1] Add response checker 2024-05-22 14:29:20 +03:00
.gitignore Add empty repo 2024-04-24 14:59:21 +03:00
FrostFS.SDK.sln [#1] Remove consoleApp from project 2024-05-22 14:29:20 +03:00
LICENSE Initial commit 2024-04-24 09:46:03 +00:00
README.md [#1] Add examples 2024-05-22 14:29:20 +03:00

frostfs-sdk-csharp

C# implementation of FrostFS SDK.

Prerequisites

Get the key for your wallet

  1. Get the address
cat <path_to_your_wallet> | jq .accounts[0].address | tr -d '"'
  1. Get the key
neo-go wallet export -w <path_to_your_wallet> -d <address_from_p1>

Example usage

Container

using FrostFS.SDK.ClientV2;
using FrostFS.SDK.ModelsV2;
using FrostFS.SDK.ModelsV2.Enums;
using FrostFS.SDK.ModelsV2.Netmap;

var fsClient = new Client(<your_key>, <your_host>);

// List containers
var containersIds = await fsClient.ListContainersAsync();

// Create container
var placementPolicy = new PlacementPolicy(true, new Replica(1));
var containerId = await fsClient.CreateContainerAsync(
    new Container(
        BasicAcl.PublicRW, 
        placementPolicy
    )
);

// Get container
var container = await fsClient.GetContainerAsync(cId);

// Delete container
await fsClient.DeleteContainerAsync(containerId);

Object

using FrostFS.SDK.ClientV2;
using FrostFS.SDK.ModelsV2;
using FrostFS.SDK.ModelsV2.Enums;
using FrostFS.SDK.ModelsV2.Netmap;

var fsClient = new Client(<your_key>, <your_host>);

// Search regular objects
var objectsIds = await fsClient.SearchObjectAsync(
    cId, 
    ObjectFilter.RootFilter()
);

// Put object
var f = File.OpenRead("cat.jpg");
var cat = new ObjectHeader(
    containerId: cId,
    type: ObjectType.Regular,
    new ObjectAttribute("Filename", "cat.jpg")
);
var oId = await fsClient.PutObjectAsync(cat, f);

// Get object header
var objHeader = await fsClient.GetObjectHeadAsync(cId, oId);

// Get object
var obj = await fsClient.GetObjectAsync(cId, oId);