mirror of
https://github.com/sasjs/server.git
synced 2026-01-09 07:20:05 +00:00
feat: parse log to array
This commit is contained in:
@@ -3,6 +3,7 @@ import { Request, Security, Route, Tags, Post, Body } from 'tsoa'
|
||||
import { ExecuteReturnJson, ExecutionController } from './internal'
|
||||
import { PreProgramVars } from '../types'
|
||||
import { ExecuteReturnJsonResponse } from '.'
|
||||
import { parseLogToArray } from '../utils'
|
||||
|
||||
interface ExecuteSASCodePayload {
|
||||
/**
|
||||
@@ -43,7 +44,7 @@ const executeSASCode = async (req: any, { code }: ExecuteSASCodePayload) => {
|
||||
return {
|
||||
status: 'success',
|
||||
_webout: webout,
|
||||
log,
|
||||
log: parseLogToArray(log),
|
||||
httpHeaders
|
||||
}
|
||||
} catch (err: any) {
|
||||
|
||||
@@ -18,7 +18,13 @@ import {
|
||||
ExecutionVars
|
||||
} from './internal'
|
||||
import { PreProgramVars } from '../types'
|
||||
import { getTmpFilesFolderPath, HTTPHeaders, makeFilesNamesMap } from '../utils'
|
||||
import {
|
||||
getTmpFilesFolderPath,
|
||||
HTTPHeaders,
|
||||
LogLine,
|
||||
makeFilesNamesMap,
|
||||
parseLogToArray
|
||||
} from '../utils'
|
||||
|
||||
interface ExecuteReturnJsonPayload {
|
||||
/**
|
||||
@@ -30,7 +36,7 @@ interface ExecuteReturnJsonPayload {
|
||||
export interface ExecuteReturnJsonResponse {
|
||||
status: string
|
||||
_webout: string
|
||||
log?: string
|
||||
log: LogLine[]
|
||||
message?: string
|
||||
httpHeaders: HTTPHeaders
|
||||
}
|
||||
@@ -70,6 +76,7 @@ export class STPController {
|
||||
@Example<ExecuteReturnJsonResponse>({
|
||||
status: 'success',
|
||||
_webout: 'webout content',
|
||||
log: [],
|
||||
httpHeaders: {
|
||||
'Content-type': 'application/zip',
|
||||
'Cache-Control': 'public, max-age=1000'
|
||||
@@ -141,7 +148,7 @@ const executeReturnJson = async (
|
||||
return {
|
||||
status: 'success',
|
||||
_webout: webout,
|
||||
log,
|
||||
log: parseLogToArray(log),
|
||||
httpHeaders
|
||||
}
|
||||
} catch (err: any) {
|
||||
|
||||
@@ -6,6 +6,7 @@ export * from './generateAuthCode'
|
||||
export * from './generateRefreshToken'
|
||||
export * from './getCertificates'
|
||||
export * from './getDesktopFields'
|
||||
export * from './parseLogToArray'
|
||||
export * from './removeTokensInDB'
|
||||
export * from './saveTokensInDB'
|
||||
export * from './sleep'
|
||||
|
||||
9
api/src/utils/parseLogToArray.ts
Normal file
9
api/src/utils/parseLogToArray.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export interface LogLine {
|
||||
line: string
|
||||
}
|
||||
|
||||
export const parseLogToArray = (content?: string): LogLine[] => {
|
||||
if (!content) return []
|
||||
|
||||
return content.split('\n').map((line) => ({ line: line }))
|
||||
}
|
||||
33
api/src/utils/specs/parseLogToArray.spec.ts
Normal file
33
api/src/utils/specs/parseLogToArray.spec.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { parseLogToArray } from '..'
|
||||
|
||||
describe('parseLogToArray', () => {
|
||||
it('should parse log to array type', () => {
|
||||
const log = parseLogToArray(`
|
||||
line 1 of log content
|
||||
line 2 of log content
|
||||
line 3 of log content
|
||||
line 4 of log content
|
||||
`)
|
||||
|
||||
expect(log).toEqual([
|
||||
{ line: '' },
|
||||
{ line: 'line 1 of log content' },
|
||||
{ line: 'line 2 of log content' },
|
||||
{ line: 'line 3 of log content' },
|
||||
{ line: 'line 4 of log content' },
|
||||
{ line: ' ' }
|
||||
])
|
||||
})
|
||||
|
||||
it('should parse log to array type if empty', () => {
|
||||
const log = parseLogToArray('')
|
||||
|
||||
expect(log).toEqual([])
|
||||
})
|
||||
|
||||
it('should parse log to array type if not provided', () => {
|
||||
const log = parseLogToArray()
|
||||
|
||||
expect(log).toEqual([])
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user