-
Notifications
You must be signed in to change notification settings - Fork 0
/
integration.js
56 lines (43 loc) · 1.56 KB
/
integration.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
'use strict';
const _validateOptions = require('./src/validateOptions');
const createRequestWithDefaults = require('./src/createRequestWithDefaults');
const getLookupResults = require('./src/getLookupResults');
const { parseErrorToReadableJSON } = require('./src/dataTransformations');
const sendMessage = require('./src/sendMessage');
const loadMoreSearchMessages = require('./src/loadMoreSearchMessages');
let Logger;
let requestWithDefaults;
const startup = async (logger) => {
Logger = logger;
requestWithDefaults = createRequestWithDefaults(Logger);
};
const doLookup = async (entities, options, cb) => {
Logger.debug({ entities }, 'Entities');
options.url = options.url.endsWith('/') ? options.url.slice(0, -1) : options.url;
let lookupResults;
try {
lookupResults = await getLookupResults(
entities,
options,
requestWithDefaults,
Logger
);
} catch (error) {
const err = parseErrorToReadableJSON(error);
Logger.error({ error, formattedError: err }, 'Get Lookup Results Failed');
return cb({ detail: error.message || 'Command Failed', err });
}
Logger.trace({ lookupResults }, 'Lookup Results');
cb(null, lookupResults);
};
const getOnMessage = { sendMessage, loadMoreSearchMessages };
const onMessage = ({ action, data: actionParams }, options, callback) =>
getOnMessage[action](actionParams, options, requestWithDefaults, callback, Logger);
const validateOptions = (options, callback) =>
_validateOptions(options, callback, Logger);
module.exports = {
startup,
validateOptions,
doLookup,
onMessage
};