UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

63 lines 5.52 kB
import { TapRequestFrame } from '@iotize/tap/client/api'; export class TapRequestFrameBuilder { // public static fromBytes(bytes: Uint8Array): Header { // const path = TapStreamReader.fromArray(bytes).readTapRequestPath(); // const header = new Header(path); // if (bytes.length == 8) { // // What is that ??? // header.resourceInstance = // ((bytes[6] << 8) & Header.MAX_ID) + (bytes[7] & 0xff); // header.resourceInstance &= Header.MAX_ID; // } // // return header; // return header; // } static parsePath(path) { if (!path || path.length === 0) { throw new Error('Missing LWM2M path, it must not be empty'); // TODO better error } path = path.trim(); const result = path.match(TapRequestFrameBuilder.PATH_EXPRESSION); if (!result || result.length === 0) { throw new Error(`Invalid LWM2M path "${path}", it does not match expected format`); // TODO better error } const header = { objectId: this.validateId(parseInt(result[1])), objectInstanceId: result[2] ? parseInt(result[2]) : 0xffff, resourceId: parseInt(result[3]), }; if (result[4]) { header['resourceInstanceId'] = parseInt(result[4], 10); } return header; } static GET(url, body) { return TapRequestFrameBuilder.create(TapRequestFrame.MethodType.GET, url, body); } static PUT(url, body) { return TapRequestFrameBuilder.create(TapRequestFrame.MethodType.PUT, url, body); } static POST(url, body) { return TapRequestFrameBuilder.create(TapRequestFrame.MethodType.POST, url, body); } static create(method, url, data) { return { header: { path: TapRequestFrameBuilder.parsePath(url), methodType: method, }, payload: data || new Uint8Array(), }; } static validateId(id) { if (id < 0 || id > TapRequestFrameBuilder.MAX_ID) { throw new Error(`Invalid identifier "${id}". It must be a number between ${id} and ${TapRequestFrameBuilder.MAX_ID}`); } return id; } } TapRequestFrameBuilder.MAX_ID = 0xffff; (function (TapRequestFrameBuilder) { TapRequestFrameBuilder.PATH_EXPRESSION = /^\/?([0-9]+)\/([0-9]+)?\/([0-9]+)\/?([0-9]+)?$/; })(TapRequestFrameBuilder || (TapRequestFrameBuilder = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXJlcXVlc3QtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NsaWVudC9pbXBsL3NyYy9saWIvcmVxdWVzdC90YXAtcmVxdWVzdC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLHVEQUF1RDtJQUN2RCwwRUFBMEU7SUFDMUUsdUNBQXVDO0lBQ3ZDLCtCQUErQjtJQUMvQiw4QkFBOEI7SUFDOUIsb0NBQW9DO0lBQ3BDLHFFQUFxRTtJQUNyRSxvREFBb0Q7SUFDcEQsUUFBUTtJQUNSLHdCQUF3QjtJQUN4QixxQkFBcUI7SUFDckIsSUFBSTtJQUVHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtTQUNsRjtRQUNELElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUJBQXVCLElBQUksc0NBQXNDLENBQ2xFLENBQUMsQ0FBQyxvQkFBb0I7U0FDeEI7UUFDRCxNQUFNLE1BQU0sR0FBeUI7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQzFELFVBQVUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNaLE1BQWMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBaUI7UUFDOUMsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQ2xDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUM5QixHQUFHLEVBQ0gsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBaUI7UUFDOUMsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQ2xDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUM5QixHQUFHLEVBQ0gsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBaUI7UUFDL0MsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQ2xDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUMvQixHQUFHLEVBQ0gsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsTUFBa0MsRUFDbEMsR0FBVyxFQUNYLElBQWlCO1FBRWpCLE9BQU87WUFDTCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7Z0JBQzNDLFVBQVUsRUFBRSxNQUFNO2FBQ25CO1lBQ0QsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLFVBQVUsRUFBRTtTQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBVTtRQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixFQUFFLGtDQUFrQyxFQUFFLFFBQVEsc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQ3JHLENBQUM7U0FDSDtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7QUFsRmEsNkJBQU0sR0FBRyxNQUFNLENBQUM7QUFxRmhDLFdBQWlCLHNCQUFzQjtJQUN4QixzQ0FBZSxHQUMxQixnREFBZ0QsQ0FBQztBQUNyRCxDQUFDLEVBSGdCLHNCQUFzQixLQUF0QixzQkFBc0IsUUFHdEMifQ==