UNPKG

viewpoint

Version:
222 lines (197 loc) 5.75 kB
var ItemAccessor, Mixin, _, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; Mixin = require('mixto'); _ = require('underscore'); module.exports = ItemAccessor = (function(superClass) { extend(ItemAccessor, superClass); function ItemAccessor() { return ItemAccessor.__super__.constructor.apply(this, arguments); } ItemAccessor.prototype.getItem = function(itemId, opts) { var args; if (opts == null) { opts = {}; } args = this._getItemArgs(itemId, opts); return this.ews.getItem(args).then(function(res) { return res.items()[0]; }); }; ItemAccessor.prototype.getItems = function(itemIds, opts) { var args; if (opts == null) { opts = {}; } args = this._getItemArgs(itemIds, opts); return this.ews.getItem(args).then(function(res) { return res.items(); }); }; ItemAccessor.prototype.findItems = function(opts) { if (opts == null) { opts = {}; } return this.ews.findItem(this._findItemsArgs(opts)); }; ItemAccessor.prototype.copyItems = function(items, folder) { var args; args = this._moveCopyItemsArgs(items, folder); return this.ews.copyItem(args).then(function(res) { return res.items(); }); }; ItemAccessor.prototype.moveItems = function(items, folder) { var args; args = this._moveCopyItemsArgs(items, folder); return this.ews.moveItem(args).then(function(res) { return res.items(); }); }; ItemAccessor.prototype.deleteItems = function(items, deleteType) { var opts; opts = { deleteType: deleteType != null ? deleteType : 'HardDelete', itemIds: this._getItemIds(items) }; return this.ews.deleteItem(opts); }; ItemAccessor.prototype.markRead = function(items) { var args; args = this._markReadArgs(items); return this.ews.updateItem(args).then(function(res) { return res.items(); }); }; ItemAccessor.prototype.saveItems = function(opts) { var params; params = _.clone(opts); if (opts.folderId) { params.savedItemFolderId = this._getItemId(opts.folderId); } return this.ews.createItem(params).then(function(res) { return res.items(); }); }; ItemAccessor.prototype.sendItems = function(opts) { if (opts.itemIds) { return this.ews.sendItem({ itemIds: this._getItemIds(opts.itemIds) }); } else if (opts.items) { return this.ews.createItem(_.extend(opts, { messageDisposition: 'SendOnly' })); } }; ItemAccessor.prototype.sendAndSaveItems = function(opts) { var params; params = { savedItemFolderId: this._getItemId(opts.folderId) }; if (opts.itemIds) { return this.ews.sendItem(_.extend(params, { itemIds: this._getItemIds(opts.itemIds) })); } else if (opts.items) { _.extend(params, { items: opts.items, messageDisposition: 'SendAndSaveCopy' }); return this.ews.createItem(_.extend(params)); } }; ItemAccessor.prototype.syncItems = function(opts) { return this.ews.syncFolderItems(this._syncItemsArgs(opts)); }; ItemAccessor.prototype._getItemId = function(id) { if (_.isString(id)) { return { id: id }; } else { return id; } }; ItemAccessor.prototype._getItemIds = function(itemIds) { var i, itemId, len, results; if (!Array.isArray(itemIds)) { itemIds = [itemIds]; } results = []; for (i = 0, len = itemIds.length; i < len; i++) { itemId = itemIds[i]; results.push(this._getItemId(itemId)); } return results; }; ItemAccessor.prototype._getItemArgs = function(itemIds, opts) { var args, ref; args = { itemShape: { baseShape: (ref = opts.shape) != null ? ref : 'Default' } }; args.itemIds = this._getItemIds(itemIds); return _.extend(args, opts); }; ItemAccessor.prototype._findItemsArgs = function(opts) { var args, ref; args = { traversal: 'Shallow', itemShape: { baseShape: (ref = opts.shape) != null ? ref : 'Default' } }; args.parentFolderIds = this._getItemId(opts.folderId); return _.extend(args, opts); }; ItemAccessor.prototype._moveCopyItemsArgs = function(items, folder) { return { toFolderId: this._getItemId(folder), itemIds: this._getItemIds(items), returnNewItemIds: true }; }; ItemAccessor.prototype._markReadArgs = function(items) { var itemChanges, itemId; itemChanges = []; if (!Array.isArray(items)) { items = [items]; } itemChanges = (function() { var i, len, results; results = []; for (i = 0, len = items.length; i < len; i++) { itemId = items[i]; results.push({ itemId: itemId, setFields: { fieldURI: 'message:IsRead', message: { isRead: true } } }); } return results; })(); return { itemChanges: itemChanges }; }; ItemAccessor.prototype._syncItemsArgs = function(opts) { var params, ref; params = { itemShape: { baseShape: (ref = opts.shape) != null ? ref : 'Default' }, syncFolderId: this._getItemId(opts.folderId) }; if (opts.maxReturned) { params.maxChangesReturned = opts.maxReturned; } return _.extend(params, opts); }; return ItemAccessor; })(Mixin);