UNPKG

awv3

Version:
146 lines (109 loc) 5.16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _parser = require('../core/parser'); var _parser2 = _interopRequireDefault(_parser); var _base = require('./base'); var _base2 = _interopRequireDefault(_base); var _events = require('events'); var _events2 = _interopRequireDefault(_events); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Rest = function (_Base) { (0, _inherits3.default)(Rest, _Base); function Rest(options) { (0, _classCallCheck3.default)(this, Rest); return (0, _possibleConstructorReturn3.default)(this, (Rest.__proto__ || (0, _getPrototypeOf2.default)(Rest)).call(this, options)); } (0, _createClass3.default)(Rest, [{ key: 'connect', value: function connect(url) { var _this2 = this; this.url = this.url || url; return fetch(this.url + '/login').then(function (res) { return res.json(); }).then(function (res) { if (res.status === 'permitted') { _this2.alive = true; _this2.id = res.id; return _this2; } }); } }, { key: 'disconnect', value: function disconnect() { this.alive = false; this.emit('disconnected'); return fetch(this.url + '/logout/' + this.id); } }, { key: 'request', value: function request(command, factory) { var _this3 = this; return new _promise2.default(function (resolve, reject) { var context = (0, _parser.createContext)(factory, resolve, reject, command); context.options.callback({ type: _parser2.default.Factory.Started, context: context }); return fetch(_this3.url + '/execute/' + _this3.id, { headers: { Accept: 'application/json', 'Content-Type': 'application/json' }, method: 'POST', body: (0, _stringify2.default)(command) }).then(function (res) { return res.json(); }).then(function (res) { return (0, _parser.handleResult)(context, res); }).then(function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(res) { var results; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return _promise2.default.all(context.promises); case 2: results = _context.sent; context = (0, _parser.mergeContext)(context); resolve(context); case 5: case 'end': return _context.stop(); } } }, _callee, _this3); })); return function (_x) { return _ref.apply(this, arguments); }; }()); }).then(function (results) { results.options.callback({ type: _parser2.default.Factory.Finished, context: results }); return results; }); } }]); return Rest; }(_base2.default); exports.default = Rest;