Skip to content

Version 0.6.0 #238

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Aug 18, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
060d05c
Import node-red lib + massive refactoring
pirropirro Jun 15, 2020
dfc2b1d
Enable API Connection
pirropirro Jun 16, 2020
783cbff
Set config file
pirropirro Jun 16, 2020
f8e664f
Refactor w/ HttpClient
pirropirro Jun 16, 2020
dc0a1a1
Add encode uri
pirropirro Jun 16, 2020
9490c9a
Replace body on request
pirropirro Jun 16, 2020
ee5c876
Remove useless stringify
pirropirro Jun 16, 2020
ed691ef
Fix minor bug
pirropirro Jun 16, 2020
13c2a49
Fix typings
pirropirro Jun 16, 2020
2a9b541
Fixed test
pirropirro Jun 17, 2020
e5325f7
Fix tests
pirropirro Jun 17, 2020
b3bebc3
Bump beta version
pirropirro Jun 17, 2020
3362cf7
Rename
pirropirro Jun 17, 2020
8344fe3
Bump version
pirropirro Jun 17, 2020
df79564
Add default
pirropirro Jun 17, 2020
79fe50c
Fix minor bugs
pirropirro Jun 18, 2020
2432767
Remove default export
pirropirro Jun 18, 2020
509b194
Lint
pirropirro Jun 18, 2020
2b54033
Add lint process before build
pirropirro Jun 18, 2020
96917e0
Bump version
pirropirro Jun 18, 2020
4821372
Set useCloudProtocolV2 as true by default
pirropirro Jun 18, 2020
71ce299
Bump version
pirropirro Jun 18, 2020
1bafd8d
Run tests using GitHub actions
Jun 18, 2020
ce875a4
Update readme and add example (#234)
Jun 18, 2020
2367ab6
Add lint before run test
pirropirro Jun 18, 2020
a29c362
Merge pull request #236 from arduino/fmirabito/gh_actions
Jun 18, 2020
f4abbd9
Fix 0 values
pirropirro Jun 19, 2020
aa483f1
Bump version
pirropirro Jun 19, 2020
7a242ff
Fix typo
pirropirro Jun 19, 2020
a90d279
Bump version
pirropirro Jun 19, 2020
8075ba1
Add wildcard on example deps
pirropirro Jun 19, 2020
0c5ab14
Fix mqtt version
pirropirro Aug 14, 2020
3e213fa
Bump version
pirropirro Aug 14, 2020
29c98c3
Remove beta version
pirropirro Aug 18, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixed test
  • Loading branch information
pirropirro committed Jun 17, 2020
commit 2a9b54129230229e3f32bd6b19815faa10455b1a
93 changes: 93 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"@rollup/plugin-node-resolve": "^8.0.1",
"@rollup/plugin-url": "^5.0.1",
"@types/expect.js": "~0.3.29",
"@types/jest": "^26.0.0",
"@types/jws": "^3.2.2",
"@types/mqtt": "^2.5.0",
"@types/node-fetch": "^2.5.7",
Expand All @@ -47,7 +48,7 @@
"test": "npm run build && jest --config ./jest.config.js",
"lint": "./node_modules/.bin/eslint src",
"lint-fix": "./node_modules/.bin/eslint --fix src --ext .js",
"clean": "rimraf lib es",
"clean": "rimraf lib es dist",
"build": "npm run clean && rollup -c && rollup -c ./rollup.config.lib.js"
},
"repository": {
Expand All @@ -62,6 +63,7 @@
"iot"
],
"contributors": [
"Fabrizio Mirabito <f.mirabito@arduino.cc>"
"Fabrizio Mirabito <f.mirabito@arduino.cc>",
"Francesco Pirrotta <f.pirrotta@arduino.cc>"
]
}
10 changes: 4 additions & 6 deletions src/cbor/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { encode, decode, CBORValue } from '@arduino/cbor-js';
import { encode, decode, CBORValue } from '@arduino/cbor-js';

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

function toString(value: CBORValue[]): string {
const encoded = encode(value);
return this.arrayBufferToBase64(encoded);
return Utils.arrayBufferToBase64(encoded);
};

