UNPKG

viewpoint

Version:
205 lines (181 loc) 5.36 kB
var FolderAccessor, Mixin, _, pascalCase, 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'); pascalCase = require('./ews-util').pascalCase; module.exports = FolderAccessor = (function(superClass) { var ROOT_FOLDER_ID; extend(FolderAccessor, superClass); function FolderAccessor() { return FolderAccessor.__super__.constructor.apply(this, arguments); } FolderAccessor.prototype.getFolder = function(folderId, opts) { var args; if (opts == null) { opts = {}; } args = this._getFolderArgs(folderId, opts); return this.ews.getFolder(args).then(function(res) { var ref; return (ref = res.folders()) != null ? ref[0] : void 0; }); }; FolderAccessor.prototype.getFolders = function(folderIds, opts) { var args; if (opts == null) { opts = {}; } args = this._getFolderArgs(folderIds, opts); return this.ews.getFolder(args).then(function(res) { return res.folders(); }); }; FolderAccessor.prototype.findFolders = function(opts) { if (opts == null) { opts = {}; } return this.ews.findFolder(this._findFoldersArgs(opts)); }; FolderAccessor.prototype.createFolders = function(names, opts) { var args; if (opts == null) { opts = {}; } args = this._createFoldersArgs(names, opts); return this.ews.createFolder(args).then(function(res) { return res.folders(); }); }; FolderAccessor.prototype.deleteFolders = function(folderIds, deleteType) { if (deleteType == null) { deleteType = 'HardDelete'; } folderIds = this._getItemIds(folderIds); return this.ews.deleteFolder({ deleteType: deleteType, folderIds: folderIds }); }; FolderAccessor.prototype.moveFolders = function(folderIds, opts) { var params; if (opts == null) { opts = {}; } params = { toFolderId: this._getItemId(opts.parent), folderIds: this._getItemIds(folderIds) }; return this.ews.moveFolder(params).then(function(res) { return res.folders(); }); }; FolderAccessor.prototype.updateFolder = function(folderId, changes) { var params; params = this._updateFolderArgs(folderId, changes); return this.ews.updateFolder(params).then(function(res) { var ref; return (ref = res.folders()) != null ? ref[0] : void 0; }); }; FolderAccessor.prototype.syncFolders = function(opts) { if (opts == null) { opts = {}; } return this.ews.syncFolderHierarchy(this._syncFoldersArgs(opts)); }; FolderAccessor.prototype.syncFoldersWithParent = function(syncState) { var opts; opts = { syncState: syncState, folderShape: { baseShape: 'Default', additionalProperties: 'folder:ParentFolderId' } }; return this.ews.syncFolderHierarchy(opts); }; FolderAccessor.prototype._getFolderArgs = function(folderId, opts) { var params, ref; params = { folderShape: { baseShape: (ref = opts.shape) != null ? ref : 'Default' }, folderIds: this._getItemIds(folderId) }; return _.extend(params, opts); }; ROOT_FOLDER_ID = { id: 'msgfolderroot', type: 'distinguished' }; FolderAccessor.prototype._findFoldersArgs = function(opts) { var params, ref; params = { folderShape: { baseShape: (ref = opts.shape) != null ? ref : 'Default' }, parentFolderIds: ROOT_FOLDER_ID }; if (opts.parent) { params.parentFolderIds = this._getItemIds(opts.parent); } return _.extend(params, opts); }; FolderAccessor.prototype._createFoldersArgs = function(names, opts) { var name, params; params = { parentFolderId: ROOT_FOLDER_ID }; if (opts.parent) { params.parentFolderId = this._getItemId(opts.parent); } if (!Array.isArray(names)) { names = [names]; } params.folders = (function() { var i, len, results; results = []; for (i = 0, len = names.length; i < len; i++) { name = names[i]; results.push({ displayName: name }); } return results; })(); return _.extend(params, opts); }; FolderAccessor.prototype._syncFoldersArgs = function(opts) { var params, ref; params = { folderShape: { baseShape: (ref = opts.shape) != null ? ref : 'Default' } }; if (opts.parent) { params.syncFolderId = this._getItemId(opts.parent); } return _.extend(params, opts); }; FolderAccessor.prototype._updateFolderArgs = function(folderId, changes) { var name, obj, params, val; params = { folderId: this._getItemId(folderId), setFolderFields: [] }; for (name in changes) { val = changes[name]; params.setFolderFields.push({ fieldURI: "folder:" + (pascalCase(name)), folder: ( obj = {}, obj["" + name] = val, obj ) }); } return params; }; return FolderAccessor; })(Mixin);