pubnub
Version:
Publish & Subscribe Real-time Messaging with PubNub
177 lines (147 loc) • 6.78 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;
exports.handleError = handleError;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _flow_interfaces = require("../../flow_interfaces");
var _operations = _interopRequireDefault(require("../../constants/operations"));
var _utils = _interopRequireDefault(require("../../utils"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function getOperation() {
return _operations["default"].PNHereNowOperation;
}
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,
_incomingParams$chann2 = incomingParams.channelGroups,
channelGroups = _incomingParams$chann2 === void 0 ? [] : _incomingParams$chann2;
var baseURL = "/v2/presence/sub-key/".concat(config.subscribeKey);
if (channels.length > 0 || channelGroups.length > 0) {
var stringifiedChannels = channels.length > 0 ? channels.join(',') : ',';
baseURL += "/channel/".concat(_utils["default"].encodeString(stringifiedChannels));
}
return baseURL;
}
function getRequestTimeout(_ref) {
var config = _ref.config;
return config.getTransactionTimeout();
}
function isAuthSupported() {
return true;
}
function prepareParams(modules, incomingParams) {
var _incomingParams$chann3 = incomingParams.channelGroups,
channelGroups = _incomingParams$chann3 === void 0 ? [] : _incomingParams$chann3,
_incomingParams$inclu = incomingParams.includeUUIDs,
includeUUIDs = _incomingParams$inclu === void 0 ? true : _incomingParams$inclu,
_incomingParams$inclu2 = incomingParams.includeState,
includeState = _incomingParams$inclu2 === void 0 ? false : _incomingParams$inclu2,
_incomingParams$query = incomingParams.queryParameters,
queryParameters = _incomingParams$query === void 0 ? {} : _incomingParams$query;
var params = {};
if (!includeUUIDs) params.disable_uuids = 1;
if (includeState) params.state = 1;
if (channelGroups.length > 0) {
params['channel-group'] = channelGroups.join(',');
}
params = _objectSpread(_objectSpread({}, params), queryParameters);
return params;
}
function handleResponse(modules, serverResponse, incomingParams) {
var _incomingParams$chann4 = incomingParams.channels,
channels = _incomingParams$chann4 === void 0 ? [] : _incomingParams$chann4,
_incomingParams$chann5 = incomingParams.channelGroups,
channelGroups = _incomingParams$chann5 === void 0 ? [] : _incomingParams$chann5,
_incomingParams$inclu3 = incomingParams.includeUUIDs,
includeUUIDs = _incomingParams$inclu3 === void 0 ? true : _incomingParams$inclu3,
_incomingParams$inclu4 = incomingParams.includeState,
includeState = _incomingParams$inclu4 === void 0 ? false : _incomingParams$inclu4;
var prepareSingularChannel = function prepareSingularChannel() {
var response = {};
var occupantsList = [];
response.totalChannels = 1;
response.totalOccupancy = serverResponse.occupancy;
response.channels = {};
response.channels[channels[0]] = {
occupants: occupantsList,
name: channels[0],
occupancy: serverResponse.occupancy
};
if (includeUUIDs && serverResponse.uuids) {
serverResponse.uuids.forEach(function (uuidEntry) {
if (includeState) {
occupantsList.push({
state: uuidEntry.state,
uuid: uuidEntry.uuid
});
} else {
occupantsList.push({
state: null,
uuid: uuidEntry
});
}
});
}
return response;
};
var prepareMultipleChannel = function prepareMultipleChannel() {
var response = {};
response.totalChannels = serverResponse.payload.total_channels;
response.totalOccupancy = serverResponse.payload.total_occupancy;
response.channels = {};
Object.keys(serverResponse.payload.channels).forEach(function (channelName) {
var channelEntry = serverResponse.payload.channels[channelName];
var occupantsList = [];
response.channels[channelName] = {
occupants: occupantsList,
name: channelName,
occupancy: channelEntry.occupancy
};
if (includeUUIDs) {
channelEntry.uuids.forEach(function (uuidEntry) {
if (includeState) {
occupantsList.push({
state: uuidEntry.state,
uuid: uuidEntry.uuid
});
} else {
occupantsList.push({
state: null,
uuid: uuidEntry
});
}
});
}
return response;
});
return response;
};
var response;
if (channels.length > 1 || channelGroups.length > 0 || channelGroups.length === 0 && channels.length === 0) {
response = prepareMultipleChannel();
} else {
response = prepareSingularChannel();
}
return response;
}
function handleError(modules, params, status) {
if (status.statusCode === 402 && !this.getURL(modules, params).includes('channel')) {
status.errorData.message = 'You have tried to perform a Global Here Now operation, your keyset configuration does not support that. Please provide a channel, or enable the Global Here Now feature from the Portal.';
}
}
//# sourceMappingURL=here_now.js.map