moip-sdk-node-ts
Version:
Moip v2 API wrapper
53 lines (52 loc) • 2.11 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const safe_buffer_1 = require("safe-buffer");
const resources_1 = __importDefault(require("./resources"));
const lodash_1 = require("lodash");
const environment = (isProduction) => {
return isProduction ? 'production' : 'sandbox';
};
const authorization = (opts) => {
let auth;
if (opts.accessToken) {
auth = 'OAuth ' + opts.accessToken;
}
else if (opts.token && opts.key) {
auth = 'Basic ' + new safe_buffer_1.Buffer(opts.token + ':' + opts.key).toString('base64');
}
else {
throw Error('You must provide either an `accessToken` or your `token` with the corresponding `key`.');
}
return auth;
};
const binder = (func, args) => lodash_1.bind(func, null, args);
const looper = (result, resource, authObject) => lodash_1.reduce(resource, (result, func, key) => {
result[key] = lodash_1.isFunction(func)
? binder(func, authObject)
: looper(result, func, authObject);
return result;
}, {});
const connect = (opts) => {
const auth = authorization(opts);
const env = environment(opts.production);
return lodash_1.reduce(resources_1.default, (result, resource, key) => {
result[key] = looper(result, resource, { auth, env });
return result;
}, {});
};
__exportStar(require("./resources"), exports);
__exportStar(require("./types"), exports);
exports.default = connect;