1
0
mirror of https://github.com/sasjs/server.git synced 2026-01-09 23:40:06 +00:00

feat(deploy): new route added for deploy with build.json

This commit is contained in:
Saad Jutt
2022-04-02 05:23:25 +05:00
parent 7b7bc6b778
commit 18d0604bdd
10 changed files with 138 additions and 85 deletions

View File

@@ -1,5 +1,5 @@
import express from 'express'
import { deleteFile } from '@sasjs/utils'
import { deleteFile, readFile } from '@sasjs/utils'
import { publishAppStream } from '../appStream'
@@ -43,6 +43,50 @@ driveRouter.post('/deploy', async (req, res) => {
}
})
driveRouter.post(
'/deploy/upload',
(...arg) => multerSingle('file', arg),
async (req, res) => {
if (!req.file) return res.status(400).send('"file" is not present.')
const fileContent = await readFile(req.file.path)
let jsonContent
try {
jsonContent = JSON.parse(fileContent)
} catch (err) {
return res.status(400).send('File containing invalid JSON content.')
}
const { error, value: body } = deployValidation(jsonContent)
if (error) return res.status(400).send(error.details[0].message)
try {
const response = await controller.deployUpload(req.file, body)
if (body.streamWebFolder) {
const { streamServiceName } = await publishAppStream(
body.appLoc,
body.streamWebFolder,
body.streamServiceName,
body.streamLogo
)
response.streamServiceName = streamServiceName
}
res.send(response)
} catch (err: any) {
const statusCode = err.code
delete err.code
res.status(statusCode).send(err)
} finally {
await deleteFile(req.file.path)
}
}
)
driveRouter.get('/file', async (req, res) => {
const { error: errQ, value: query } = fileParamValidation(req.query)

View File

@@ -12,7 +12,9 @@ import {
generateTimestamp,
copy,
createFolder,
createFile
createFile,
ServiceMember,
FolderMember
} from '@sasjs/utils'
import * as fileUtilModules from '../../../utils/file'
@@ -28,7 +30,6 @@ jest
import appPromise from '../../../app'
import { UserController } from '../../../controllers/'
import { getTreeExample } from '../../../controllers/internal'
import { FolderMember, ServiceMember } from '../../../types'
import { generateAccessToken, saveTokensInDB } from '../../../utils/'
const { getTmpFilesFolderPath } = fileUtilModules