This repository contains the JavaScript SDK for Gateway3, an decentralized IPFS gateway. The Gateway3 SDK provides a simple and easy-to-use interface to interact with IPFS, enabling developers to build scalable and distributed applications.
- Node.js v14.0.0 or above, or modern web browsers (Chrome 60+, Firefox 53+, Safari 10.1+, Edge 15+)
- Access key and secret from Gateway3
To install the IPFS Gateway SDK, use the following command:
npm install gw3-sdk
Import the IPFS Gateway SDK in your JavaScript project:
import { Client } from 'gw3-sdk'
Use new Client
to create a new Gateway3 client with the provided access key and access secret.
Here's a simple usage example:
import { Client } from 'gw3-sdk';
let client = new Client('YOUR-ACCESS-KEY', 'YOUR-ACCESS-SECRET');
// Replace 'YOUR-FILE' with the file you want to upload
let file = 'YOUR-FILE';
let hooks = {
onProgress: (event) => console.log(`Upload progress: ${event.percent}%`),
onSuccess: (body) => {
console.log('Upload success', body);
// After file is uploaded, pin the file using its CID.
client.addPin(body.cid)
.then(() => console.log(`File with CID ${body.cid} has been pinned successfully.`))
.catch((error) => console.log(`Error in pinning file with CID ${body.cid}:`, error));
},
onError: (error) => console.log('Upload error', error),
};
client.uploadFile(file, hooks);
Uploads the given data to Gateway3 and returns the corresponding CID.
async function uploadFile(file: File, hooks?: Hooks) : Promise<{ cid: string }>
interface Hooks {
onProgress?: (event: ProgressEvent) => void
onSuccess?: (body: any) => void
onError?: (error: Error) => void
}
interface ProgressEvent {
percent?: number
}
Retrieves data from the Gateway3 for the given CID.
async function getIpfs(cid: string)
Requests Gateway3 to pin the given CID.
async function addPin(cid: string)
Requests Gateway3 to unpin the given CID.
async function removePin(cid: string)
If you need help with using the SDK, or have any questions or issues, you can:
This project is licensed under the MIT License. See the LICENSE file for more information.