Passed
Push — master ( efcce7...8e01eb )
by Muhammad Dyas
01:31
created

api.ts ➔ callMessageApi   B

Complexity

Conditions 8

Size

Total Lines 26
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 26
rs 7.3333
c 0
b 0
f 0
cc 8
1
import {google} from 'googleapis';
2
3
/**
4
 * Create google api credentials
5
 *
6
 * @returns {object} google.chat
7
 */
8
function gAuth() {
9
  // Use default credentials (service account)
10
  const credentials = new google.auth.GoogleAuth({
11
    // keyFile: path.join(__dirname, '../../tests/creds.json'),
12
    scopes: ['https://www.googleapis.com/auth/chat.bot'],
13
  });
14
  return google.chat({
15
    version: 'v1',
16
    auth: credentials,
17
  });
18
}
19
20
/**
21
 * Call Google API using default credentials (service account)
22
 *
23
 * @param {string} action - request action(create,update,get,delete)
24
 * @param {object} request - request body
25
 * @returns {object} Response from google api
26
 */
27
export async function callMessageApi(action: string, request: object) {
28
  const chatApi = gAuth();
29
  let response;
30
31
  try {
32
    if (action === 'create') {
33
      response = await chatApi.spaces.messages.create(request);
34
    } else if (action === 'update') {
35
      response = await chatApi.spaces.messages.update(request);
36
    }
37
  } catch (error) {
38
    // @ts-ignore: all error should have this method
39
    const errorMessage = error.message ?? error.toString() ?? 'Unknown error';
40
    console.error('Error:', action, JSON.stringify(request), response, errorMessage);
41
    throw new Error(errorMessage);
42
  }
43
44
  return response;
45
}
46