UNPKG

koa3-wechat

Version:

wechat api modified by windsome.feng

127 lines (93 loc) 4 kB
'use strict'; 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(); };