@iotize/tap
Version:
IoTize Device client for Javascript
63 lines • 5.52 kB
JavaScript
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==