api.js 1.02 KB
const logger = global.logger

class Api {
  constructor(endpoint) {
    this.endpoint = endpoint
    this.request = require('request').defaults({
      baseUrl: endpoint,
      timeout: 10000
    })
  }

  get(url, data) {
    return new Promise((resolve, reject) => {
      return this.request.get(url, {
        qs: data,
        json: true
      }, (err, res, body) => {
        if (err) {
          logger.error('[API]', this.endpoint + url, err)
          return reject(err)
        }
        
        logger.log('[API]', this.endpoint + url, JSON.stringify(data))
        resolve(body)
      })
    })
  }

  post(url, data) {
    return new Promise((resolve, reject) => {
      return this.request.post(url, {
        body: data,
        json: true
      }, (err, res, body) => {
        if (err) {
          logger.error('[API]', this.endpoint + url, err)
          return reject(err)
        }

        logger.log('[API]', this.endpoint + url, JSON.stringify(data))
        resolve(body)
      })
    })
  }
}

module.exports = Api