koa3-wechat
Version:
wechat api modified by windsome.feng
127 lines (93 loc) • 4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BackendRedis = exports.BackendMemory = undefined;
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _debug2 = require('debug');
var _debug3 = _interopRequireDefault(_debug2);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _redis = require('redis');
var _redis2 = _interopRequireDefault(_redis);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug3.default)('app:wechat:backend');
var BackendMemory = exports.BackendMemory = function BackendMemory() {
var _this = this;
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _classCallCheck3.default)(this, BackendMemory);
this.mset = function (main, sub, value) {
return new _promise2.default(function (resolve, reject) {
if (!_this.data[main]) _this.data[main] = {};
_this.data[main][sub] = value;
resolve(value);
});
};
this.mget = function (main, sub) {
return new _promise2.default(function (resolve, reject) {
if (!_this.data[main]) _this.data[main] = {};
var value = _this.data[main][sub];
resolve(value);
});
};
};
BackendMemory.data = {};
var BackendRedis = exports.BackendRedis = function (_BackendMemory) {
(0, _inherits3.default)(BackendRedis, _BackendMemory);
function BackendRedis() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _classCallCheck3.default)(this, BackendRedis);
var _this2 = (0, _possibleConstructorReturn3.default)(this, (BackendRedis.__proto__ || (0, _getPrototypeOf2.default)(BackendRedis)).call(this, opts));
_this2.mset = function (main, sub, value) {
return new _promise2.default(function (resolve, reject) {
_this2.redisClient.hmset(main, sub, (0, _stringify2.default)(value), function (error, res) {
if (error) {
debug('warning! save to redis fail, but we return ok, because we store it in class cache [accessTokenBase]!', err, res);
reject(error);
} else resolve(value);
});
}).catch(function (error) {
reject(error);
});
};
_this2.mget = function (main, sub) {
return new _promise2.default(function (resolve, reject) {
_this2.redisClient.hmget(main, sub, function (error, reply) {
if (error) {
reject(error);
} else {
if (reply.length > 0) {
var value = JSON.parse(reply[0]);
resolve(value);
} else {
resolve(null);
}
}
});
}).catch(function (error) {
reject(error);
});
};
if (opts.url) _this2.redisClient = _redis2.default.createClient(opts.url);else _this2.redisClient = _redis2.default.createClient();
_this2.redisClient.on('error', function (error) {
debug('Error', error);
});
return _this2;
}
return BackendRedis;
}(BackendMemory);
exports.default = function (opts) {
if (opts && opts.type === 'redis') return new BackendRedis({ url: opts.url });
return new BackendMemory();
};