WIP: Java implementation of FrostFS SDK
Find a file
2024-07-24 15:49:11 +03:00
.forgejo/workflows Initial commit 2024-05-23 10:51:32 +03:00
client [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
cryptography [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
modelsV2 [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
protosV2 [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
.gitignore [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
CONTRIBUTING.md [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
LICENSE Initial commit 2024-05-23 10:51:32 +03:00
pom.xml [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00
README.md [#1] Define SDK structure, add operations with container and object 2024-07-24 15:49:11 +03:00

frostfs-sdk-java

Java 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

import info.FrostFS.sdk.enums.BasicAcl;
import info.FrostFS.sdk.jdo.Container;
import info.FrostFS.sdk.jdo.netmap.PlacementPolicy;
import info.FrostFS.sdk.jdo.netmap.Replica;
import info.FrostFS.sdk.services.impl.FrostFSClient;

public class ContainerExample {

    public void example() {
        Client client = new Client( < your_key >);
        GrpcClient grpcClient = new GrpcClient( < your_host >);
        FrostFSClient frostFSClient = new FrostFSClient(grpcClient, client);

        // Create container
        var placementPolicy = new PlacementPolicy(true, new Replica[]{new Replica(1)});
        var containerId = frostFSClient.createContainerAsync(new Container(BasicAcl.PUBLIC_RW, placementPolicy));

        // Get container
        var container = frostFSClient.getContainerAsync(containerId);

        // List containers
        var containerIds = frostFSClient.listContainersAsync();

        // Delete container
        frostFSClient.deleteContainerAsync(containerId);
    }
}

Object

import info.FrostFS.sdk.enums.ObjectType;
import info.FrostFS.sdk.jdo.ContainerId;
import info.FrostFS.sdk.jdo.ObjectAttribute;
import info.FrostFS.sdk.jdo.ObjectFilter;
import info.FrostFS.sdk.jdo.ObjectHeader;
import info.FrostFS.sdk.services.impl.FrostFSClient;

import java.io.FileInputStream;
import java.io.IOException;

public class ObjectExample {

    public void example() {
        Client client = new Client( < your_key >);
        GrpcClient grpcClient = new GrpcClient( < your_host >);
        FrostFSClient frostFSClient = new FrostFSClient(grpcClient, client);

        // Put object
        info.FrostFS.sdk.jdo.ObjectId objectId;
        try (FileInputStream fis = new FileInputStream("cat.jpg")) {
            var cat = new ObjectHeader(
                    containerId, ObjectType.REGULAR, new ObjectAttribute[]{new ObjectAttribute("Filename", "cat.jpg")}
            );
            objectId = frostFSClient.putObjectAsync(cat, fis);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        // Get object
        var obj = frostFSClient.getObjectAsync(containerId, objectId);

        // Get object header
        var objectHeader = frostFSClient.getObjectHeadAsync(containerId, objectId);

        // Search regular objects
        var objectIds = frostFSClient.searchObjectsAsync(containerId, ObjectFilter.RootFilter());
    }
}