Files
profile/themes/keepit/node_modules/algoliasearch/src/createAnalyticsClient.js
Spencer Pincott 97737ca1ae Initial commit
2024-07-15 22:20:13 -04:00

86 lines
2.5 KiB
JavaScript

module.exports = createAnalyticsClient;
var algoliasearch = require('../index.js');
function createAnalyticsClient(appId, apiKey, opts) {
var analytics = {};
opts = opts || {};
// there need to be 4 hosts, like on the client, since if requests fail,
// the counter goes up by 1, so we need to have the same amount of hosts
// 4 because: -dsn, -1, -2, -3
// This is done because the APPID used for search will be the same for the analytics client created,
// and since the state of available hosts is shared by APPID globally for the module, we had issues
// where the hostIndex would be 1 while the array was only one entry (you got an empty host)
opts.hosts = opts.hosts || [
'analytics.algolia.com',
'analytics.algolia.com',
'analytics.algolia.com',
'analytics.algolia.com'
];
opts.protocol = opts.protocol || 'https:';
analytics.as = algoliasearch(appId, apiKey, opts);
analytics.getABTests = function(_params, callback) {
var params = params || {};
var offset = params.offset || 0;
var limit = params.limit || 10;
return this.as._jsonRequest({
method: 'GET',
url: '/2/abtests?offset=' + encodeURIComponent(offset) + '&limit=' + encodeURIComponent(limit),
hostType: 'read',
forceAuthHeaders: true,
callback: callback
});
};
analytics.getABTest = function(abTestID, callback) {
return this.as._jsonRequest({
method: 'GET',
url: '/2/abtests/' + encodeURIComponent(abTestID),
hostType: 'read',
forceAuthHeaders: true,
callback: callback
});
};
analytics.addABTest = function(abTest, callback) {
return this.as._jsonRequest({
method: 'POST',
url: '/2/abtests',
body: abTest,
hostType: 'read',
forceAuthHeaders: true,
callback: callback
});
};
analytics.stopABTest = function(abTestID, callback) {
return this.as._jsonRequest({
method: 'POST',
url: '/2/abtests/' + encodeURIComponent(abTestID) + '/stop',
hostType: 'read',
forceAuthHeaders: true,
callback: callback
});
};
analytics.deleteABTest = function(abTestID, callback) {
return this.as._jsonRequest({
method: 'DELETE',
url: '/2/abtests/' + encodeURIComponent(abTestID),
hostType: 'write',
forceAuthHeaders: true,
callback: callback
});
};
analytics.waitTask = function(indexName, taskID, callback) {
return this.as.initIndex(indexName).waitTask(taskID, callback);
};
return analytics;
}