86 lines
2.5 KiB
JavaScript
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;
|
|
}
|