@iotize/tap
Version:
IoTize Device client for Javascript
74 lines • 7.85 kB
JavaScript
import { bufferToHexString } from '@iotize/common/byte-converter';
import { CodeError } from '@iotize/common/error';
import { ApduResponse, } from '@iotize/tap/client/api';
import { TapRequestHelper } from './request/tap-request-helper';
import { ResultCodeTranslation } from './response/result-code-translation';
export class TapClientError extends CodeError {
constructor(code, message, cause) {
super(message, code);
this.cause = cause;
}
static illegalArgument(msg) {
return new TapClientError(TapClientError.Code.IllegalArgumentError, msg);
}
static illegalStateError(msg) {
return new TapClientError(TapClientError.Code.IllegalStateError, msg);
}
static encodeRequestError(command, cause) {
return new TapClientError(TapClientError.Code.EncodeRequestError, 'Cannot encode this request: ' + command + '. Cause: ' + cause, cause);
}
static decodeResponseError(cause, frameOrCommand) {
return new TapClientError(TapClientError.Code.DecodeResponseError, `Cannot decode response to command ${frameOrCommand instanceof Uint8Array
? `0x${bufferToHexString(frameOrCommand)}`
: TapRequestHelper.toString(frameOrCommand)}. Cause: ` + cause, cause);
}
static notConnectedError() {
return new TapClientError(TapClientError.Code.NotConnectedError, 'Trying to execute command but device is not connected');
}
static cannotDecodeResponseError(err, bufferData) {
return new TapClientError(TapClientError.Code.UnexpectedTapResponse, `Received from device an unexpected response that cannot be decoded (${err.message}). Frame: 0x${bufferToHexString(bufferData)}`);
}
static unexpectedApduStatusCode(apduResponse) {
return new TapClientError(TapClientError.Code.UnexpectedApduResponseStatus, `Received from device an unexpected response with an invalid APDU status code 0x${apduResponse.status.toString(16)}
but expecting 0x${ApduResponse.Status.OK.toString(16)}`);
}
static cannotEncodeRequest(err, tapRequest) {
return new TapClientError(TapClientError.Code.CannotEncodeRequest, `Cannot encode request ${tapRequest}: ${err.message}`);
}
}
(function (TapClientError) {
let Code;
(function (Code) {
Code["NotConnectedError"] = "TapClientErrorNotConnected";
Code["EncodeRequestError"] = "TapClientErrorEncodeRequest";
Code["IllegalArgumentError"] = "TapClientErrorIllegalArgument";
Code["IllegalStateError"] = "TapClientErrorIllegalState";
Code["DecodeResponseError"] = "TapClientErrorDecodeResponse";
Code["UnexpectedTapResponse"] = "TapClientErrorUnexpectedTapResponse";
Code["UnexpectedApduResponseStatus"] = "TapClientErrorUnexpectedApduResponseStatus";
Code["CannotEncodeRequest"] = "TapClientErrorCannotEncodeRequest";
Code["TapClientResponseStatusError"] = "TapClientErrorResponseStatus";
})(Code = TapClientError.Code || (TapClientError.Code = {}));
})(TapClientError || (TapClientError = {}));
// export const TapResponseErrorCode = 'TapResponseError';
export class TapClientResponseStatusError extends TapClientError {
// public code: string;
constructor(response, request) {
super(TapClientError.Code.TapClientResponseStatusError, TapClientResponseStatusError.createErrorMessage(response, request));
this.response = response;
this.request = request;
}
static createErrorMessage(response, request) {
const codeRet = response.status;
let msg = 'Tap request failed. ';
if (request) {
msg = `Tap request ${TapRequestHelper.toString(request)} failed. `;
}
const errorExplained = codeRet in ResultCodeTranslation
? ResultCodeTranslation[codeRet]
: 'an unknown error';
msg += `${errorExplained} (code=0x${codeRet.toString(16)})`;
return msg;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLWNsaWVudC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2NsaWVudC9pbXBsL3NyYy9saWIvdGFwLWNsaWVudC1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksR0FHYixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTNFLE1BQU0sT0FBTyxjQUFlLFNBQVEsU0FBOEI7SUFDaEUsWUFDRSxJQUF5QixFQUN6QixPQUFlLEVBQ1IsS0FBYTtRQUVwQixLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRmQsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUd0QixDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFXO1FBQ3ZDLE9BQU8sSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVc7UUFDekMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQzlCLE9BQXdCLEVBQ3hCLEtBQVk7UUFFWixPQUFPLElBQUksY0FBYyxDQUN2QixjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUN0Qyw4QkFBOEIsR0FBRyxPQUFPLEdBQUcsV0FBVyxHQUFHLEtBQUssRUFDOUQs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