mirror of
https://github.com/sasjs/server.git
synced 2026-01-10 16:00:05 +00:00
style: lint
This commit is contained in:
@@ -3,34 +3,34 @@ import { getSessionController } from '.'
|
|||||||
const multer = require('multer')
|
const multer = require('multer')
|
||||||
|
|
||||||
export class FileUploadController {
|
export class FileUploadController {
|
||||||
private storage = multer.diskStorage({
|
private storage = multer.diskStorage({
|
||||||
destination: function (req: any, file: any, cb: any) {
|
destination: function (req: any, file: any, cb: any) {
|
||||||
//Sending the intercepted files to the sessions subfolder
|
//Sending the intercepted files to the sessions subfolder
|
||||||
cb(null, req.sasSession.path)
|
cb(null, req.sasSession.path)
|
||||||
},
|
},
|
||||||
filename: function (req: any, file: any, cb: any) {
|
filename: function (req: any, file: any, cb: any) {
|
||||||
//req_file prefix + unique hash added to sas request files
|
//req_file prefix + unique hash added to sas request files
|
||||||
cb(null, `req_file_${uuidv4().replace(/-/gm, '')}`)
|
cb(null, `req_file_${uuidv4().replace(/-/gm, '')}`)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
private upload = multer({ storage: this.storage })
|
private upload = multer({ storage: this.storage })
|
||||||
|
|
||||||
//It will intercept request and generate uniqe uuid to be used as a subfolder name
|
//It will intercept request and generate uniqe uuid to be used as a subfolder name
|
||||||
//that will store the files uploaded
|
//that will store the files uploaded
|
||||||
public preuploadMiddleware = async (req: any, res: any, next: any) => {
|
public preuploadMiddleware = async (req: any, res: any, next: any) => {
|
||||||
let session
|
let session
|
||||||
|
|
||||||
const sessionController = getSessionController()
|
const sessionController = getSessionController()
|
||||||
session = await sessionController.getSession()
|
session = await sessionController.getSession()
|
||||||
session.inUse = true
|
session.inUse = true
|
||||||
|
|
||||||
req.sasSession = session
|
req.sasSession = session
|
||||||
|
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
|
|
||||||
public getMulterUploadObject() {
|
public getMulterUploadObject() {
|
||||||
return this.upload
|
return this.upload
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,39 +85,50 @@ router.get('/SASjsExecutor/do', async (req, res) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
router.post('/SASjsExecutor/do', fileUploadController.preuploadMiddleware, fileUploadController.getMulterUploadObject().any(), async (req: any, res: any) => {
|
router.post(
|
||||||
if (isRequestQuery(req.query)) {
|
'/SASjsExecutor/do',
|
||||||
let sasCodePath = path
|
fileUploadController.preuploadMiddleware,
|
||||||
.join(getTmpFilesFolderPath(), req.query._program)
|
fileUploadController.getMulterUploadObject().any(),
|
||||||
.replace(new RegExp('/', 'g'), path.sep)
|
async (req: any, res: any) => {
|
||||||
|
if (isRequestQuery(req.query)) {
|
||||||
|
let sasCodePath = path
|
||||||
|
.join(getTmpFilesFolderPath(), req.query._program)
|
||||||
|
.replace(new RegExp('/', 'g'), path.sep)
|
||||||
|
|
||||||
// If no extension provided, add .sas extension
|
// If no extension provided, add .sas extension
|
||||||
sasCodePath += addExtensionIfNotFound(sasCodePath, 'sas')
|
sasCodePath += addExtensionIfNotFound(sasCodePath, 'sas')
|
||||||
|
|
||||||
let filesNamesMap = null
|
let filesNamesMap = null
|
||||||
|
|
||||||
if (req.files && req.files.length > 0) {
|
if (req.files && req.files.length > 0) {
|
||||||
filesNamesMap = makeFilesNamesMap(req.files)
|
filesNamesMap = makeFilesNamesMap(req.files)
|
||||||
}
|
}
|
||||||
|
|
||||||
await new ExecutionController()
|
await new ExecutionController()
|
||||||
.execute(sasCodePath, undefined, req.sasSession, { ...req.query }, { filesNamesMap: filesNamesMap })
|
.execute(
|
||||||
.then((result: {}) => {
|
sasCodePath,
|
||||||
res.status(200).send(result)
|
undefined,
|
||||||
})
|
req.sasSession,
|
||||||
.catch((err: {} | string) => {
|
{ ...req.query },
|
||||||
res.status(400).send({
|
{ filesNamesMap: filesNamesMap }
|
||||||
status: 'failure',
|
)
|
||||||
message: 'Job execution failed.',
|
.then((result: {}) => {
|
||||||
...(typeof err === 'object' ? err : { details: err })
|
res.status(200).send(result)
|
||||||
})
|
})
|
||||||
|
.catch((err: {} | string) => {
|
||||||
|
res.status(400).send({
|
||||||
|
status: 'failure',
|
||||||
|
message: 'Job execution failed.',
|
||||||
|
...(typeof err === 'object' ? err : { details: err })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
res.status(400).send({
|
||||||
|
status: 'failure',
|
||||||
|
message: `Please provide the location of SAS code`
|
||||||
})
|
})
|
||||||
} else {
|
}
|
||||||
res.status(400).send({
|
|
||||||
status: 'failure',
|
|
||||||
message: `Please provide the location of SAS code`
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
)
|
||||||
|
|
||||||
export default router
|
export default router
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
export interface MulterFile {
|
export interface MulterFile {
|
||||||
fieldname: string
|
fieldname: string
|
||||||
originalname: string
|
originalname: string
|
||||||
encoding: string
|
encoding: string
|
||||||
mimetype: string
|
mimetype: string
|
||||||
destination: string
|
destination: string
|
||||||
filename: string
|
filename: string
|
||||||
path: string
|
path: string
|
||||||
size: number
|
size: number
|
||||||
}
|
}
|
||||||
@@ -10,9 +10,9 @@ import { listFilesInFolder } from '@sasjs/utils'
|
|||||||
* @returns object
|
* @returns object
|
||||||
*/
|
*/
|
||||||
export const makeFilesNamesMap = (files: MulterFile[]) => {
|
export const makeFilesNamesMap = (files: MulterFile[]) => {
|
||||||
if (!files) return null
|
if (!files) return null
|
||||||
|
|
||||||
const filesNamesMap: {[key: string]: string} = {}
|
const filesNamesMap: { [key: string]: string } = {}
|
||||||
|
|
||||||
for (let file of files) {
|
for (let file of files) {
|
||||||
filesNamesMap[file.filename] = file.fieldname
|
filesNamesMap[file.filename] = file.fieldname
|
||||||
@@ -40,7 +40,6 @@ export const generateFileUploadSasCode = (
|
|||||||
count: number
|
count: number
|
||||||
}[] = []
|
}[] = []
|
||||||
|
|
||||||
|
|
||||||
fs.readdirSync(sasSessionFolder).forEach((fileName) => {
|
fs.readdirSync(sasSessionFolder).forEach((fileName) => {
|
||||||
let fileCountString = fileCount < 100 ? '0' + fileCount : fileCount
|
let fileCountString = fileCount < 100 ? '0' + fileCount : fileCount
|
||||||
fileCountString = fileCount < 10 ? '00' + fileCount : fileCount
|
fileCountString = fileCount < 10 ? '00' + fileCount : fileCount
|
||||||
|
|||||||
Reference in New Issue
Block a user