boa-handler-request
Version:
A b-o-a handler for request
35 lines (34 loc) • 1.48 kB
JavaScript
// RequestAction -> HTTP request -> ResponseAction
;
var do_1 = require('rxjs/operator/do');
var filter_1 = require('rxjs/operator/filter');
var share_1 = require('rxjs/operator/share');
var init = function (options) {
var requests = options.requests, requestActionType = options.requestActionType, responseActionType = options.responseActionType;
var requestType = requestActionType ? requestActionType : 'request';
var responseType = responseActionType ? responseActionType : 'response';
var requestMap = requests.reduce(function (a, i) {
var o = {};
o[i.name] = i;
return Object.assign({}, a, o);
}, {});
var handler = function (action$, options) {
var re = options.re;
return share_1.share.call(filter_1.filter.call(do_1._do.call(filter_1.filter.call(action$, function (action) { return action.type === requestType; }), function (_a) {
var _b = _a.data, name = _b.name, params = _b.params;
var request = requestMap[name];
request.request(params).then(function (response) {
var responseAction = {
type: responseType,
data: {
request: request,
response: response
}
};
re(responseAction);
});
}), function () { return false; }));
};
return { handler: handler };
};
exports.init = init;