UNPKG

hummingbird-api

Version:

A NodeJS wrapper for the Hummingbird API V1 and V2.

52 lines (46 loc) 1.67 kB
const req = require("request"); module.exports = class Helper { constructor(api_key, version, debug) { this.request = req.defaults({ "headers": { "X-Client-Id": api_key }, "baseUrl": `https://hummingbird.me/api/v${version}/` }); this.debug = debug; }; get(uri, qs, retry = true) { if (this.debug) console.warn(`Making request to: '${uri}'.`); return new Promise((resolve, reject) => { this.request.get({ uri, qs }, (err, res, body) => { if (err && retry) { if (this.debug) console.warn(`${err.code} trying again.`); return resolve(this.get(uri, qs, false)); } else if (err) { return reject(err); } else if (!body || res.statusCode >= 400) { return reject(new Error(`No data found with url: '${uri}', statuscode: ${res.statusCode}`)); } else { return resolve(JSON.parse(body)); } }); }); }; post(uri, qs, retry = true) { if (this.debug) console.warn(`Making request to: '${uri}'.`); return new Promise((resolve, reject) => { this.request.post({ uri, qs }, (err, res, body) => { if (err && retry) { if (this.debug) console.warn(`${err.code} trying again.`); return resolve(this.get(uri, qs, false)); } else if (err) { return reject(err); } else if (!body || res.statusCode >= 400) { return reject(new Error(`No data found for url: '${uri}', statuscode is: ${res.statusCode}`)); } else { return resolve(JSON.parse(body)); } }); }); }; };