backendless-console-sdk
Version:
Backendless Console SDK for Node.js and browser
153 lines (148 loc) • 6.37 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _urls = _interopRequireDefault(require("./urls"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var year = 'YEAR';
var month = 'MONTH';
var lastDay = 'MONTH'; //no server analogue for now
var sixmo = 'HALF_YEAR';
var periods = {
lastDay: lastDay,
year: year,
month: month,
sixmo: sixmo
};
var transformPeriod = function transformPeriod(period) {
return periods[period] || month;
};
var buildSegmentsQuery = function buildSegmentsQuery(key, segments) {
var result = {};
if (segments) {
segments.forEach(function (segment) {
result["".concat(key, "[").concat(segment, "]")] = true;
});
}
return result;
};
var buildClientTypeSegmentsQuery = function buildClientTypeSegmentsQuery(clientTypes) {
return buildSegmentsQuery('apiKeyName', clientTypes);
};
var buildMessagingTypeSegmentsQuery = function buildMessagingTypeSegmentsQuery(messagingType) {
return buildSegmentsQuery('messagingType', messagingType);
};
var _default = function _default(req) {
return {
getAppStats: function getAppStats(appId, period) {
return req.get("".concat(_urls["default"].appConsole(appId), "/application/stats")).query({
period: transformPeriod(period)
});
},
performance: function performance(appId, _ref) {
var aggInterval = _ref.aggInterval,
from = _ref.from,
to = _ref.to;
var params = {
aggregationPeriod: aggInterval.name,
startEpochSecond: from / 1000,
// the server expects timestamp in seconds, not in milliseconds
endEpochSecond: to / 1000
};
return req.get("".concat(_urls["default"].appConsole(appId), "/performance")).query(params).then(function (points) {
var result = {};
for (var i = from; i <= to; i += aggInterval.value) {
result[i] = points[i / 1000]; // the server return timestamp in seconds, not in milliseconds
}
return result;
});
},
concurrentRequests: function concurrentRequests(appId, _ref2) {
var aggInterval = _ref2.aggInterval,
from = _ref2.from,
to = _ref2.to;
var params = {
aggregationPeriod: aggInterval.name,
startEpochSecond: from / 1000,
// the server expects timestamp in seconds, not in milliseconds
endEpochSecond: to / 1000
};
return req.get("".concat(_urls["default"].appConsole(appId), "/concurrent-requests")).query(params).then(function (points) {
var result = {};
for (var i = from; i <= to; i += aggInterval.value) {
result[i] = points[i / 1000]; // the server return timestamp in seconds, not in milliseconds
}
return result;
});
},
apiCalls: function apiCalls(appId, _ref3) {
var clientTypes = _ref3.clientTypes,
_ref3$columns = _ref3.columns,
columns = _ref3$columns === void 0 ? {} : _ref3$columns,
period = _ref3.period,
from = _ref3.from,
to = _ref3.to;
period = period.toUpperCase();
var params = _objectSpread(_objectSpread({}, buildClientTypeSegmentsQuery(clientTypes)), {}, {
'withServiceName': columns.services,
'withMethodName': columns.methods,
'withSuccessCallCount': true,
//TODO: the server always return SuccessCallCount values
'withErrorCount': true,
//TODO: the server always return ErrorCount values
period: period
});
if (period === 'CUSTOM') {
params.dateFrom = from;
params.dateTo = to;
}
return req.get("".concat(_urls["default"].appConsole(appId), "/apicalls")).query(params);
},
messages: function messages(appId, _ref4) {
var clientTypes = _ref4.clientTypes,
messagingTypes = _ref4.messagingTypes,
period = _ref4.period,
from = _ref4.from,
to = _ref4.to;
period = period.toUpperCase();
var params = _objectSpread(_objectSpread(_objectSpread({}, buildClientTypeSegmentsQuery(clientTypes)), buildMessagingTypeSegmentsQuery(messagingTypes)), {}, {
period: period
});
if (period === 'CUSTOM') {
params.dateFrom = from;
params.dateTo = to;
}
return req.get("".concat(_urls["default"].appConsole(appId), "/messaging")).query(params);
},
users: function users(appId, _ref5) {
var period = _ref5.period,
from = _ref5.from,
to = _ref5.to;
period = period.toUpperCase();
var params = {
withActiveUsers: true,
//TODO: the server always return ActiveUsers values
withNewUsers: true,
//TODO: the server always return NewUsers values
withRegisteredUsers: true,
//TODO: the server always return RegisteredUsers values
withReturningUsers: true,
//TODO: the server always return ReturningUsers values
period: period
};
if (period === 'CUSTOM') {
params.dateFrom = from;
params.dateTo = to;
}
return req.get("".concat(_urls["default"].appConsole(appId), "/userstats")).query(params);
},
workers: function workers(appId, query) {
return req.get("".concat(_urls["default"].appConsole(appId), "/workers")).query(query);
}
};
};
exports["default"] = _default;