1
0
mirror of https://github.com/sasjs/server.git synced 2025-12-10 19:34:34 +00:00

Merge pull request #70 from sasjs/parse-log-to-array

feat: parse log to array
This commit is contained in:
Muhammad Saad
2022-02-20 03:54:19 +04:00
committed by GitHub
6 changed files with 68 additions and 6 deletions

View File

@@ -92,6 +92,14 @@ components:
- clientSecret
type: object
additionalProperties: false
LogLine:
properties:
line:
type: string
required:
- line
type: object
additionalProperties: false
HTTPHeaders:
properties: {}
type: object
@@ -104,7 +112,9 @@ components:
_webout:
type: string
log:
type: string
items:
$ref: '#/components/schemas/LogLine'
type: array
message:
type: string
httpHeaders:
@@ -112,6 +122,7 @@ components:
required:
- status
- _webout
- log
- httpHeaders
type: object
additionalProperties: false
@@ -1070,7 +1081,7 @@ paths:
$ref: '#/components/schemas/ExecuteReturnJsonResponse'
examples:
'Example 1':
value: {status: success, _webout: 'webout content', httpHeaders: {Content-type: application/zip, Cache-Control: 'public, max-age=1000'}}
value: {status: success, _webout: 'webout content', log: [], httpHeaders: {Content-type: application/zip, Cache-Control: 'public, max-age=1000'}}
description: "Trigger a SAS program using it's location in the _program parameter.\nEnable debugging using the _debug parameter.\nAdditional URL parameters are turned into SAS macro variables.\nAny files provided are placed into the session and\ncorresponding _WEBIN_XXX variables are created."
summary: 'Execute Stored Program, return JSON'
tags:

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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'

View 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 }))
}

View 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([])
})
})