mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-07 04:20:05 +00:00
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { RequestClient } from '../request/RequestClient'
|
|
import { prefixMessage } from '@sasjs/utils/error'
|
|
|
|
/**
|
|
* Fetches content of the log file
|
|
* @param {object} requestClient - client object of Request Client.
|
|
* @param {string} accessToken - an access token for an authorized user.
|
|
* @param {string} logUrl - url of the log file.
|
|
* @param {number} logCount- total number of log lines in file.
|
|
* @returns an string containing log lines.
|
|
*/
|
|
export const fetchLogByChunks = async (
|
|
requestClient: RequestClient,
|
|
accessToken: string,
|
|
logUrl: string,
|
|
logCount: number
|
|
): Promise<string> => {
|
|
let log: string = ''
|
|
|
|
const loglimit = logCount < 10000 ? logCount : 10000
|
|
let start = 0
|
|
do {
|
|
console.log(
|
|
`Fetching logs from line no: ${start + 1} to ${
|
|
start + loglimit
|
|
} of ${logCount}.`
|
|
)
|
|
const logChunkJson = await requestClient!
|
|
.get<any>(`${logUrl}?start=${start}&limit=${loglimit}`, accessToken)
|
|
.then((res: any) => res.result)
|
|
.catch((err) => {
|
|
throw prefixMessage(err, 'Error while getting log. ')
|
|
})
|
|
|
|
if (logChunkJson.items.length === 0) break
|
|
|
|
const logChunk = logChunkJson.items.map((i: any) => i.line).join('\n')
|
|
log += logChunk
|
|
|
|
start += loglimit
|
|
} while (start < logCount)
|
|
return log
|
|
}
|