diff --git a/package-lock.json b/package-lock.json index fc9fff3..6a0c2a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rclone-api", - "version": "1.0.10", + "version": "1.0.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "rclone-api", - "version": "1.0.10", + "version": "1.0.14", "license": "ISC", "dependencies": { "axios": "^0.21.1" diff --git a/package.json b/package.json index c786a24..bda7ea6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rclone-api", - "version": "1.0.10", + "version": "1.0.14", "description": "Java Script bindings for rclone rc api", "main": "lib/index.js", "scripts": { diff --git a/src/endpoint.js b/src/endpoint.js index 68cc8a0..734090a 100644 --- a/src/endpoint.js +++ b/src/endpoint.js @@ -131,5 +131,22 @@ const urls = { * Transferred jobs for rclone. */ transferred: 'core/transferred', + + /** + * getSize of a fs + */ + getSize: 'operations/size', + + /** + * This deletes entire stats group. + */ + statsDelete: 'core/stats-delete', + + + /** + * This clears counters, errors and finished transfers for all stats or specific stats group if group is provided. + */ + statsReset: 'core/stats-reset', + }; export default urls; diff --git a/src/index.js b/src/index.js index 9be4cb0..925ceea 100644 --- a/src/index.js +++ b/src/index.js @@ -6,9 +6,15 @@ import {addColonAtLast, isLocalRemoteName} from "./tools"; * getStats returns the current rclone stats. * @returns {Promise} */ -export const getStats = () => { +export const getStats = (group) => { + let data = {}; + if (group) { + data = { + group + }; + }; return new Promise((resolve, reject) => { - axiosInstance.post(urls.stats).then(res => { + axiosInstance.post(urls.stats, data).then(res => { resolve(res.data); }, error => { reject(error); @@ -118,7 +124,7 @@ export const getFsInfo = (remoteName) => { * @param remotePath {string} Name of the path in the remote * @returns {Function} */ -export const getFilesList = (fs, remotePath) => { +export const getFilesList = (fs, remotePath, options = {}) => { return new Promise((resolve, reject) => { if(!fs || fs === ""){ reject("Invalid fs specified"); @@ -131,7 +137,8 @@ export const getFilesList = (fs, remotePath) => { axiosInstance.post(urls.getFilesList, { fs, - remote: remotePath + remote: remotePath, + opt: options }).then(res => { resolve(res.data); }, error => { @@ -351,12 +358,78 @@ export const coreCommand = ( arg, opt) => { * getTransferredStats returns transferred job stats. * @returns {Promise} */ - export const getTransferredStats = () => { + export const getTransferredStats = (group) => { + let data = {}; + if (group) { + data = { + group + }; + }; return new Promise((resolve, reject) => { - axiosInstance.post(urls.transferred).then(res => { + axiosInstance.post(urls.transferred, data).then(res => { resolve(res.data); }, error => { reject(error); }) }) } + + +/** + * stopJob stops a job with the specified jobId. + * @returns {Promise} + */ + export const stopJob = (jobId) => { + let data = {}; + if (jobId) { + data = { + jobid: jobId, + }; + }; + return new Promise((resolve, reject) => { + axiosInstance.post(urls.stopJob, data).then(res => { + resolve(res.data); + }, error => { + reject(error); + }) + }) +} + +export const getSize = (srcFs, srcRemote) => { + let data = { + fs: `${srcFs}${srcRemote ? srcRemote : ''}` + }; + return new Promise((resolve, reject) => { + axiosInstance.post(urls.getSize, data).then(res => { + resolve(res.data); + }, error => { + reject(error); + }) + }) +} + +export const statsDelete = (group) => { + let data = { + group + }; + return new Promise((resolve, reject) => { + axiosInstance.post(urls.statsDelete, data).then(res => { + resolve(res.data); + }, error => { + reject(error); + }) + }) +} + +export const statsReset = (group) => { + let data = { + group + }; + return new Promise((resolve, reject) => { + axiosInstance.post(urls.statsReset, data).then(res => { + resolve(res.data); + }, error => { + reject(error); + }) + }) +} \ No newline at end of file