1.0.1 • Published 7 months ago

mongo-db-filesystem-ex v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

mongo-db-filsystem module creates a "window like explorer" tree structure of files and folders in Atlas MongoDB database.

Installation

This is a Node.js module available through the npm registry. Installation is done using the npm install command:

$ npm install mongo-db-filsystem

Usage

Environment variables

The following environment variables are required.

Evironment Variable NameDescription
FILESYSTEM_DATABASE_URLURI connection string could reference a local database during development
ACCESS_TOKEN_SECRETA string generated by running require('crypto').randomBytes(64).toString() in the terminal will work as a secret
REFRESH_TOKEN_SECRETA string generated by running require('crypto').randomBytes(64).toString() in the terminal will work as a secret

Simple usage

const port = process.env.PORT || 3000;
const express = require('express');
const app = express();

require('mongo-db-filsystem')(app);

app.use(fileSystem);
app.use(express.json({ limit: "140mb", extended: true }));

app.listen(port, function () {
  console.log("Listening on port " + port);
})

Configuring mongo-db-filsystem

Options:

  • white_list: "http://127.0.0.1:5500, http://localhost:5000", //cors whitelist. The default: undefined
  • access_token_expiry: "15s", //default: 900s
  • cookie_max_age: 1000*60*60, //default: 1000*60*60*24 (1 day)
  • cookie_secure: false, //default: true

Simple usage with options

const port = process.env.PORT || 3500;
const express = require('express');
const app = express();

const options = {
  white_list: ["http://127.0.0.1:5500", "http://localhost:3000/"],
  access_token_expiry: "15s",
  cookie_max_age: 1000 * 60 * 60,
  cookie_secure: false
};
require('mongo-db-filsystem')(app, options);

app.use(fileSystem);
app.use(express.json({ limit: "140mb", extended: true }));

app.listen(port, function () {
  console.log("Listening on port " + port);
})

REST API Endpoints

mongo-db-filsystem REST API provides many documented endpoints, but also allows you to customize your own.

See endpoints doc for a full documentation of the endpoints.

Here are the endpoints provided by mongo-db-filsystem that perform CRUD operations on resources in REST style.

MethodEndpointDescription
POST/connectConnects a registered user to mongo-db-filsystem
POST/re-connectRe-connects a previously connected user to mongo-db-filsystem
POST/disconnectDis-connects a connected user from mongo-db-filsystem
POST/refresh_tokenRenew the access and refresh tokens of a connected user
POST/registerFsRegister a new user to mongo-db-filsystem
POST/readFileConnects a registered user to mongo-db-filsystem
POST/readStreamRe-connects a previously connected user to mongo-db-filsystem
POST/writeFileDis-connects a connected user from mongo-db-filsystem
POST/appendFileRenew the access and refresh tokens of a connected user
POST/copyFileRegister a new user to mongo-db-filsystem
POST/renameConnects a registered user to mongo-db-filsystem
POST/createFileRe-connects a previously connected user to mongo-db-filsystem
POST/accessDis-connects a connected user from mongo-db-filsystem
DELETE/removeFileRenew the access and refresh tokens of a connected user
DELETE/removeFolderRegister a new user to mongo-db-filsystem
POST/statDis-connects a connected user from mongo-db-filsystem
POST/mkdirRenew the access and refresh tokens of a connected user
GET/configRenew the access and refresh tokens of a connected user
POST/configRenew the access and refresh tokens of a connected user
POST/treeRegister a new user to mongo-db-filsystem

Customizing mongo-db-filsystem REST API

...
const app = express();

const { router, getFileSystem, authenticateToken } = require("./file-system-routes")(app);

router.get("/custom", authenticateToken, (req, res) => {
  const username = req.user.username;
  const fsPromises = getFileSystem(username).promises;
  console.log(fsPromises);
});

app.use(router);
...