From 03d1d60660fc46421ef6ad9cee8493dd884e309a Mon Sep 17 00:00:00 2001 From: sabhas Date: Mon, 25 Oct 2021 05:51:46 +0000 Subject: [PATCH] fix(api-cdrive-oller): throw erow error when file not found --- api/src/controllers/Drive.ts | 19 +++++++++++++++++++ api/src/controllers/index.ts | 2 +- api/src/controllers/sasjsDrive.ts | 15 --------------- api/src/routes/index.ts | 30 +++++++++++++++++++++++++----- 4 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 api/src/controllers/Drive.ts delete mode 100644 api/src/controllers/sasjsDrive.ts diff --git a/api/src/controllers/Drive.ts b/api/src/controllers/Drive.ts new file mode 100644 index 0000000..9ffcc03 --- /dev/null +++ b/api/src/controllers/Drive.ts @@ -0,0 +1,19 @@ +import { fileExists, readFile, createFile } from '@sasjs/utils' + +export class DriveController { + async readFile(filePath: string) { + await this.validateFilePath(filePath) + return await readFile(filePath) + } + + async updateFile(filePath: string, fileContent: string) { + await this.validateFilePath(filePath) + return await createFile(filePath, fileContent) + } + + private async validateFilePath(filePath: string) { + if (!(await fileExists(filePath))) { + throw 'DriveController: File does not exists.' + } + } +} diff --git a/api/src/controllers/index.ts b/api/src/controllers/index.ts index ca5fda4..c64496d 100644 --- a/api/src/controllers/index.ts +++ b/api/src/controllers/index.ts @@ -1,5 +1,5 @@ export * from './deploy' -export * from './sasjsDrive' +export * from './Drive' export * from './Session' export * from './Execution' export * from './FileUploadController' diff --git a/api/src/controllers/sasjsDrive.ts b/api/src/controllers/sasjsDrive.ts deleted file mode 100644 index c443aad..0000000 --- a/api/src/controllers/sasjsDrive.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { fileExists, readFile, createFile } from '@sasjs/utils' - -export class SASjsDriveController { - async readFile(filePath: string) { - if (await fileExists(filePath)) { - return await readFile(filePath) - } - } - - async updateFile(filePath: string, fileContent: string) { - if (await fileExists(filePath)) { - return await createFile(filePath, fileContent) - } - } -} diff --git a/api/src/routes/index.ts b/api/src/routes/index.ts index 975c494..7c3bcf3 100644 --- a/api/src/routes/index.ts +++ b/api/src/routes/index.ts @@ -3,7 +3,7 @@ import path from 'path' import { createFileTree, getTreeExample, - SASjsDriveController, + DriveController, ExecutionController, FileUploadController } from '../controllers' @@ -55,8 +55,18 @@ router.get('/SASjsApi/files', async (req, res) => { const filePath = path .join(getTmpFilesFolderPath(), req.query.filePath) .replace(new RegExp('/', 'g'), path.sep) - const fileContent = await new SASjsDriveController().readFile(filePath) - res.status(200).send({ status: 'success', fileContent: fileContent }) + await new DriveController() + .readFile(filePath) + .then((fileContent) => { + res.status(200).send({ status: 'success', fileContent: fileContent }) + }) + .catch((err) => { + res.status(400).send({ + status: 'failure', + message: 'File request failed.', + ...(typeof err === 'object' ? err : { details: err }) + }) + }) } else { res.status(400).send({ status: 'failure', @@ -69,8 +79,18 @@ router.post('/SASjsApi/files', async (req, res) => { const filePath = path .join(getTmpFilesFolderPath(), req.body.filePath) .replace(new RegExp('/', 'g'), path.sep) - await new SASjsDriveController().updateFile(filePath, req.body.fileContent) - res.status(200).send({ status: 'success' }) + await new DriveController() + .updateFile(filePath, req.body.fileContent) + .then(() => { + res.status(200).send({ status: 'success' }) + }) + .catch((err) => { + res.status(400).send({ + status: 'failure', + message: 'File request failed.', + ...(typeof err === 'object' ? err : { details: err }) + }) + }) }) router.get('/SASjsApi/executor', async (req, res) => {