Skip to content

Commit 2a9b541

Browse files
committed
Fixed test
1 parent 13c2a49 commit 2a9b541

12 files changed

+407
-367
lines changed

package-lock.json

+93
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"@rollup/plugin-node-resolve": "^8.0.1",
2828
"@rollup/plugin-url": "^5.0.1",
2929
"@types/expect.js": "~0.3.29",
30+
"@types/jest": "^26.0.0",
3031
"@types/jws": "^3.2.2",
3132
"@types/mqtt": "^2.5.0",
3233
"@types/node-fetch": "^2.5.7",
@@ -47,7 +48,7 @@
4748
"test": "npm run build && jest --config ./jest.config.js",
4849
"lint": "./node_modules/.bin/eslint src",
4950
"lint-fix": "./node_modules/.bin/eslint --fix src --ext .js",
50-
"clean": "rimraf lib es",
51+
"clean": "rimraf lib es dist",
5152
"build": "npm run clean && rollup -c && rollup -c ./rollup.config.lib.js"
5253
},
5354
"repository": {
@@ -62,6 +63,7 @@
6263
"iot"
6364
],
6465
"contributors": [
65-
"Fabrizio Mirabito <[email protected]>"
66+
"Fabrizio Mirabito <[email protected]>",
67+
"Francesco Pirrotta <[email protected]>"
6668
]
6769
}

src/cbor/index.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { encode, decode, CBORValue } from '@arduino/cbor-js';
1+
import { encode, decode, CBORValue } from '@arduino/cbor-js';
22

