2021-03-03 17:36:14 -06:00
2021-03-03 17:36:14 -06:00
2021-03-03 11:07:02 -06:00
2021-03-03 15:22:22 -06:00
2021-03-03 11:18:33 -06:00
2021-03-03 15:22:22 -06:00
2021-03-03 12:35:21 -06:00
2021-03-03 11:07:02 -06:00

About

repertory-js is a Node.js module for interfacing with repertory's remote mount API.

Installing

npm i @scottg1/repertory-js

Repertory Configuration

A Repertory mount must be active with the EnableRemoteMount setting enabled. RemoteToken should also be set to a strong, random password.

Enabling Sia Remote Mount API on Windows Systems

    repertory.exe -unmount
    repertory.exe -set RemoteMount.EnableRemoteMount true
    repertory.exe -set RemoteMount.RemoteToken "my password"
    
    [Optional - change listening port]
    repertory.exe -set RemoteMount.RemotePort 202020

Enabling Sia Remote Mount API on *NIX Systems

    ./repertory -unmount
    ./repertory -set RemoteMount.EnableRemoteMount true
    ./repertory -set RemoteMount.RemoteToken "my password"
    
    [Optional - change listening port]
    ./repertory -set RemoteMount.RemotePort 202020

Skynet and ScPrime Mounts

  • For Skynet mounts, add -sk argument to all commands listed above.
  • For ScPrime mounts, add -sp argument to all commands listed above.

Example API Usage

const rep = require('@scottg1/repertory-js');


// Repertory host settings
const MY_HOST_OR_IP = 'localhost';
const MY_PORT = 20000;
const MY_TOKEN = 'password';

// Progress callback for uploads / downloads
const progress_cb = (local_path, remote_path, progress, completed) => {
  console.log(local_path, remote_path, progress, completed);
}

/*
    Step 1. Create a connection pool (recommended)
*/
const conn = await rep.create_pool(8, MY_HOST_OR_IP, MY_PORT, MY_TOKEN);

// Or create a single connection for light operations
/*
  const conn = await rep.connect(MY_HOST_OR_IP, MY_PORT, MY_TOKEN);
*/


/*
    Step 2. Create an 'api' instance using the connection pool / connection
*/
const api = rep.create_api(conn);


/*
  Step 3. Use 'api'
*/
//                          *********** Directory Operations ***********                          //
// List directory contents
await api.directory.list('/', async (remote_path, page_count, get_page) => {
  for (let i = 0; i < page_count; i++) {
    const items = await get_page(i); // Always 'await'
    console.log(items);
  }
});

// Create new directory
await api.directory.create('/test');

// Remove existing directory
await api.directory.remove('/test')

//                            *********** File Operations ***********                             //
// Delete a file
await api.file.delete('/my_file.txt')

// Download a remote file
await api.file.download('/my_file.txt', 'C:\\my_file.txt', progress_cb);

// Download a remote file and overwrite existing local file if it exists
await api.file.download('/my_file.txt', 'C:\\my_file.txt', progress_cb, true);

// Resume failed download
await api.file.download('/my_file.txt', 'C:\\my_file.txt', progress_cb, false, true);

// Upload a local file
await api.file.upload('C:\\my_file.txt', '/my_file.txt', progress_cb);
Description
No description provided
Readme 5.2 MiB
Languages
JavaScript 100%