Failed Conditions
Push — master ( 2a10ca...dc3f81 )
by Yo
01:45
created

lib/client/index.js   A

Complexity

Total Complexity 11
Complexity/F 2.75

Size

Lines of Code 79
Function Count 4

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 0
c 1
b 0
f 0
nc 32
dl 0
loc 79
ccs 24
cts 24
cp 1
crap 0
rs 10
wmc 11
mnd 2
bc 8
fnc 4
bpm 2
cpm 2.75
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
B index.js ➔ ??? 0 60 7
1
"use strict";
2
3 8
const requestPromise = require('request-promise-native');
4 8
const logger = require('../logger/taskLogger')('Client');
5 8
const Response = require('../model/Response');
6 8
const pkg = require('../../package.json');
7
8 8
const defaultOptionList = {
9
    headers: {'User-Agent': pkg.name},
10
    json: true,
11
    simple: false,
12
    resolveWithFullResponse: true
13
};
14
15
/**
16
 * @param {Request} request
17
 *
18
 * @returns {Promise<Response|Error>}
19
 */
20 8
module.exports = request => {
21 7
    const optionList = Object.assign(
22
        {},
23
        defaultOptionList,
24
        {
25
            uri: request.getUri(),
26
            method: request.getMethod(),
27
            headers: Object.assign({}, defaultOptionList.headers, request.getHeaders()),
28
            json: request.isJson()
29
        }
30
    );
31
32 7
    if (request.getPayload() && Object.keys(request.getPayload()).length > 0) {
33 1
        optionList.body = request.getPayload();
34
    } else {
35 6
        optionList.body = optionList.json === true ? {} : '';
36
    }
37 7
    if (request.getQueryString() && Object.keys(request.getQueryString()).length > 0) {
38 1
        optionList.qs = request.getQueryString();
39
    } else {
40 6
        optionList.qs = optionList.json === true ? {} : null;
41
    }
42
43 7
    const transformResponseToResponseObject = response => {
44 5
        return new Response(
45
            response.body,
46
            response.statusCode,
47
            response.headers,
48
            request
49
        );
50
    };
51
52 7
    const transformErrorToResponseObject = error => {
53 2
        logger.debug('[Error] Conversion to Response.', {options: optionList});
54
55 2
        return Promise.resolve(new Response(
56
            optionList.json === true ? {
57
                error: error.error.code,
58
                message: error.message
59
            } : `${error.error.code} ${error.message}`,
60
            500,
61
            {},
62
            request
63
        ));
64
    };
65
66 7
    const logResponseObject = response => {
67 7
        logger.debug('[Reponse]', {response: response, options: optionList});
68
69 7
        return response;
70
    };
71
72 7
    logger.debug('[Request]', {options: optionList});
73
74 7
    const transform = requestPromise(optionList)
75
        .then(transformResponseToResponseObject, transformErrorToResponseObject);
76
77 7
    return transform
78
        .then(logResponseObject);
79
};
80