@hasnat/rest-fs

    0.2.0 • Public • Published

    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 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 = {}
    

    Install

    npm i @hasnat/rest-fs

    DownloadsWeekly Downloads

    0

    Version

    0.2.0

    License

    MIT

    Unpacked Size

    75.5 kB

    Total Files

    18

    Last publish

    Collaborators

    • hasnat