pinata-sdk

Crates.iopinata-sdk
lib.rspinata-sdk
version1.1.0
sourcesrc
created_at2020-04-05 03:15:09.760868
updated_at2022-03-22 19:25:14.072789
descriptionRust SDK for the Pinata IPFS platform
homepage
repositoryhttps://github.com/perfectmak/pinata-sdk
max_upload_size
id226476
size45,119
Perfect Makanju (perfectmak)

documentation

https://docs.rs/pinata-sdk

README

pinata-sdk

Rust pinata-sdk

The pinata_sdk provides the easieset path for interacting with the Pinata API.

Setup

Add the crate as a dependency to your codebase

[dependencies]
pinata_sdk = "1.0.0"

Initializing the API

use pinata_sdk::PinataApi;

let api = PinataApi::new("api_key", "secret_api_key").unwrap();

// test that you can connect to the API:
let result = api.test_authentication().await;
if let Ok(_) = result {
  // credentials are correct and other api calls can be made
}

Usage

1. Pinning a file

Send a file to pinata for direct pinning to IPFS.

use pinata_sdk::{ApiError, PinataApi, PinByFile};

let api = PinataApi::new("api_key", "secret_api_key").unwrap();

let result = api.pin_file(PinByFile::new("file_or_dir_path")).await;

if let Ok(pinned_object) = result {
  let hash = pinned_object.ipfs_hash;
}

If a directory path is used to construct PinByFile, then pin_file() will upload all the contents of the file to be pinned on pinata.

2. Pinning a JSON object

You can send a JSON serializable to pinata for direct pinning to IPFS.

use pinata_sdk::{ApiError, PinataApi, PinByJson};
use std::collections::HashMap;

let api = PinataApi::new("api_key", "secret_api_key").unwrap();

// HashMap derives serde::Serialize
let mut json_data = HashMap::new();
json_data.insert("name", "user");

let result = api.pin_json(PinByJson::new(json_data)).await;

if let Ok(pinned_object) = result {
  let hash = pinned_object.ipfs_hash;
}

3. Unpinning

You can unpin using the PinataApi::unpin() function by passing in the CID hash of the already pinned content.

Contribution Guide

Feel free to contribute. Please ensure that an issue is exists that describes the feature or bugfix you are planning to contribute.

License

MIT OR Apache-2.0

Commit count: 12

cargo fmt