pubnub
Version:
Publish & Subscribe Real-time Messaging with PubNub
115 lines (96 loc) • 3.16 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getOperation = getOperation;
exports.validateParams = validateParams;
exports.getURL = getURL;
exports.getRequestTimeout = getRequestTimeout;
exports.isAuthSupported = isAuthSupported;
exports.prepareParams = prepareParams;
exports.handleResponse = handleResponse;
var _flow_interfaces = require("../flow_interfaces");
var _operations = _interopRequireDefault(require("../constants/operations"));
var _utils = _interopRequireDefault(require("../utils"));
function getOperation() {
return _operations["default"].PNSubscribeOperation;
}
function validateParams(modules) {
var config = modules.config;
if (!config.subscribeKey) return 'Missing Subscribe Key';
}
function getURL(modules, incomingParams) {
var config = modules.config;
var _incomingParams$chann = incomingParams.channels,
channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann;
var stringifiedChannels = channels.length > 0 ? channels.join(',') : ',';
return "/v2/subscribe/".concat(config.subscribeKey, "/").concat(_utils["default"].encodeString(stringifiedChannels), "/0");
}
function getRequestTimeout(_ref) {
var config = _ref.config;
return config.getSubscribeTimeout();
}
function isAuthSupported() {
return true;
}
function prepareParams(_ref2, incomingParams) {
var config = _ref2.config;
var state = incomingParams.state,
_incomingParams$chann2 = incomingParams.channelGroups,
channelGroups = _incomingParams$chann2 === void 0 ? [] : _incomingParams$chann2,
timetoken = incomingParams.timetoken,
filterExpression = incomingParams.filterExpression,
region = incomingParams.region;
var params = {
heartbeat: config.getPresenceTimeout()
};
if (channelGroups.length > 0) {
params['channel-group'] = channelGroups.join(',');
}
if (filterExpression && filterExpression.length > 0) {
params['filter-expr'] = filterExpression;
}
if (Object.keys(state).length) {
params.state = JSON.stringify(state);
}
if (timetoken) {
params.tt = timetoken;
}
if (region) {
params.tr = region;
}
return params;
}
function handleResponse(modules, serverResponse) {
var messages = [];
serverResponse.m.forEach(function (rawMessage) {
var publishMetaData = {
publishTimetoken: rawMessage.p.t,
region: rawMessage.p.r
};
var parsedMessage = {
shard: parseInt(rawMessage.a, 10),
subscriptionMatch: rawMessage.b,
channel: rawMessage.c,
messageType: rawMessage.e,
payload: rawMessage.d,
flags: rawMessage.f,
issuingClientId: rawMessage.i,
subscribeKey: rawMessage.k,
originationTimetoken: rawMessage.o,
userMetadata: rawMessage.u,
publishMetaData: publishMetaData
};
messages.push(parsedMessage);
});
var metadata = {
timetoken: serverResponse.t.t,
region: serverResponse.t.r
};
return {
messages: messages,
metadata: metadata
};
}
//# sourceMappingURL=subscribe.js.map