All files / src/core core.js

100% Statements 17/17
100% Branches 14/14
100% Functions 6/6
100% Lines 17/17
1 2 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43          61x       48x 104x 10x           73x 73x 73x 2x 1x   1x   71x 68x 15x   53x   3x 1x   2x                
import request from 'request';
 
class Core {
  constructor(options) {
    // Use global Promise by default
    this.Promise = options.Promise || Promise;
  }
 
  checkValidConfig(fields, config) {
    fields.forEach((field) => {
      if (!config[field]) {
        throw new Error(`${this.name}: No ${field} provided`);
      }
    });
  }
 
  request(options, callback) {
    return new this.Promise((resolve, reject) => {
      request(options, (error, response, body) => {
        if (error) {
          if (callback) {
            callback(error);
          } else {
            reject(error);
          }
        } else if (response.statusCode === 200) {
          if (callback) {
            callback(null, body);
          } else {
            resolve(body);
          }
        } else if (callback) {
          callback(response);
        } else {
          reject(response);
        }
      });
    });
  }
}
 
export default Core;