From 8b56beb7cbcfc1b7e694c8b023ef99049d25c3c2 Mon Sep 17 00:00:00 2001 From: Olamide Idowu Date: Wed, 22 Sep 2021 14:31:37 +0100 Subject: [PATCH 1/2] FEATURE: Save User Tools --- .../components/Apps/GoogleDrive/Modal/Form.js | 90 +++++++++++-------- server/src/config/routing.js | 7 +- server/src/controllers/googledrive/index.js | 3 +- server/src/controllers/tools.js | 11 ++- server/src/routes/externaltools.js | 1 + server/yarn.lock | 7 +- 6 files changed, 74 insertions(+), 45 deletions(-) diff --git a/client/src/components/Apps/GoogleDrive/Modal/Form.js b/client/src/components/Apps/GoogleDrive/Modal/Form.js index 5b5e978a..97152c10 100644 --- a/client/src/components/Apps/GoogleDrive/Modal/Form.js +++ b/client/src/components/Apps/GoogleDrive/Modal/Form.js @@ -1,45 +1,65 @@ -import React from 'react'; +import React from "react"; import styles from "../GoogleDrive.module.css"; - +import axios from "axios"; class NameForm extends React.Component { - constructor(props) { - super(props); - this.state = { value: '' }; + constructor(props) { + super(props); + this.state = { value: "" }; - this.handleChange = this.handleChange.bind(this); - this.handleSubmit = this.handleSubmit.bind(this); - } + this.handleChange = this.handleChange.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + } - handleChange(event) { - this.setState({ value: event.target.value }); - } + handleChange(event) { + this.setState({ value: event.target.value }); + } - handleSubmit(event) { - alert('A comment was submitted: ' + this.state.value); - event.preventDefault(); - } + handleSubmit(event) { + alert("A comment was submitted: " + this.state.value); + event.preventDefault(); + axios + .post("/addtool", { + comment: this.state.value, + tool: "googledrive", + }) + .then((resp) => { + alert("A comment was submitted: " + resp); + }) + .catch((error) => { + alert("An error occured: " + error); + }); + } - render() { - return ( -
-
- - -
- -
-
-
- ); - } + render() { + return ( +
+
+ + +
+ +
+
+
+ ); + } } -export default NameForm \ No newline at end of file +export default NameForm; diff --git a/server/src/config/routing.js b/server/src/config/routing.js index d06d1763..48827ab4 100644 --- a/server/src/config/routing.js +++ b/server/src/config/routing.js @@ -2,6 +2,11 @@ const express = require("express"); const morgan = require("morgan"); const compression = require("compression"); const cors = require("cors"); +const corsOptions = { + origin: "*", + credentials: true, //access-control-allow-credentials:true + optionSuccessStatus: 200, +}; const { NotFoundError } = require("../lib/errors"); const errorMiddleware = require("../middlewares/error"); @@ -14,7 +19,7 @@ module.exports = (app) => { app.use(morgan("dev")); app.use(express.json()); app.use(express.urlencoded({ extended: false })); - app.use(cors()); + app.use(cors(corsOptions)); app.use("/api", routes); diff --git a/server/src/controllers/googledrive/index.js b/server/src/controllers/googledrive/index.js index b3fbef79..7b3f44ff 100644 --- a/server/src/controllers/googledrive/index.js +++ b/server/src/controllers/googledrive/index.js @@ -27,7 +27,6 @@ class GoogleDriveController { ); } async getFilesList(req, res) { - console.log(REDIRECT_URI); try { const r = await drive.files.list(); const { data } = r; @@ -41,7 +40,7 @@ class GoogleDriveController { } } async getData(req, res) { - const resp = await fetch('https://jsonplaceholder.typicode.com/posts'); + const resp = await fetch("https://jsonplaceholder.typicode.com/posts"); const json = await resp.json(); res.send(response("Data info returned successfully", json)); } diff --git a/server/src/controllers/tools.js b/server/src/controllers/tools.js index 7ce03807..0fb24085 100644 --- a/server/src/controllers/tools.js +++ b/server/src/controllers/tools.js @@ -1,6 +1,9 @@ const tools = require("../services/tools"); const response = require("../utils/response"); +const fs = require("fs"); +//store +const toolsData = []; class ToolsController { async getAllAvailableTools(req, res) { const origin = req.headers.referer || req.headers.host; @@ -12,11 +15,17 @@ class ToolsController { async getRecommendedTools(req, res) { const origin = req.headers.referer || req.headers.host; const recommendedTools = await tools.getRecommendedTools(origin); - res.send( response("Recommended Tools returned successfully", recommendedTools) ); } + async addTool(req, res) { + const userTools = req.body; + const jsonData = JSON.stringify(userTools, null, 2); + res.send(response("Tool added successfully")); + + fs.writeFile("userTools.json", jsonData); + } } module.exports = new ToolsController(); diff --git a/server/src/routes/externaltools.js b/server/src/routes/externaltools.js index e28395e0..9daf8969 100644 --- a/server/src/routes/externaltools.js +++ b/server/src/routes/externaltools.js @@ -4,6 +4,7 @@ const externaltools = require("../controllers/tools"); module.exports = function () { router.get("/tools", externaltools.getAllAvailableTools); router.get("/tools/recommended", externaltools.getRecommendedTools); + router.get("/tools/addtools", externaltools.addTool); return router; }; diff --git a/server/yarn.lock b/server/yarn.lock index 00608b0a..86eb11e8 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -2665,12 +2665,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.14: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lodash@^4.17.21: +lodash@^4.17.14, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== From c847a496dfa0c22f43683f050b0c816059e54c83 Mon Sep 17 00:00:00 2001 From: Olamide Idowu Date: Wed, 22 Sep 2021 23:18:59 +0100 Subject: [PATCH 2/2] FEATURE: Get list of tools && Add tool(s) --- .../components/Apps/GoogleDrive/Modal/Form.js | 4 +- server/src/controllers/tools.js | 57 +++++++++++++++++-- server/src/routes/externaltools.js | 3 +- server/src/routes/googledrive/index.js | 3 +- 4 files changed, 56 insertions(+), 11 deletions(-) diff --git a/client/src/components/Apps/GoogleDrive/Modal/Form.js b/client/src/components/Apps/GoogleDrive/Modal/Form.js index 97152c10..27c80399 100644 --- a/client/src/components/Apps/GoogleDrive/Modal/Form.js +++ b/client/src/components/Apps/GoogleDrive/Modal/Form.js @@ -17,10 +17,10 @@ class NameForm extends React.Component { } handleSubmit(event) { - alert("A comment was submitted: " + this.state.value); + // alert("A comment was submitted: " + this.state.value); event.preventDefault(); axios - .post("/addtool", { + .post("/tools/addtools", { comment: this.state.value, tool: "googledrive", }) diff --git a/server/src/controllers/tools.js b/server/src/controllers/tools.js index 0fb24085..e2553bd8 100644 --- a/server/src/controllers/tools.js +++ b/server/src/controllers/tools.js @@ -1,5 +1,6 @@ const tools = require("../services/tools"); const response = require("../utils/response"); +const axios = require("axios"); const fs = require("fs"); //store @@ -8,7 +9,6 @@ class ToolsController { async getAllAvailableTools(req, res) { const origin = req.headers.referer || req.headers.host; const availableTools = await tools.getAll(req.query, origin); - res.send(response("Available Tools returned successfully", availableTools)); } @@ -19,12 +19,57 @@ class ToolsController { response("Recommended Tools returned successfully", recommendedTools) ); } - async addTool(req, res) { - const userTools = req.body; - const jsonData = JSON.stringify(userTools, null, 2); - res.send(response("Tool added successfully")); + async getOrganizationTools(req, res) { + const { plugin_id, coll_name, org_id } = req.body; + axios + .get( + `https://api.zuri.chat/data/read/${plugin_id}/${coll_name}/${org_id}` + ) + .then((resp) => { + res.send(resp.data); + }) + .catch((err) => { + res.status(500).json({ + statusCode: 500, + message: err.message, + }); + }); + } - fs.writeFile("userTools.json", jsonData); + async addTool(req, res) { + const options = { + headers: { + "content-type": "application/json", + "cache-control": "no-cache", + }, + }; + axios + .post( + "https://api.zuri.chat/v1/data/write", + { + plugin_id: req.body.plugin_id, + organization_id: req.body.organization_id, + collection_name: "organization_tools", + payload: { + plugin_id: req.body.plugin_id, + organization_id: req.body.organization_id, + message: req.body.message, + }, + bulk_write: false, + object_id: "", + filter: {}, + }, + options + ) + .then((resp) => { + res.send("This tool has been added successfully"); + }) + .catch((err) => { + res.status(500).json({ + statusCode: 500, + message: err.message, + }); + }); } } diff --git a/server/src/routes/externaltools.js b/server/src/routes/externaltools.js index 9daf8969..33c210a2 100644 --- a/server/src/routes/externaltools.js +++ b/server/src/routes/externaltools.js @@ -4,7 +4,8 @@ const externaltools = require("../controllers/tools"); module.exports = function () { router.get("/tools", externaltools.getAllAvailableTools); router.get("/tools/recommended", externaltools.getRecommendedTools); - router.get("/tools/addtools", externaltools.addTool); + router.get("/tools/organizationtools", externaltools.getOrganizationTools); + router.post("/tools/addtools", externaltools.addTool); return router; }; diff --git a/server/src/routes/googledrive/index.js b/server/src/routes/googledrive/index.js index 8af137ce..aca197f5 100644 --- a/server/src/routes/googledrive/index.js +++ b/server/src/routes/googledrive/index.js @@ -4,8 +4,7 @@ const googleDrvieController = require("../../controllers/googledrive/index"); module.exports = function () { router.get("/googledrive/info", googleDrvieController.index); - router.get("/googledrive/data", googleDrvieController.getData) - + router.get("/googledrive/data", googleDrvieController.getData); router.get("/googledrive/get-files-list", googleDrvieController.getFilesList); return router; };