UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

66 lines 5.42 kB
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=