mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-10 22:00:05 +00:00
Merge pull request #746 from sasjs/handle-updated-sasjs-response
fix: handled updated sasjs response
This commit is contained in:
@@ -133,26 +133,6 @@ export class RequestClient implements HttpClient {
|
||||
} else {
|
||||
sasWork = response.log
|
||||
}
|
||||
} else if (response?.result?.log) {
|
||||
//In this scenario we know we got the response from SASJS server
|
||||
//Log is array of `{ line: '' }` so we need to convert it back to text
|
||||
//To be able to parse it with current functions.
|
||||
let log: string = ''
|
||||
|
||||
if (typeof log !== 'string') {
|
||||
log = response.result.log
|
||||
.map((logLine: any) => logLine.line)
|
||||
.join('\n')
|
||||
}
|
||||
|
||||
sourceCode = parseSourceCode(log)
|
||||
generatedCode = parseGeneratedCode(log)
|
||||
|
||||
if (response?.result?._webout) {
|
||||
sasWork = response.result._webout.WORK
|
||||
} else {
|
||||
sasWork = log
|
||||
}
|
||||
} else if (response?.result) {
|
||||
// We parse only if it's a string, otherwise it would throw error
|
||||
if (typeof response.result === 'string') {
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import { RequestClient } from './RequestClient'
|
||||
import { AxiosResponse } from 'axios'
|
||||
import { SASJS_LOGS_SEPARATOR, getValidJson } from '../utils'
|
||||
|
||||
/**
|
||||
* Specific request client for SASJS.
|
||||
* Append tokens in headers.
|
||||
*/
|
||||
|
||||
export class SasjsRequestClient extends RequestClient {
|
||||
getHeaders = (accessToken: string | undefined, contentType: string) => {
|
||||
const headers: any = {}
|
||||
@@ -20,4 +23,32 @@ export class SasjsRequestClient extends RequestClient {
|
||||
|
||||
return headers
|
||||
}
|
||||
|
||||
protected parseResponse<T>(response: AxiosResponse<any>) {
|
||||
const etag = response?.headers ? response.headers['etag'] : ''
|
||||
let parsedResponse
|
||||
let log
|
||||
|
||||
try {
|
||||
if (typeof response.data === 'string') {
|
||||
parsedResponse = JSON.parse(response.data)
|
||||
} else {
|
||||
parsedResponse = response.data
|
||||
}
|
||||
} catch {
|
||||
if (response.data.includes(SASJS_LOGS_SEPARATOR)) {
|
||||
parsedResponse = getValidJson(
|
||||
response.data.split(SASJS_LOGS_SEPARATOR)[0]
|
||||
)
|
||||
log = response.data.split(SASJS_LOGS_SEPARATOR)[1]
|
||||
} else parsedResponse = response.data
|
||||
}
|
||||
|
||||
return {
|
||||
result: parsedResponse as T,
|
||||
log,
|
||||
etag,
|
||||
status: response.status
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user