tspace-nfs
![NPM downloads](https://img.shields.io/npm/dm/tspace-nfs.svg)
tspace-nfs is a NFS stands for Network File System and provides both server and client capabilities for accessing files over a network.
Install
Install with npm:
npm install tspace-nfs --save
Basic Usage
Server
import { NfsServer } from "tspace-nfs";
new NfsServer()
.onCredentials(async ({ token , secret , bucket }) => {
const lists = [
{
token: 'token-dev',
secret: 'secret-dev',
bucket : 'dev'
}
]
return lists.some(list => list.bucket === bucket && list.secret === secret && list.token === token)
})
.defaultPage(`<b> hello nfs-server! </b>`)
.directory('nfs')
.credentials({
expired : 1000 * 60 * 60 * 24,
secret : 'credential-secret'
})
fileExpired(60 * 15)
.listen(8000 , ({ port }) => console.log(`Server is running on port http://localhost:${port}`))
Client
import { NfsClient } from "tspace-nfs";
const nfs = new NfsClient({
token : '<YOUR TOKEN>',
secret : '<YOUR SECRET>',
bucket : '<YOUR BUCKET>',
url : '<YOUR URL>'
})
.onError((err, nfs) => {
console.log('nfs client failed to connect')
console.log(err.message)
nfs.quit()
})
.onConnect((nfs) => {
console.log('nfs client connected')
})
(async () => {
const fileDirectory = 'my-cat.png'
const url = await nfs.toURL(fileDirectory , { download : false })
const base64 = await nfs.toBase64(fileDirectory)
const stream = await nfs.toStream(fileDirectory)
const file = files[0]
await nfs.upload({
file : file.tempFilePath,
name : 'my-video.mp4',
folder : 'my-folder'
})
await nfs.uploadBase64({
base64 : Buffer.from(file.tempFilePath).toString('base64'),
name : 'my-video.mp4',
folder : 'my-folder'
})
const deleted = await nfs.delete(fileDirectory)
const storage = await nfs.storage()
})()