Passed
Pull Request — master (#2)
by André
01:58 queued 10s
created

src/out.js   A

Complexity

Total Complexity 7
Complexity/F 1.4

Size

Lines of Code 50
Function Count 5

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 0
Metric Value
cc 0
wmc 7
eloc 31
c 6
b 0
f 0
nc 1
mnd 2
bc 8
fnc 5
dl 0
loc 50
rs 10
bpm 1.6
cpm 1.4
noi 2

1 Function

Rating   Name   Duplication   Size   Complexity  
A out.js ➔ ??? 0 48 2
1
'use strict'
2
3
module.exports = (input, callback) => {
4
	const mqtt = require('mqtt')
5
	const configuration = require('./configuration')
6
	const validate = require('./validate')
7
	let error = null
8
	let output = null
9
10
	validate.configuration(input, (validatedInput, thrownError) => {
11
		input = validatedInput
12
		error = thrownError
13
	})
14
15
	// Send MQTT
16
	if ( !error ) {
17
		let configurationMqtt = configuration.mqtt(input)
18
		let client = mqtt.connect(input.source.url, configurationMqtt)
19
20
		client.on('connect', () => {
21
			client.subscribe(input.source.topic, (errorConnection) => {
22
				if ( !errorConnection ) {
23
					client.publish(input.source.topic, input.params.payload, {
24
						qos: input.params.qos,
25
						retain: false
26
					})
27
				} else {
28
					error = errorConnection
29
				}
30
			})
31
		})
32
33
		client.on('message', (topic, message) => {
0 ignored issues
show
Unused Code introduced by
The parameter topic is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter message is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
34
			client.end()
35
		})
36
37
		output = {
38
			'version': {'ref': 'output'},
39
			'metadata': [
40
				{'name': 'message', 'value': input.params.payload.toString()},
41
				{'name': 'qos', 'value': input.params.qos.toString()},
42
				{'name': 'timestamp', 'value': Date.now().toString()},
43
				{'name': 'topic', 'value': input.source.topic}
44
			]
45
		}
46
	}
47
48
	callback(error, output)
49
50
}
51