UNPKG

holly-sdk

Version:
99 lines (76 loc) 3.23 kB
"use strict"; 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; }();