function toCloudProtocolV2(cborValue: CBORValue): CBORValue {
Expand Down Expand Up @@ -53,10 +53,8 @@ function toCloudProtocolV2(cborValue: CBORValue): CBORValue {
}

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

if (Utils.isNumber(value)) parsed.v = value;
if (Utils.isString(value)) parsed.vs = value;
Expand Down
15 changes: 7 additions & 8 deletions src/client/ArduinoCloudClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import CBOR from "../cbor";
import Utils from "../utils";
import { IConnectionBuilder } from '../builder/IConnectionBuilder';
import { IConnection, CloudMessage } from "../connection/IConnection";
import { IArduinoCloudClient, CloudOptions, OnMessageCallback, CloudMessageValue, isBrowserOptions } from "./IArduinoCloudClient";
import { IArduinoCloudClient, CloudOptions, OnMessageCallback, CloudMessageValue } from "./IArduinoCloudClient";

const NOOP = () => null;
export class ArduinoCloudClient implements IArduinoCloudClient {
Expand Down Expand Up @@ -137,11 +137,12 @@ export class ArduinoCloudClient implements IArduinoCloudClient {
});
}

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

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

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

public closeCloudMonitor<T>(deviceId: string): Promise<void> {
public closeCloudMonitor(deviceId: string): Promise<void> {
return this.unsubscribe(`/a/d/${deviceId}/s/o`);
}

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

let subscription: Subscription;
const subject = new Subject<CloudMessage>();

this.connection.subscribe(topic, (err) => {
if (err) throw new Error(`subscription failed: ${err.toString()}`);

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

const originalMethod = subject.unsubscribe;
subject.unsubscribe = () => {

subscription.unsubscribe();
originalMethod();
}
Expand Down
4 changes: 3 additions & 1 deletion src/client/IArduinoCloudClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,14 @@ export interface IArduinoCloudClient {

subscribe<T extends CloudMessageValue>(topic: string, cb: OnMessageCallback<T>): Promise<void>;
unsubscribe(topic: string): Promise<void>;
sendMessage(topic: string, message: string): Promise<void>;
sendMessage(topic: string, message: ArrayBuffer): Promise<void>;

openCloudMonitor<T extends CloudMessageValue>(deviceId: string, cb: OnMessageCallback<T>): Promise<void>;
writeCloudMonitor(deviceId: string, message: string): Promise<void>;
writeCloudMonitor(deviceId: string, message: ArrayBuffer): Promise<void>;
closeCloudMonitor(deviceId: string): Promise<void>;

sendProperty<T extends CloudMessageValue>(thingId: string, name: string, value: T, timestamp: number): Promise<void>;
sendProperty<T extends CloudMessageValue>(thingId: string, name: string, value: T, timestamp?: number): Promise<void>;
onPropertyValue<T extends CloudMessageValue>(thingId: string, name: string, cb: OnMessageCallback<T>): Promise<void>;
}
2 changes: 2 additions & 0 deletions src/index.lib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*
*/

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

export { CBOR };
export default DefaultClient;
2 changes: 2 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
*/

import "whatwg-fetch";
import CBOR from './cbor';
import { HttpClientFactory } from './http/HttpClientFactory';
import { ArduinoCloudClient } from "./client/ArduinoCloudClient";
import { APIConnectionBuilder } from "./builder/APIConnectionBuilder";
Expand All @@ -27,4 +28,5 @@ import { TokenConnectionBuilder } from "./builder/TokenConnectionBuilder";
const builders = [new TokenConnectionBuilder(), new APIConnectionBuilder(HttpClientFactory.Create(fetch))];
const DefaultClient = new ArduinoCloudClient(builders);

export { CBOR };
export default DefaultClient;
2 changes: 1 addition & 1 deletion src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ function toBuffer(ab: ArrayBuffer): Buffer {
return buffer;
}

function arrayBufferToBase64(buf: Buffer): string {
function arrayBufferToBase64(buf: ArrayBuffer): string {
let binary = '';
const bytes = new Uint8Array(buf);
const len = bytes.byteLength;
Expand Down
Loading