Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anandkumarpatel/rest-fs
restful interface to a filesystem.
https://github.com/anandkumarpatel/rest-fs
Last synced: 29 days ago
JSON representation
restful interface to a filesystem.
- Host: GitHub
- URL: https://github.com/anandkumarpatel/rest-fs
- Owner: anandkumarpatel
- License: mit
- Created: 2014-05-07T21:59:06.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2019-11-04T14:49:05.000Z (about 5 years ago)
- Last Synced: 2024-10-31T15:47:27.562Z (about 1 month ago)
- Language: JavaScript
- Size: 104 KB
- Stars: 17
- Watchers: 4
- Forks: 16
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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 falsereturns: 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 utf8returns:
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 utf8returns: 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 utf8returns: modified resource (trailing slash tells if dir)
```
req.body = { "fullFilePath" }
```DEL /path/to/dir/
-----------------
deletes folder
if file returns errorreturns:
```
req.body = {}
```DEL /path/to/file
-----------------
deletes file
if folder returns errorreturns:
```
req.body = {}
```