@iotize/tap
Version:
IoTize Device client for Javascript
66 lines • 5.42 kB
JavaScript
import { ApduResponse, } from '@iotize/tap/client/api';
import { createApduFromTapRequest } from './apdu/tap-apdu-request-builder';
import { TapStreamReader, TapStreamWriter } from './frame/import-adapter';
import { TapClientError } from './tap-client-error';
export class TapApduRequestConverter {
encode(tapRequest) {
try {
const stream = new TapStreamWriter(5 + 1 + tapRequest.payload.length + 1);
stream.writeApduRequest(createApduFromTapRequest(tapRequest));
return stream.toBytes;
}
catch (err) {
if (!(err instanceof TapClientError)) {
throw TapClientError.cannotEncodeRequest(err, tapRequest);
}
else {
throw err;
}
}
}
decode(bufferData) {
const stream = bufferData instanceof TapStreamReader
? bufferData
: TapStreamReader.create(bufferData);
const apduHeader = stream.readApduRequestHeader();
const tapRequestFrame = stream.readTapRequestFrame();
return tapRequestFrame;
}
}
export class TapApduResponseConverter {
encode(tapResponseFrame) {
const stream = new TapStreamWriter();
const tapRequestStream = new TapStreamWriter();
tapRequestStream.writeTapResponseFrame(tapResponseFrame);
stream.writeApduResponse({
data: tapRequestStream.toBytes,
status: ApduResponse.Status.OK,
});
return stream.toBytes;
}
decode(bufferData) {
try {
const stream = bufferData instanceof TapStreamReader
? bufferData
: TapStreamReader.create(bufferData);
const apduResponse = stream.readApduResponse();
if (apduResponse.status !== ApduResponse.Status.OK) {
throw TapClientError.unexpectedApduStatusCode(apduResponse);
}
return TapStreamReader.fromArray(apduResponse.data).readTapResponseFrame();
}
catch (err) {
if (!(err instanceof TapClientError)) {
throw TapClientError.cannotDecodeResponseError(err, bufferData instanceof TapStreamReader
? bufferData.toBytes
: bufferData);
}
else {
throw err;
}
}
}
}
export const TAP_REQUEST_FRAME_CONVERTER = new TapApduRequestConverter();
export const TAP_RESPONSE_FRAME_CONVERTER = new TapApduResponseConverter();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2NsaWVudC9pbXBsL3NyYy9saWIvY29udmVydGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsWUFBWSxHQUdiLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxNQUFNLENBQUMsVUFBMkI7UUFDaEMsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ3ZCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksY0FBYyxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQVksRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNwRTtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsQ0FBQzthQUNYO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQXdDO1FBQzdDLE1BQU0sTUFBTSxHQUNWLFVBQVUsWUFBWSxlQUFlO1lBQ25DLENBQUMsQ0FBQyxVQUFVO1lBQ1osQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDckQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHdCQUF3QjtJQUduQyxNQUFNLENBQUMsZ0JBQWtDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQy9DLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZCLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPO1lBQzlCLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBd0M7UUFDN0MsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUNWLFVBQVUsWUFBWSxlQUFlO2dCQUNuQyxDQUFDLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUUvQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xELE1BQU0sY0FBYyxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzdEO1lBRUQsT0FBTyxlQUFlLENBQUMsU0FBUyxDQUM5QixZQUFZLENBQUMsSUFBSSxDQUNsQixDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDMUI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxjQUFjLENBQUMseUJBQXlCLENBQzVDLEdBQVksRUFDWixVQUFVLFlBQVksZUFBZTtvQkFDbkMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPO29CQUNwQixDQUFDLENBQUMsVUFBVSxDQUNmLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsQ0FBQzthQUNYO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7QUFDekUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDIn0=