@idomusha/synology
v1.6.0
Published
A simple wrapper for the Synology FileStation API
Maintainers
Readme
synology-api
A wrapper for the Synology FileStation API, making it easy to call. Unlike other similar libraries, this one supports file uploads.
Fork Notice
This is a fork of ltaoo/synology-api.
Changes from upstream:
v1.5.0
- Fixed list method
v1.6.0
- Replaced
requestwithaxiosto fix critical security vulnerabilities - Translated all comments to English
- Updated dependencies to latest secure versions
Installation
npm install @idomusha/synologyUsage
Init
- Internal IP
const Synology = require('@idomusha/synology');
const synology = new Synology({
protocol: 'http',
host: '192.168.1.4',
port: 5000
});- External URL
const synology = new Synology({
protocol: 'https',
host: 'john.synology.me',
port: 5001
});Login
async function init() {
try {
await synology.Auth.auth({
username: USERNAME,
password: PASSWORD
});
} catch (err) {
console.error(err);
}
}
init();All methods below must be used after successful login.
Upload
await synology.FileStation.upload({
path: '/home',
file: path.join(__dirname, './example.jpg')
// Supports downloading network images
// If the URL doesn't have an extension, you must add the name parameter
// file: 'http://example.com/image.jpg',
// name: 'xxx.jpg',
});Download
await synology.FileStation.download({
path: '/home/6xmt_b.jpg',
to: path.join(__dirname, './image/example1.jpg'),
mode: 'download'
});Search
const data = await synology.FileStation.search({
folder_path: '/home',
pattern: '6x' // filename pattern to search
});
console.log(data);Create Folder
await synology.FileStation.createFolder({
folder_path: '/home',
name: 'test'
});Rename
await synology.FileStation.rename({
path: '/home/6xmt_b.jpg',
name: 'e.jpg'
});Move or Copy
await synology.FileStation.copyMove({
path: '/home/e.jpg',
dest_folder_path: '/home/test1'
});Delete
await synology.FileStation.delete({
path: '/home/test1/e.jpg'
});Example
Create a .env file in the project root with the following content:
ACCOUNT = your account username
PASSWD = your account password
HOST = host like 192.168.1.4
PORT = 5000
NODE_ENV = devThen run node example/index.js. The terminal will display the current request URL and result.
If you see auth success {"data":{"sid":"jiEIqBgVWZuCU1840QMRH4C3AV"},"success":true}, login was successful.
TODO
- [x] Use custom logging instead of console.log
Download
- [ ] Return proper error message when file doesn't exist
References
License
MIT
