-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
99 lines (84 loc) · 2.1 KB
/
index.js
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
/*
* Module name: net.vorotnikov.influx
* Module author: Petar Vorotnikov
*/
const InfluxHelper = require('./influx')
const MODULE_NAME = 'net.vorotnikov.influx'
let influx = null
async function prepare() {
console.log(`${MODULE_NAME}.prepare() called`)
}
async function load() {
console.log(`${MODULE_NAME}.load() called`)
}
async function getCapabilities() {
console.log(`${MODULE_NAME}.getCapabilities() called`)
}
async function start() {
console.log(`${MODULE_NAME}.start() called`)
influx = new InfluxHelper()
await influx.init()
}
async function suspend() {
console.log(`${MODULE_NAME}.suspend() called`)
}
async function resume() {
console.log(`${MODULE_NAME}.resume() called`)
}
async function stop() {
console.log(`${MODULE_NAME}.stop() called`)
influx = null
}
async function unload() {
console.log(`${MODULE_NAME}.unload() called`)
}
async function cleanup() {
console.log(`${MODULE_NAME}.cleanup() called`)
}
/**
* Process incoming message
* @param {Object} context
* @param {Object} context.arguments
*/
async function _process(context) {
console.log(`${MODULE_NAME}.process() called`)
const { topic, message, appId, gatewayId } = context
let points = null
switch (Object.prototype.toString.call(message)) {
case '[object Array]':
points = message
break
case '[object Object]':
points = [message]
break
case '[object Uint8Array]':
case '[object String]':
try {
const parsedMessage = JSON.parse(message)
context.message = parsedMessage
await _process(context)
} catch (err) {
console.error(err.message)
}
break
default:
console.warn('Impropert message')
}
if (points) {
await influx.write(points)
}
return message
}
// mandatory interface
module.exports = {
prepare,
load,
getCapabilities,
start,
suspend,
resume,
stop,
unload,
cleanup,
process: _process,
}