UNPKG

@zoranwong/acc-engine.js

Version:

A javascript framework to accelerate your applicatin developement

350 lines (290 loc) 11.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); var _Application = _interopRequireDefault(require("../../foundation/Application")); var _Adapter = _interopRequireDefault(require("./Adapter")); var _underscore = require("underscore"); var _Pipeline = _interopRequireDefault(require("../../pipeline/Pipeline")); var _HttpMethod = _interopRequireDefault(require("./HttpMethod")); var _app = (0, _classPrivateFieldLooseKey2["default"])("app"); var _headers = (0, _classPrivateFieldLooseKey2["default"])("headers"); var Client = /*#__PURE__*/function () { function Client(app) { (0, _classCallCheck2["default"])(this, Client); Object.defineProperty(this, _app, { writable: true, value: null }); Object.defineProperty(this, _headers, { writable: true, value: {} }); (0, _classPrivateFieldLooseBase2["default"])(this, _app)[_app] = app; } /** * @return {Adapter} * */ (0, _createClass2["default"])(Client, [{ key: "get", value: function () { var _get = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(url) { var queries, adapter, _args = arguments; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: queries = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; adapter = this.adapter; adapter.headers = this.headers; _context.next = 5; return adapter.get(url, queries); case 5: return _context.abrupt("return", _context.sent); case 6: case "end": return _context.stop(); } } }, _callee, this); })); function get(_x) { return _get.apply(this, arguments); } return get; }() }, { key: "post", value: function () { var _post = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(url) { var data, adapter, _args2 = arguments; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: data = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {}; adapter = this.adapter; adapter.headers = this.headers; _context2.next = 5; return adapter.post(url, data); case 5: return _context2.abrupt("return", _context2.sent); case 6: case "end": return _context2.stop(); } } }, _callee2, this); })); function post(_x2) { return _post.apply(this, arguments); } return post; }() }, { key: "del", value: function () { var _del = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(url) { var queries, adapter, _args3 = arguments; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: queries = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}; adapter = this.adapter; adapter.headers = this.headers; _context3.next = 5; return adapter.del(url, queries); case 5: return _context3.abrupt("return", _context3.sent); case 6: case "end": return _context3.stop(); } } }, _callee3, this); })); function del(_x3) { return _del.apply(this, arguments); } return del; }() }, { key: "put", value: function () { var _put = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(url) { var data, adapter, _args4 = arguments; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: data = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {}; adapter = this.adapter; adapter.headers = this.headers; _context4.next = 5; return adapter.put(url, data); case 5: return _context4.abrupt("return", _context4.sent); case 6: case "end": return _context4.stop(); } } }, _callee4, this); })); function put(_x4) { return _put.apply(this, arguments); } return put; }() /** * @property {Request} request * @property {FunctionConstructor|null} responseClass * */ }, { key: "send", value: function () { var _send = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(request) { var _responseClass, _this$pipeline, _this = this; var responseClass, middleware, _args6 = arguments; return _regenerator["default"].wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: responseClass = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : null; responseClass = (_responseClass = responseClass) !== null && _responseClass !== void 0 ? _responseClass : this.app.config.http.responseClass; this.headers = (0, _underscore.extend)(this.headers, this.app.config.http.headers); middleware = this.app.config.http.middleware.concat(request.middleware); _context6.next = 6; return (_this$pipeline = this.pipeline).through.apply(_this$pipeline, (0, _toConsumableArray2["default"])(middleware)).send(request).then( /**@param {Request} request*/ /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(request) { var headers, url, response; return _regenerator["default"].wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: (0, _newArrowCheck2["default"])(this, _this); headers = request.headers; this.headers = (0, _underscore.extend)(this.headers, headers); url = request.uri; /**@var {Response} response*/ response = null; _context5.t0 = request.method; _context5.next = _context5.t0 === _HttpMethod["default"].GET ? 8 : _context5.t0 === _HttpMethod["default"].POST ? 12 : _context5.t0 === _HttpMethod["default"].PUT ? 16 : _context5.t0 === _HttpMethod["default"].DELETE ? 20 : 24; break; case 8: _context5.next = 10; return this.get(url, request.data); case 10: response = _context5.sent; return _context5.abrupt("break", 24); case 12: _context5.next = 14; return this.post(url, request.data); case 14: response = _context5.sent; return _context5.abrupt("break", 24); case 16: _context5.next = 18; return this.put(url, request.data); case 18: response = _context5.sent; return _context5.abrupt("break", 24); case 20: _context5.next = 22; return this.del(url, request.data); case 22: response = _context5.sent; return _context5.abrupt("break", 24); case 24: if (!response) { _context5.next = 29; break; } responseClass = responseClass ? responseClass : request.responseClass ? request.responseClass : null; return _context5.abrupt("return", responseClass ? new responseClass(response.status, response.httpStatus, response.body, response.headers) : response); case 29: return _context5.abrupt("return", null); case 30: case "end": return _context5.stop(); } } }, _callee5, this); })); return function (_x6) { return _ref.apply(this, arguments); }; }().bind(this)); case 6: return _context6.abrupt("return", _context6.sent); case 7: case "end": return _context6.stop(); } } }, _callee6, this); })); function send(_x5) { return _send.apply(this, arguments); } return send; }() }, { key: "adapter", get: function get() { return this.app.httpAdapter; } }, { key: "headers", set: function set(val) { (0, _classPrivateFieldLooseBase2["default"])(this, _headers)[_headers] = val; }, get: function get() { return (0, _classPrivateFieldLooseBase2["default"])(this, _headers)[_headers]; } /** * @return {Application} * */ }, { key: "app", get: function get() { return (0, _classPrivateFieldLooseBase2["default"])(this, _app)[_app]; } /** * @return {Pipeline} * */ }, { key: "pipeline", get: function get() { return new _Pipeline["default"](this.app); } }]); return Client; }(); exports["default"] = Client;