1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-17 17:10:05 +00:00

feat: added type for error response

This commit is contained in:
Mihajlo Medjedovic
2020-09-14 16:47:54 +02:00
parent 9af45799b9
commit 53990a9ba3
3 changed files with 58 additions and 14 deletions

View File

@@ -30,7 +30,8 @@ import {
ServerType, ServerType,
CsrfToken, CsrfToken,
UploadFile, UploadFile,
EditContextInput EditContextInput,
ErrorResponse
} from './types' } from './types'
import { SASViyaApiClient } from './SASViyaApiClient' import { SASViyaApiClient } from './SASViyaApiClient'
import { SAS9ApiClient } from './SAS9ApiClient' import { SAS9ApiClient } from './SAS9ApiClient'
@@ -686,7 +687,9 @@ export default class SASjs {
resolve(retryResponse) resolve(retryResponse)
} else { } else {
this.retryCountComputeApi = 0 this.retryCountComputeApi = 0
reject({ MESSAGE: 'Compute API retry requests limit reached' }) reject(
new ErrorResponse('Compute API retry requests limit reached')
)
} }
} }
@@ -697,7 +700,7 @@ export default class SASjs {
sasjsWaitingRequest.config = config sasjsWaitingRequest.config = config
this.sasjsWaitingRequests.push(sasjsWaitingRequest) this.sasjsWaitingRequests.push(sasjsWaitingRequest)
} else { } else {
reject({ MESSAGE: error || 'Job execution failed' }) reject(new ErrorResponse('Job execution failed', error))
} }
this.appendSasjsRequest(response.log, sasJob, null) this.appendSasjsRequest(response.log, sasJob, null)
@@ -779,11 +782,13 @@ export default class SASjs {
resolve(retryResponse) resolve(retryResponse)
} else { } else {
this.retryCountJeseApi = 0 this.retryCountJeseApi = 0
reject({ MESSAGE: 'Jes API retry requests limit reached' }) reject(
new ErrorResponse('Jes API retry requests limit reached')
)
} }
} }
reject({ MESSAGE: (e && e.message) || 'Job execution failed' }) reject(new ErrorResponse('Job execution failed', e))
}) })
) )
} }
@@ -895,7 +900,7 @@ export default class SASjs {
sasjsWaitingRequest.requestPromise.promise = new Promise( sasjsWaitingRequest.requestPromise.promise = new Promise(
(resolve, reject) => { (resolve, reject) => {
if (isError) { if (isError) {
reject({ MESSAGE: errorMsg }) reject(new ErrorResponse(errorMsg))
} }
const headers: any = {} const headers: any = {}
if (this.csrfTokenWeb) { if (this.csrfTokenWeb) {
@@ -961,9 +966,12 @@ export default class SASjs {
if (jsonResponseText !== '') { if (jsonResponseText !== '') {
resolve(JSON.parse(jsonResponseText)) resolve(JSON.parse(jsonResponseText))
} else { } else {
reject({ reject(
MESSAGE: this.parseSAS9ErrorResponse(responseText) new ErrorResponse(
}) 'Job WEB execution failed',
this.parseSAS9ErrorResponse(responseText)
)
)
} }
} else if ( } else if (
config.serverType === ServerType.SASViya && config.serverType === ServerType.SASViya &&
@@ -976,15 +984,30 @@ export default class SASjs {
try { try {
resolve(JSON.parse(resText)) resolve(JSON.parse(resText))
} catch (e) { } catch (e) {
reject({ MESSAGE: resText }) reject(
new ErrorResponse(
'Job WEB debug response parsing failed',
{ response: resText, exception: e }
)
)
} }
}, },
(err: any) => { (err: any) => {
reject({ MESSAGE: err }) reject(
new ErrorResponse(
'Job WEB debug response parsing failed',
err
)
)
} }
) )
} catch (e) { } catch (e) {
reject({ MESSAGE: responseText }) reject(
new ErrorResponse(
'Job WEB debug response parsing failed',
{ response: responseText, exception: e }
)
)
} }
} else { } else {
this.updateUsername(responseText) this.updateUsername(responseText)
@@ -992,14 +1015,19 @@ export default class SASjs {
const parsedJson = JSON.parse(responseText) const parsedJson = JSON.parse(responseText)
resolve(parsedJson) resolve(parsedJson)
} catch (e) { } catch (e) {
reject({ MESSAGE: responseText }) reject(
new ErrorResponse('Job WEB response parsing failed', {
response: responseText,
exception: e
})
)
} }
} }
} }
} }
}) })
.catch((e: Error) => { .catch((e: Error) => {
reject(e) reject(new ErrorResponse('Job WEB request failed', e))
}) })
} }
) )

View File

@@ -0,0 +1,15 @@
export class ErrorResponse {
body: ErrorBody
constructor(message: string, details?: any) {
this.body = {
message,
details
}
}
}
interface ErrorBody {
message: string
details: any
}

View File

@@ -9,3 +9,4 @@ export * from './SASjsWaitingRequest'
export * from './ServerType' export * from './ServerType'
export * from './Session' export * from './Session'
export * from './UploadFile' export * from './UploadFile'
export * from './ErrorResponse'