0.2.0 • Published 5 years ago

@hasnat/rest-fs v0.2.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

rest-fs

restful interface to a filesystem

usage

npm install rest-fs

to install

npm start

starts fileserver on port 3000

npm test

runs various file and folder test

npm start

starts server on port 3000 of your entire system

LOG=true for access log

DEBUG=* for debug info

app = require('express')();
restfs = require('rest-fs')
restfs(app);
app.listen(3000)

To use programmatically, pass in the app into restfs and it will add the routes. you can attach a function to modifyOut to manipulate file output. the function has one argument which is the full filepath and should return path to return

ETags

rest-fs supports ETags by default. Each api endpoint will return a strict ETag header that clients can utilize when making subsequent requests. Please see http://en.wikipedia.org/wiki/HTTP_ETag(this article) for more information on using ETags.

API

GET /path/to/dir/

list contents of directory

optional ?recursive = list recursively default false

returns: list of full file or folder paths (trailing slash tells if dir)

res.body = [ { "fullDirPath" }, ... ]

File Stats

?stats = Return file stats for the directory instead of file listing.

res.body = {
  dev: 16777220,
  mode: 16877,
  nlink: 31,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 604862,
  size: 1054,
  blocks: 0,
  atime: Thu Mar 05 2015 11:38:47 GMT-0800 (PST),
  mtime: Thu Mar 05 2015 10:52:41 GMT-0800 (PST),
  ctime: Thu Mar 05 2015 10:52:41 GMT-0800 (PST)
}

GET /path/to/file

returns contents of file if dir, redirect to dir path

optional ?encoding = default utf8

returns: res.body = { "file content" }

File Stats

?stats = Return file stats for the file instead of file's contents.

res.body = {
  dev: 16777220,
  mode: 16877,
  nlink: 31,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 604862,
  size: 1054,
  blocks: 0,
  atime: Thu Mar 05 2015 11:38:47 GMT-0800 (PST),
  mtime: Thu Mar 05 2015 10:52:41 GMT-0800 (PST),
  ctime: Thu Mar 05 2015 10:52:41 GMT-0800 (PST)
}

POST /path/to/file/or/dir

creates or overwrites file creates dir if it does not exist. renames or moves file if newPath exists

optional body.newpath = if exist, move/rename file to this location. body.clobber = if true will overwrite dest files (default false) body.mkdirp = if true will create path to new location (default false) body.mode = permissions of file (defaults: file 438(0666) dir 511(0777)) body.encoding = default utf8

optional for stream query.clobber = overwrite if exist query.mode = permissions of file (defaults: file 438(0666) dir 511(0777)) query.encoding = default utf8

returns: modified resource. (trailing slash tells if dir)

req.body = { "fullFileOrDirPath" }

PUT /path/to/file

creates file

optional body.mode = permissions of file (438 default 0666 octal) body.encoding = default utf8

returns: modified resource (trailing slash tells if dir)

req.body = { "fullFilePath" }

DEL /path/to/dir/

deletes folder if file returns error

returns:

req.body = {}

DEL /path/to/file

deletes file if folder returns error

returns:

req.body = {}