mj-pkg
Version:
A Node.js library that abstracts away differences among popular marijuana POS providers.
69 lines (51 loc) • 1.55 kB
JavaScript
;
var version = require('../package.json').version;
var url = require('url'),
request = require('request'),
Promise = require('promise');
GLOBAL.MJ = function(options) {};
MJ.Errors = {
'InvalidDriver': require('./Errors/invalid-driver'),
'InvalidCredentials': require('./Errors/invalid-credentials'),
'MessedUp': require('./Errors/messed-up')
};
MJ.getDriver = function(driver, options) {
return new MJ.Drivers[driver](options).connect();
};
MJ.utils = {
forEach: function(obj, fn, binding) {
Object.keys(obj).forEach(function(key) {
fn.call(this, obj[key], key);
}, (binding || this));
},
map: function(obj, fn, binding) {
var arr = [];
Object.keys(obj).forEach(function(key) {
arr.push(fn.call(this, obj[key], key));
}, (binding || this));
return arr;
}
};
MJ.Drivers = {};
MJ.Drivers.Add = function(name, driver) {
MJ.Drivers[name] = driver;
};
MJ.Drivers.Base = function() {};
MJ.Drivers.Create = function(obj) {
if (!obj.run || !obj.connect || !obj.init) {
throw new MJ.Errors.InvalidDriver();
}
var fn = function() {
if (obj.init && typeof obj.init == 'function') {
obj.init.apply(this, arguments);
}
};
MJ.utils.forEach(obj, function(val, key) {
fn.prototype[key] = val;
}, fn);
return fn;
};
(['mj-freeway']).forEach(function(driver) {
MJ.Drivers.Add(driver, require('./Drivers/' + driver));
});
module.exports = MJ;