JS & TypeScript
Control Rclone from JavaScript and TypeScript using the remote control HTTP API.
JavaScript and TypeScript can interact with Rclone's remote control API using the native fetch API or libraries like Axios.
Make sure to configure CORS properly if calling the API from a browser.
Usage
Using the native fetch API:
fetch('http://localhost:5572/')
.then(response => response.json())
.then(data => {
console.log(data);
});Or with async/await:
const response = await fetch('http://localhost:5572/');
const data = await response.json();
console.log(data);Using Axios:
import axios from 'axios';
const response = await axios.get('http://localhost:5572/');
console.log(response.data);Libraries
rclone-sdk
A fully typed SDK for Rclone's remote control API, built on OpenAPI. Works with vanilla fetch, React Query, and SWR.
npm install rclone-sdkimport createRCDClient from 'rclone-sdk'
const rcd = createRCDClient({ baseUrl: 'http://localhost:5572' })
// List all configured remotes
const { data: remotes } = await rcd.POST('/config/listremotes')
console.log(remotes?.remotes) // ['gdrive', 'dropbox', 's3']
// List files in a remote
const { data: files } = await rcd.POST('/operations/list', {
body: { fs: 'gdrive:', remote: 'Documents' }
})
console.log(files?.list)
// Get storage info for a remote
const { data: about } = await rcd.POST('/operations/about', {
body: { fs: 'gdrive:' }
})
console.log(`Used: ${about?.used} / ${about?.total}`)With React Query:
import createRCDQueryClient from 'rclone-sdk/query'
const rq = createRCDQueryClient({ baseUrl: 'http://localhost:5572' })
function RemotesList() {
const { data, isLoading, error } = rq.useQuery('post', '/config/listremotes')
if (isLoading) return <div>Loading...</div>
if (error) return <div>Error: {error.message}</div>
return (
<ul>
{data?.remotes?.map(remote => (
<li key={remote}>{remote}</li>
))}
</ul>
)
}How is this guide?