Blame view

lib/coreapi.js 1.64 KB
ab5828535   Adhidarma Hadiwinoto   Ready to rock
1
  const request = require('request');
810fa18da   Adhidarma Hadiwinoto   Migrate to tektra...
2
  const logger = require('tektrans-logger');
ab5828535   Adhidarma Hadiwinoto   Ready to rock
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
  const coreUrl = require('komodo-sdk/core-url');
  
  logger.verbose(`CORE URL: ${coreUrl}`);
  
  function doRequest(params, cb) {
      return new Promise((resolve) => {
          const options = {
              url: `${coreUrl}/${params.path.replace(/^\/+/, '')}`,
              method: params.method || 'GET',
              qs: params.qs || null,
          };
  
          logger.verbose('Requesting to CORE', {
              xid: params.xid, method: options.method, fullpath: options.url, qs: options.qs,
          });
  
          request(options, (err, res, body) => {
              if (err) {
                  logger.warn(`COREAPI: Error doing HTTP ${options.method} to CORE. ${err.toString()}`, { xid: params.xid });
                  resolve(null);
                  if (typeof cb === 'function') cb(err);
                  return;
              }
  
              if (res.statusCode !== 200) {
                  logger.warn(`COREAPI: CORE returning HTTP STATUS CODE ${res.statusCode}, not 200`, { xid: params.xid, body });
                  resolve(null);
188eec064   Adhidarma Hadiwinoto   Perbaikan coreapi
30
                  if (typeof cb === 'function') cb('NON_HTTP_STATUS_200');
ab5828535   Adhidarma Hadiwinoto   Ready to rock
31
32
33
34
35
36
37
38
39
                  return;
              }
  
              let bodyObject;
              try {
                  bodyObject = JSON.parse(body);
              } catch (e) {
                  logger.verbose('COREAPI: CORE respond is not a JSON string');
                  resolve(body);
188eec064   Adhidarma Hadiwinoto   Perbaikan coreapi
40
                  if (typeof cb === 'function') cb(e, body);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
41
42
43
44
                  return;
              }
  
              resolve(bodyObject);
188eec064   Adhidarma Hadiwinoto   Perbaikan coreapi
45
              if (typeof cb === 'function') cb(null, bodyObject);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
46
47
48
49
50
          });
      });
  }
  
  module.exports = doRequest;