Passed
Push — master ( aacec4...09a54a )
by Muhammad Dyas
01:37 queued 12s
created

src/helpers/response.js   A

Complexity

Total Complexity 1
Complexity/F 1

Size

Lines of Code 13
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 8
mnd 0
bc 0
fnc 1
dl 0
loc 13
rs 10
bpm 0
cpm 1
noi 1
c 0
b 0
f 0
1
/**
2
 * Creates an action response.
3
 * Action Response is parameter that a Chat app can use to configure how its
4
 * response is posted.
5
 * ref: https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#actionresponse
6
 *
7
 * @param {string} message - Response message
8
 * @param {string} status - Status of https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#Code
9
 * @returns {object} - ActionResponse
10
 */
11
export function buildActionResponseStatus(message, status = 'OK') {
12
  return {
13
    actionResponse: {
14
      type: 'DIALOG',
15
      dialogAction: {
16
        actionStatus: {
17
          statusCode: status,
18
          userFacingMessage: message,
19
        },
20
      },
21
    },
22
  };
23
}
24
25
/**
26
 * Creates an action response with specific type
27
 * ref: https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#responsetype
28
 * @param {string} type - NEW_MESSAGE | UPDATE_MESSAGE | UPDATE_USER_MESSAGE_CARDS | REQUEST_CONFIG | DIALOG
29
 * @param {object} message - Card message either text or cardsV2
30
 * @returns {object} - ActionResponse
31
 */
32
export function buildActionResponse(type, message) {
33
  const responseBody = {
34
    actionResponse: {
35
      type,
36
    },
37
  };
38
  if (type === 'DIALOG') {
39
    responseBody.dialogAction = {
40
      dialog: {
41
        body: message.cardsV2,
42
      },
43
    };
44
    return responseBody;
45
  } else {
46
    return {...responseBody, ...message};
47
  }
48
}
49