33
import Utils from "../utils";
44
import { CloudMessageValue } from "../client/IArduinoCloudClient";
@@ -19,7 +19,7 @@ function nameFrom(property: CBORValue | string[]): string {
1919

2020
function toString(value: CBORValue[]): string {
2121
const encoded = encode(value);
22-
return this.arrayBufferToBase64(encoded);
22+
return Utils.arrayBufferToBase64(encoded);
2323
};
2424

2525
function toCloudProtocolV2(cborValue: CBORValue): CBORValue {
@@ -53,10 +53,8 @@ function toCloudProtocolV2(cborValue: CBORValue): CBORValue {
5353
}
5454

5555
function parse(value: CloudMessageValue, name: string, timestamp: number, deviceId: string): CBORValue {
56-
const parsed: CBORValue = {
57-
n: name,
58-
bt: timestamp !== -1 ? (timestamp || new Date().getTime()) : undefined,
59-
};
56+
const parsed: CBORValue = { n: name };
57+
if (timestamp !== -1) parsed.bt = timestamp || new Date().getTime()
6058

6159
if (Utils.isNumber(value)) parsed.v = value;
6260
if (Utils.isString(value)) parsed.vs = value;

src/client/ArduinoCloudClient.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import CBOR from "../cbor";
55
import Utils from "../utils";
66
import { IConnectionBuilder } from '../builder/IConnectionBuilder';
77
import { IConnection, CloudMessage } from "../connection/IConnection";
8-
import { IArduinoCloudClient, CloudOptions, OnMessageCallback, CloudMessageValue, isBrowserOptions } from "./IArduinoCloudClient";
8+
import { IArduinoCloudClient, CloudOptions, OnMessageCallback, CloudMessageValue } from "./IArduinoCloudClient";
99

1010
const NOOP = () => null;
1111
export class ArduinoCloudClient implements IArduinoCloudClient {
@@ -137,11 +137,12 @@ export class ArduinoCloudClient implements IArduinoCloudClient {
137137
});
138138
}
139139

140-
public sendMessage(topic: string, message: ArrayBuffer): Promise<void> {
140+
public sendMessage(topic: string, message: string | ArrayBuffer): Promise<void> {
141141
return new Promise((resolve, reject) => {
142142
if (!this.connection) return reject(new Error('send message failed: no connection found'));
143143

144-
this.connection.publish(topic, Utils.toBuffer(message), { qos: 1, retain: false });
144+
const body = Utils.isString(message) ? Buffer.from(message, 'utf8') : message;
145+
this.connection.publish(topic, Utils.toBuffer(body), { qos: 1, retain: false });
145146
return resolve();
146147
});
147148
}
@@ -150,15 +151,15 @@ export class ArduinoCloudClient implements IArduinoCloudClient {
150151
return this.subscribe(`/a/d/${deviceId}/s/o`, cb);
151152
}
152153

153-
public writeCloudMonitor(deviceId: string, message: ArrayBuffer): Promise<void> {
154+
public writeCloudMonitor(deviceId: string, message: string | ArrayBuffer): Promise<void> {
154155
return this.sendMessage(`/a/d/${deviceId}/s/i`, message);
155156
}
156157

157-
public closeCloudMonitor<T>(deviceId: string): Promise<void> {
158+
public closeCloudMonitor(deviceId: string): Promise<void> {
158159
return this.unsubscribe(`/a/d/${deviceId}/s/o`);
159160
}
160161

161-
public async sendProperty<T extends CloudMessageValue>(thingId: string, name: string, value: T, timestamp: number): Promise<void> {
162+
public async sendProperty<T extends CloudMessageValue>(thingId: string, name: string, value: T, timestamp: number = new Date().getTime()): Promise<void> {
162163
const topic = `/a/t/${thingId}/e/i`;
163164
const values = CBOR.getSenML(name, value, timestamp, this.options.useCloudProtocolV2, null);
164165
return this.sendMessage(topic, CBOR.encode(Utils.isArray(values) ? values : [values], true));
@@ -185,7 +186,6 @@ export class ArduinoCloudClient implements IArduinoCloudClient {
185186

186187
let subscription: Subscription;
187188
const subject = new Subject<CloudMessage>();
188-
189189
this.connection.subscribe(topic, (err) => {
190190
if (err) throw new Error(`subscription failed: ${err.toString()}`);
191191

@@ -196,7 +196,6 @@ export class ArduinoCloudClient implements IArduinoCloudClient {
196196

197197
const originalMethod = subject.unsubscribe;
198198
subject.unsubscribe = () => {
199-
200199
subscription.unsubscribe();
201200
originalMethod();
202201
}

src/client/IArduinoCloudClient.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ export interface IArduinoCloudClient {
3838

3939
subscribe<T extends CloudMessageValue>(topic: string, cb: OnMessageCallback<T>): Promise<void>;
4040
unsubscribe(topic: string): Promise<void>;
41+
sendMessage(topic: string, message: string): Promise<void>;
4142
sendMessage(topic: string, message: ArrayBuffer): Promise<void>;
4243

4344
openCloudMonitor<T extends CloudMessageValue>(deviceId: string, cb: OnMessageCallback<T>): Promise<void>;
45+
writeCloudMonitor(deviceId: string, message: string): Promise<void>;
4446
writeCloudMonitor(deviceId: string, message: ArrayBuffer): Promise<void>;
4547
closeCloudMonitor(deviceId: string): Promise<void>;
4648

47-
sendProperty<T extends CloudMessageValue>(thingId: string, name: string, value: T, timestamp: number): Promise<void>;
49+
sendProperty<T extends CloudMessageValue>(thingId: string, name: string, value: T, timestamp?: number): Promise<void>;
4850
onPropertyValue<T extends CloudMessageValue>(thingId: string, name: string, cb: OnMessageCallback<T>): Promise<void>;
4951
}

src/index.lib.ts

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*
1919
*/
2020

21+
import CBOR from './cbor';
2122
import fetch from "node-fetch";
2223
import { HttpClientFactory } from './http/HttpClientFactory';
2324
import { ArduinoCloudClient } from "./client/ArduinoCloudClient";
@@ -27,4 +28,5 @@ import { TokenConnectionBuilder } from "./builder/TokenConnectionBuilder";
2728
const builders = [new TokenConnectionBuilder(), new APIConnectionBuilder(HttpClientFactory.Create(fetch))];
2829
const DefaultClient = new ArduinoCloudClient(builders);
2930

31+
export { CBOR };
3032
export default DefaultClient;

src/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020

2121
import "whatwg-fetch";
22+
import CBOR from './cbor';
2223
import { HttpClientFactory } from './http/HttpClientFactory';
2324
import { ArduinoCloudClient } from "./client/ArduinoCloudClient";
2425
import { APIConnectionBuilder } from "./builder/APIConnectionBuilder";
@@ -27,4 +28,5 @@ import { TokenConnectionBuilder } from "./builder/TokenConnectionBuilder";
2728
const builders = [new TokenConnectionBuilder(), new APIConnectionBuilder(HttpClientFactory.Create(fetch))];
2829
const DefaultClient = new ArduinoCloudClient(builders);
2930

31+
export { CBOR };
3032
export default DefaultClient;

src/utils/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function toBuffer(ab: ArrayBuffer): Buffer {
4949
return buffer;
5050
}
5151

52-
function arrayBufferToBase64(buf: Buffer): string {
52+
function arrayBufferToBase64(buf: ArrayBuffer): string {
5353
let binary = '';
5454
const bytes = new Uint8Array(buf);
5555
const len = bytes.byteLength;

0 commit comments

Comments
 (0)