Skip to content
This repository has been archived by the owner on Nov 16, 2021. It is now read-only.

Latest commit

 

History

History
76 lines (62 loc) · 3.45 KB

README.md

File metadata and controls

76 lines (62 loc) · 3.45 KB

Storj Uplink Library for Rust

NOTE this repository has been moved to the Storj third-party Github organization and since the move the repository is archived because the development will follow there.

This projects aims to build a Rust crate library for the Storj Uplink Library.

THIS IS WIP, there is not any estimation of time nor a commitment when this Rust binding will have all the functionalities, so don't use it for any non-pet project.

Background

There is already a Rust binding Storj Uplink Library which is auto-generated by Rust Bindgen from the official Storj Uplink C library.

The result of Bindgen is a Rust binding which IS NOT IDIOMATIC and requires using UNSAFE everywhere.

This crate offers an idiomatic and safe (you don't have to use the unsafe keyword for using it) Rust crate library based on the Bindgen former.

Implementation progress

Entities:

Integration tests:

  • Access Grant.
    • Create.
    • Request an Access Grant with passphrase.
    • Parse one.
    • Share one.
    • Override an encryption key of a specific Bucket and prefix.
  • Project
    • Create a Bucket.
    • Try to create a Bucket which already exists.
    • Ensure a Bucket, an existing and non-existing one.
    • Stat a Bucket.
    • List Buckets.
    • Upload an Object.
    • Upload an Object with Custom Metadata.
    • Download an Object.
    • Stat an Object.
    • List Objects with and without System and Custom Metadata.
    • Delete an Object.
    • Delete an empty Bucket.
    • Delete a Bucket with objects.

General:

  • Add a CI solution (Travis, Github actions, etc.) for running tests, linters on every PR and when something is merge into the main branch.
  • Add general documentation about the Storj network and its entities mimicking the original Go Uplink package.
  • Add some documentation about the crate design and implementation if the documentation of each module, types, functions, etc., aren't enough.