getstream
Version:
The official low-level GetStream.io client for Node.js and the browser.
45 lines (44 loc) • 1.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createRedirectUrl;
var _url = _interopRequireDefault(require("url"));
var _qs = _interopRequireDefault(require("qs"));
var _errors = require("./errors");
var _utils = _interopRequireDefault(require("./utils"));
var _signing = require("./signing");
// TODO: userId is skipped here
/**
* Creates a redirect url for tracking the given events in the context of
* an email using Stream's analytics platform. Learn more at
* getstream.io/personalization
* @link https://getstream.io/activity-feeds/docs/node/analytics_email/?language=js
* @method createRedirectUrl
* @memberof StreamClient.prototype
* @param {string} targetUrl Target url
* @param {string} userId User id to track
* @param {array} events List of events to track
* @return {string} The redirect url
*/
function createRedirectUrl(targetUrl, userId, events) {
var uri = _url.default.parse(targetUrl);
if (!(uri.host || uri.hostname && uri.port)) {
throw new _errors.MissingSchemaError("Invalid URI: \"".concat(_url.default.format(uri), "\""));
}
var authToken = (0, _signing.JWTScopeToken)(this.apiSecret, 'redirect_and_track', '*', {
userId: '*',
expireTokens: this.expireTokens
});
var analyticsUrl = "".concat(this.baseAnalyticsUrl, "redirect/");
var kwargs = {
auth_type: 'jwt',
authorization: authToken,
url: targetUrl,
api_key: this.apiKey,
events: JSON.stringify(events)
};
var qString = _utils.default.rfc3986(_qs.default.stringify(kwargs));
return "".concat(analyticsUrl, "?").concat(qString);
}