Skip to content

Commit 43e8b78

Browse files
authored
refactor:subscribe (#246)
* subscribe beta utility methods and beta flag in PubNub instance configuration
1 parent 4f9d197 commit 43e8b78

32 files changed

+937
-76
lines changed

dist/titanium/pubnub.js

Lines changed: 198 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,9 @@ var _default = {
167167
PNAccessManagerGrant: 'PNAccessManagerGrant',
168168
PNAccessManagerGrantToken: 'PNAccessManagerGrantToken',
169169
PNAccessManagerAudit: 'PNAccessManagerAudit',
170-
PNAccessManagerRevokeToken: 'PNAccessManagerRevokeToken'
170+
PNAccessManagerRevokeToken: 'PNAccessManagerRevokeToken',
171+
PNHandshakeOperation: 'PNHandshakeOperation',
172+
PNReceiveMessagesOperation: 'PNReceiveMessagesOperation'
171173
};
172174
exports["default"] = _default;
173175
module.exports = exports.default;
@@ -377,7 +379,7 @@ var makeDefaultOrigins = function makeDefaultOrigins() {
377379

378380
var _default = function () {
379381
function _default(_ref) {
380-
var _setup$fileUploadPubl, _setup$useRandomIVs;
382+
var _setup$fileUploadPubl, _setup$useRandomIVs, _setup$enableSubscrib;
381383

382384
var setup = _ref.setup;
383385
(0, _classCallCheck2["default"])(this, _default);
@@ -418,6 +420,7 @@ var _default = function () {
418420
(0, _defineProperty2["default"])(this, "customDecrypt", void 0);
419421
(0, _defineProperty2["default"])(this, "fileUploadPublishRetryLimit", void 0);
420422
(0, _defineProperty2["default"])(this, "useRandomIVs", void 0);
423+
(0, _defineProperty2["default"])(this, "enableSubscribeBeta", void 0);
421424
this._PNSDKSuffix = {};
422425
this.instanceId = "pn-".concat(_uuid["default"].createUUID());
423426
this.secretKey = setup.secretKey || setup.secret_key;
@@ -447,6 +450,11 @@ var _default = function () {
447450
this.customDecrypt = setup.customDecrypt;
448451
this.fileUploadPublishRetryLimit = (_setup$fileUploadPubl = setup.fileUploadPublishRetryLimit) !== null && _setup$fileUploadPubl !== void 0 ? _setup$fileUploadPubl : 5;
449452
this.useRandomIVs = (_setup$useRandomIVs = setup.useRandomIVs) !== null && _setup$useRandomIVs !== void 0 ? _setup$useRandomIVs : true;
453+
this.enableSubscribeBeta = (_setup$enableSubscrib = setup.enableSubscribeBeta) !== null && _setup$enableSubscrib !== void 0 ? _setup$enableSubscrib : false;
454+
455+
if (setup.enableSubscribeBeta && setup.enableSubscribeBeta === true) {
456+
throw new Error('not implemented');
457+
}
450458

451459
if (typeof location !== 'undefined' && location.protocol === 'https:') {
452460
this.secure = true;
@@ -979,7 +987,8 @@ function _default(modules, endpoint) {
979987
timeout: endpoint.getRequestTimeout(modules),
980988
headers: endpoint.getRequestHeaders ? endpoint.getRequestHeaders() : {},
981989
ignoreBody: typeof endpoint.ignoreBody === 'function' ? endpoint.ignoreBody(modules) : false,
982-
forceBuffered: typeof endpoint.forceBuffered === 'function' ? endpoint.forceBuffered(modules, incomingParams) : null
990+
forceBuffered: typeof endpoint.forceBuffered === 'function' ? endpoint.forceBuffered(modules, incomingParams) : null,
991+
abortSignal: typeof endpoint.getAbortSignal === 'function' ? endpoint.getAbortSignal(modules, incomingParams) : null
983992
};
984993
outgoingParams.uuid = config.UUID;
985994
outgoingParams.pnsdk = generatePNSDK(config);
@@ -1612,13 +1621,13 @@ var _cborSync = _interopRequireDefault(__webpack_require__(24));
16121621

16131622
var _pubnubCommon = _interopRequireDefault(__webpack_require__(25));
16141623

1615-
var _networking = _interopRequireDefault(__webpack_require__(114));
1624+
var _networking = _interopRequireDefault(__webpack_require__(117));
16161625

1617-
var _common = _interopRequireDefault(__webpack_require__(115));
1626+
var _common = _interopRequireDefault(__webpack_require__(118));
16181627

1619-
var _common2 = _interopRequireDefault(__webpack_require__(116));
1628+
var _common2 = _interopRequireDefault(__webpack_require__(119));
16201629

1621-
var _titanium = __webpack_require__(117);
1630+
var _titanium = __webpack_require__(120);
16221631

16231632
var _flow_interfaces = __webpack_require__(2);
16241633

@@ -2465,6 +2474,12 @@ var timeEndpointConfig = _interopRequireWildcard(__webpack_require__(20));
24652474

24662475
var subscribeEndpointConfig = _interopRequireWildcard(__webpack_require__(113));
24672476

2477+
var _handshake = _interopRequireDefault(__webpack_require__(114));
2478+
2479+
var _receiveMessages = _interopRequireDefault(__webpack_require__(115));
2480+
2481+
var subscriptionTypes = _interopRequireWildcard(__webpack_require__(116));
2482+
24682483
var _operations = _interopRequireDefault(__webpack_require__(1));
24692484

24702485
var _categories = _interopRequireDefault(__webpack_require__(10));
@@ -2503,6 +2518,11 @@ var _default = function () {
25032518
(0, _defineProperty2["default"])(this, "whereNow", void 0);
25042519
(0, _defineProperty2["default"])(this, "getState", void 0);
25052520
(0, _defineProperty2["default"])(this, "setState", void 0);
2521+
(0, _defineProperty2["default"])(this, "iAmHere", void 0);
2522+
(0, _defineProperty2["default"])(this, "iAmAway", void 0);
2523+
(0, _defineProperty2["default"])(this, "setPresenceState", void 0);
2524+
(0, _defineProperty2["default"])(this, "handshake", void 0);
2525+
(0, _defineProperty2["default"])(this, "receiveMessages", void 0);
25062526
(0, _defineProperty2["default"])(this, "grant", void 0);
25072527
(0, _defineProperty2["default"])(this, "grantToken", void 0);
25082528
(0, _defineProperty2["default"])(this, "audit", void 0);
@@ -2646,6 +2666,9 @@ var _default = function () {
26462666
this.whereNow = _endpoint["default"].bind(this, modules, presenceWhereNowEndpointConfig);
26472667
this.getState = _endpoint["default"].bind(this, modules, presenceGetStateConfig);
26482668
this.setState = subscriptionManager.adaptStateChange.bind(subscriptionManager);
2669+
this.iAmHere = _endpoint["default"].bind(this, modules, presenceHeartbeatEndpointConfig);
2670+
this.iAmAway = _endpoint["default"].bind(this, modules, presenceLeaveEndpointConfig);
2671+
this.setPresenceState = _endpoint["default"].bind(this, modules, presenceSetStateConfig);
26492672
this.grant = _endpoint["default"].bind(this, modules, grantEndpointConfig);
26502673
this.grantToken = _endpoint["default"].bind(this, modules, grantTokenEndpointConfig);
26512674
this.audit = _endpoint["default"].bind(this, modules, auditEndpointConfig);
@@ -2683,6 +2706,8 @@ var _default = function () {
26832706

26842707
this.downloadFile = _endpoint["default"].bind(this, modules, _download_file["default"]);
26852708
this.deleteFile = _endpoint["default"].bind(this, modules, _delete_file["default"]);
2709+
this.handshake = _endpoint["default"].bind(this, modules, _handshake["default"]);
2710+
this.receiveMessages = _endpoint["default"].bind(this, modules, _receiveMessages["default"]);
26862711
this.objects = {
26872712
getAllUUIDMetadata: _endpoint["default"].bind(this, modules, _get_all["default"]),
26882713
getUUIDMetadata: _endpoint["default"].bind(this, modules, _get["default"]),
@@ -13308,6 +13333,167 @@ function handleResponse(modules, serverResponse) {
1330813333
"use strict";
1330913334

1331013335

13336+
var _interopRequireDefault = __webpack_require__(0);
13337+
13338+
Object.defineProperty(exports, "__esModule", {
13339+
value: true
13340+
});
13341+
exports["default"] = void 0;
13342+
13343+
var _operations = _interopRequireDefault(__webpack_require__(1));
13344+
13345+
var _utils = _interopRequireDefault(__webpack_require__(3));
13346+
13347+
var endpoint = {
13348+
getOperation: function getOperation() {
13349+
return _operations["default"].PNHandshakeOperation;
13350+
},
13351+
validateParams: function validateParams(_, params) {
13352+
if (!(params !== null && params !== void 0 && params.channels) && !(params !== null && params !== void 0 && params.channelGroups)) {
13353+
return 'channels and channleGroups both should not be empty';
13354+
}
13355+
},
13356+
getURL: function getURL(_ref, params) {
13357+
var config = _ref.config;
13358+
var channelsString = params.channels ? params.channels.join(',') : ',';
13359+
return "/v2/subscribe/".concat(config.subscribeKey, "/").concat(_utils["default"].encodeString(channelsString), "/0");
13360+
},
13361+
getRequestTimeout: function getRequestTimeout(_ref2) {
13362+
var config = _ref2.config;
13363+
return config.getSubscribeTimeout();
13364+
},
13365+
isAuthSupported: function isAuthSupported() {
13366+
return true;
13367+
},
13368+
prepareParams: function prepareParams(_, params) {
13369+
var outParams = {};
13370+
13371+
if (params.channelGroups) {
13372+
outParams['channel-group'] = params.channelGroups.join(',');
13373+
}
13374+
13375+
outParams.tt = 0;
13376+
return outParams;
13377+
},
13378+
handleResponse: function handleResponse(_, response) {
13379+
return {
13380+
region: response.t.r,
13381+
timetoken: response.t.t
13382+
};
13383+
}
13384+
};
13385+
var _default = endpoint;
13386+
exports["default"] = _default;
13387+
module.exports = exports.default;
13388+
13389+
/***/ }),
13390+
/* 115 */
13391+
/***/ (function(module, exports, __webpack_require__) {
13392+
13393+
"use strict";
13394+
13395+
13396+
var _interopRequireDefault = __webpack_require__(0);
13397+
13398+
Object.defineProperty(exports, "__esModule", {
13399+
value: true
13400+
});
13401+
exports["default"] = void 0;
13402+
13403+
var _operations = _interopRequireDefault(__webpack_require__(1));
13404+
13405+
var _utils = _interopRequireDefault(__webpack_require__(3));
13406+
13407+
var endpoint = {
13408+
getOperation: function getOperation() {
13409+
return _operations["default"].PNReceiveMessagesOperation;
13410+
},
13411+
validateParams: function validateParams(_, params) {
13412+
if (!(params !== null && params !== void 0 && params.channels) && !(params !== null && params !== void 0 && params.channelGroups)) {
13413+
return 'channels and channleGroups both should not be empty';
13414+
}
13415+
13416+
if (!(params !== null && params !== void 0 && params.timetoken)) {
13417+
return 'timetoken can not be empty';
13418+
}
13419+
13420+
if (!(params !== null && params !== void 0 && params.region)) {
13421+
return 'region can not be empty';
13422+
}
13423+
},
13424+
getURL: function getURL(_ref, params) {
13425+
var config = _ref.config;
13426+
var channelsString = params.channels ? params.channels.join(',') : ',';
13427+
return "/v2/subscribe/".concat(config.subscribeKey, "/").concat(_utils["default"].encodeString(channelsString), "/0");
13428+
},
13429+
getRequestTimeout: function getRequestTimeout(_ref2) {
13430+
var config = _ref2.config;
13431+
return config.getSubscribeTimeout();
13432+
},
13433+
isAuthSupported: function isAuthSupported() {
13434+
return true;
13435+
},
13436+
getAbortSignal: function getAbortSignal(_, params) {
13437+
return params.abortSignal;
13438+
},
13439+
prepareParams: function prepareParams(_, params) {
13440+
var outParams = {};
13441+
13442+
if (params.channelGroups) {
13443+
outParams['channel-group'] = params.channelGroups.join(',');
13444+
}
13445+
13446+
outParams.tt = params.timetoken;
13447+
outParams.tr = params.region;
13448+
return outParams;
13449+
},
13450+
handleResponse: function handleResponse(_, response) {
13451+
var parsedMessages = [];
13452+
response.m.forEach(function (envelope) {
13453+
var parsedMessage = {
13454+
shard: parseInt(envelope.a, 10),
13455+
subscriptionMatch: envelope.b,
13456+
channel: envelope.c,
13457+
messageType: envelope.e,
13458+
payload: envelope.d,
13459+
flags: envelope.f,
13460+
issuingClientId: envelope.i,
13461+
subscribeKey: envelope.k,
13462+
originationTimetoken: envelope.o,
13463+
publishMetaData: {
13464+
timetoken: envelope.p.t,
13465+
region: envelope.p.r
13466+
}
13467+
};
13468+
parsedMessages.push(parsedMessage);
13469+
});
13470+
return {
13471+
messages: parsedMessages,
13472+
metadata: {
13473+
region: response.t.r,
13474+
timetoken: response.t.t
13475+
}
13476+
};
13477+
}
13478+
};
13479+
var _default = endpoint;
13480+
exports["default"] = _default;
13481+
module.exports = exports.default;
13482+
13483+
/***/ }),
13484+
/* 116 */
13485+
/***/ (function(module, exports, __webpack_require__) {
13486+
13487+
"use strict";
13488+
13489+
13490+
/***/ }),
13491+
/* 117 */
13492+
/***/ (function(module, exports, __webpack_require__) {
13493+
13494+
"use strict";
13495+
13496+
1331113497
var _interopRequireDefault = __webpack_require__(0);
1331213498

1331313499
Object.defineProperty(exports, "__esModule", {
@@ -13472,7 +13658,7 @@ exports["default"] = _default;
1347213658
module.exports = exports.default;
1347313659

1347413660
/***/ }),
13475-
/* 115 */
13661+
/* 118 */
1347613662
/***/ (function(module, exports, __webpack_require__) {
1347713663

1347813664
"use strict";
@@ -13516,7 +13702,7 @@ exports["default"] = _default;
1351613702
module.exports = exports.default;
1351713703

1351813704
/***/ }),
13519-
/* 116 */
13705+
/* 119 */
1352013706
/***/ (function(module, exports, __webpack_require__) {
1352113707

1352213708
"use strict";
@@ -13575,7 +13761,7 @@ exports["default"] = _default;
1357513761
module.exports = exports.default;
1357613762

1357713763
/***/ }),
13578-
/* 117 */
13764+
/* 120 */
1357913765
/***/ (function(module, exports, __webpack_require__) {
1358013766

1358113767
"use strict";
@@ -13591,7 +13777,7 @@ exports.post = post;
1359113777

1359213778
var _flow_interfaces = __webpack_require__(2);
1359313779

13594-
var _utils = __webpack_require__(118);
13780+
var _utils = __webpack_require__(121);
1359513781

1359613782
function log(url, qs, res) {
1359713783
var _pickLogger = function _pickLogger() {
@@ -13689,7 +13875,7 @@ function del(params, endpoint, callback) {
1368913875
}
1369013876

1369113877
/***/ }),
13692-
/* 118 */
13878+
/* 121 */
1369313879
/***/ (function(module, exports, __webpack_require__) {
1369413880

1369513881
"use strict";

dist/titanium/pubnub.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)