UNPKG

pubnub

Version:

Publish & Subscribe Real-time Messaging with PubNub

177 lines (147 loc) 6.78 kB
"use strict"; 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