holly-sdk
Version:
More details coming soon.
99 lines (76 loc) • 3.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EventsAPI = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _got = require("got");
var _got2 = _interopRequireDefault(_got);
var _moment = require("moment");
var _moment2 = _interopRequireDefault(_moment);
var _inflection = require("inflection");
var _inflection2 = _interopRequireDefault(_inflection);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var EventsAPI = exports.EventsAPI = function () {
function EventsAPI(app) {
_classCallCheck(this, EventsAPI);
this.app = app;
}
/**
* Takes a single object containing query options
* and returns a list of events matching the given options
*
* Options:
* - occurredBefore: (String|Date|moment)
* - occurredAfter: (String|Date|moment)
* - type: (String) ['device', 'task_schedule']
* - action: (String) ['active', 'inactive', 'open', 'closed']
*
* @param {Object} queryOptions
* @return {Array} events
*/
_createClass(EventsAPI, [{
key: "getEvents",
value: function getEvents(queryOptions) {
var query = this._translateQueryOptions(queryOptions);
return (0, _got2.default)(this.app.api.url + "/events", {
method: "GET",
json: true,
query: query
}).then(function (res) {
return res.body.events;
});
}
}, {
key: "_translateQueryOptions",
value: function _translateQueryOptions(queryOptions) {
var query = {};
// Before date
if (queryOptions.occurredBefore) {
query.occurred_before = (0, _moment2.default)(queryOptions.occurredBefore).utc().format();
}
// After date
if (queryOptions.occurredAfter) {
query.occurred_after = (0, _moment2.default)(queryOptions.occurredAfter).utc().format();
}
// Event type (e.g. 'DeviceEvent', 'TaskScheduleEvent')
if (queryOptions.type) {
// Ensure types is an arry
var types = [].concat(queryOptions.type);
// Inflect from 'device' to 'DeviceEvent'
if (types && types.length > 0) {
query["type[]"] = types.map(function (type) {
return _inflection2.default.classify(type) + "Event";
});
}
}
// Action (e.g. 'active', 'inactive', 'open', 'closed')
if (queryOptions.action) {
query["action_type[]"] = queryOptions.action;
}
return query;
}
}]);
return EventsAPI;
}();