-
Notifications
You must be signed in to change notification settings - Fork 6
/
Network.ts
106 lines (94 loc) · 2.84 KB
/
Network.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import TagoIOModule, { ConnectorModuleParams } from "../../common/TagoIOModule";
import { NetworkDeviceListQuery, INetworkInfo, NetworkDeviceListQueryInfo } from "./network.types";
import { GenericID, GenericToken } from "../../common/common.types";
import dateParser from "../Utils/dateParser";
import { ConfigurationParams } from "../Account/devices.types";
class Network extends TagoIOModule<ConnectorModuleParams> {
/**
* Get information about the current network
*/
public async info(): Promise<INetworkInfo> {
const result = await this.doRequest<INetworkInfo>({
path: "/info",
method: "GET",
params: {
details: this.params.details,
},
});
return result;
}
/**
* Get a valid token using token serie
* @param serieNumber
* @param authorization
*/
public async resolveToken(serieNumber: string, authorization?: string): Promise<GenericToken> {
let path = `/integration/network/resolve/${serieNumber}`;
if (authorization) path = `${path}/${authorization}`;
const result = await this.doRequest<GenericToken>({
path,
method: "GET",
params: {
details: this.params.details,
},
});
return result;
}
/**
* Retrieves a list with all devices tokens related to
* network and connector. Network require_devices_access
* param need to be true.
* @default
* queryObj: {
* page: 1,
* filter: {},
* amount: 20,
* orderBy: "name,asc"
* }
* @param connectorID Connector identification
* @param queryObj Search query params
*/
public async deviceList(
connectorID: GenericID,
queryObj?: NetworkDeviceListQuery
): Promise<NetworkDeviceListQueryInfo[]> {
let result = await this.doRequest<NetworkDeviceListQueryInfo[]>({
path: `/integration/network/${connectorID}/devices`,
method: "GET",
params: {
page: queryObj?.page || 1,
filter: queryObj?.filter || {},
amount: queryObj?.amount || 20,
orderBy: queryObj?.orderBy ? `${queryObj.orderBy[0]},${queryObj.orderBy[1]}` : "name,asc",
},
});
result = result.map((data) =>
dateParser(data, ["last_input", "last_output", "updated_at", "created_at", "inspected_at"])
);
return result;
}
/**
* Create or edit param for the Device in network
* @param deviceID Device ID
* @param configObj Configuration Data
* @param paramID Parameter ID
*/
public async deviceParamSet(
deviceID: GenericID,
configObj: Partial<ConfigurationParams>,
paramID?: GenericID
): Promise<string> {
const result = await this.doRequest<string>({
path: `/integration/network/${deviceID}/params`,
method: "POST",
body: paramID
? {
id: paramID,
...configObj,
}
: configObj,
});
return result;
}
}
export default Network;