UNPKG

rebit

Version:
193 lines (181 loc) 5.69 kB
var Promise = require('bluebird'); var httpClient = require('superagent'); var fs = require('fs'); function User(opts) { if (!opts.token) { throw new Error('MissingAPIToken'); } this.opts = opts; this.token = opts.token; this.vendorToken = opts.vendorToken; this.apiEndpoint = opts.apiEndpoint; this.userAgent = opts.userAgent; } User.prototype.getAll = function() { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } httpClient.get(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users/') .set('User-Agent', _this.userAgent) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.get = function(userId) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!userId) { return reject(new Error('MissingRequiredParameter')); } httpClient.get(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users/' + userId) .set('User-Agent', _this.userAgent) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.findByEmail = function(email) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!email) { return reject(new Error('MissingRequiredParameter')); } httpClient.get(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users/find_by_email') .set('User-Agent', _this.userAgent) .query({email: email}) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.create = function(user) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!user.email) { return reject(new Error('MissingRequiredParameter')); } httpClient.post(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users') .set('User-Agent', _this.userAgent) .send({user: user}) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.instantRemit = function(user) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!user.email || !user.amount) { return reject(new Error('MissingRequiredParameters')); } httpClient.post(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users/instant_remit') .set('User-Agent', _this.userAgent) .send(user) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.update = function(userId, user) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!userId || !user) { return reject(new Error('MissingRequiredParameter')); } httpClient.post(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users/' + userId) .set('User-Agent', _this.userAgent) .send({user: user}) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.updatePassword = function(userId, user) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!userId || !user.old_password || !user.password || !user.password_confirmation) { return reject(new Error('MissingRequiredParameter')); } httpClient.post(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users/' + userId) .set('User-Agent', _this.userAgent) .send({user: user}) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.delete = function(userId) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!userId) { reject(new Error('MissingRequiredParameter')); } httpClient.del(_this.apiEndpoint + 'vendors/' + _this.vendorToken + '/users/' + userId) .set('User-Agent', _this.userAgent) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } User.prototype.upload = function(userId, file) { var _this = this; return new Promise(function(resolve, reject) { if (!_this.vendorToken) { return reject(new Error('VendorTokenRequired')); } else if (!userId) { return reject(new Error('MissingRequiredParameter')); } var attach = 'data:image/jpg;base64,' + fs.readFileSync(file, {encoding: 'base64'}); httpClient.post(_this.apiEndpoint +'vendors/' + _this.vendorToken + '/users' + userId + '/uploads') .set('User-Agent', _this.userAgent) .send({file: attach}) .end(function(err, res) { if (err) { return reject(err); } resolve(res.body); }); }); } module.exports = User;