viewpoint
Version:
the exchange email API for nodejs module
123 lines (103 loc) • 4.05 kB
JavaScript
var EWSBuilder, EWSFolderOperations, Mixin, NS_MESSAGES,
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');
EWSBuilder = require('../ews-builder');
NS_MESSAGES = require('../ews-ns').NS_MESSAGES;
module.exports = EWSFolderOperations = (function(superClass) {
extend(EWSFolderOperations, superClass);
function EWSFolderOperations() {
return EWSFolderOperations.__super__.constructor.apply(this, arguments);
}
EWSFolderOperations.prototype.buildCreateFolder = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
return builder.nodeNS(NS_MESSAGES, 'CreateFolder', function(builder) {
EWSBuilder.$parentFolderId(builder, opts.parentFolderId);
return EWSBuilder.$folders(builder, opts.folders);
});
});
};
EWSFolderOperations.prototype.createFolder = function(opts) {
return this.doSoapRequest(this.buildCreateFolder(opts), 'EWSFoldersResponse');
};
EWSFolderOperations.prototype.buildDeleteFolder = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var param;
param = {
DeleteType: opts.deleteType
};
return builder.nodeNS(NS_MESSAGES, 'DeleteFolder', param, function(builder) {
return EWSBuilder.$folderIds(builder, opts.folderIds);
});
});
};
EWSFolderOperations.prototype.deleteFolder = function(opts) {
return this.doSoapRequest(this.buildDeleteFolder(opts));
};
EWSFolderOperations.prototype.buildFindFolder = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var param, ref;
param = {
Traversal: (ref = opts.traversal) != null ? ref : 'Shallow'
};
return builder.nodeNS(NS_MESSAGES, 'FindFolder', param, function(builder) {
EWSBuilder.$folderShape(builder, opts.folderShape);
return EWSBuilder.$parentFolderIds(builder, opts.parentFolderIds);
});
});
};
EWSFolderOperations.prototype.findFolder = function(opts) {
return this.doSoapRequest(this.buildFindFolder(opts), 'EWSRootFolderResponse');
};
EWSFolderOperations.prototype.buildGetFolder = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
return builder.nodeNS(NS_MESSAGES, 'GetFolder', function(builder) {
EWSBuilder.$folderShape(builder, opts.folderShape);
return EWSBuilder.$folderIds(builder, opts.folderIds);
});
});
};
EWSFolderOperations.prototype.getFolder = function(opts) {
return this.doSoapRequest(this.buildGetFolder(opts), 'EWSFoldersResponse');
};
EWSFolderOperations.prototype.buildMoveFolder = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
return builder.nodeNS(NS_MESSAGES, 'MoveFolder', function(builder) {
EWSBuilder.$toFolderId(builder, opts.toFolderId);
return EWSBuilder.$folderIds(builder, opts.folderIds);
});
});
};
EWSFolderOperations.prototype.moveFolder = function(opts) {
return this.doSoapRequest(this.buildMoveFolder(opts), 'EWSFoldersResponse');
};
EWSFolderOperations.prototype.buildUpdateFolder = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
return builder.nodeNS(NS_MESSAGES, 'UpdateFolder', function(builder) {
return EWSBuilder.$folderChanges(builder, opts);
});
});
};
EWSFolderOperations.prototype.updateFolder = function(opts) {
return this.doSoapRequest(this.buildUpdateFolder(opts), 'EWSFoldersResponse');
};
return EWSFolderOperations;
})(Mixin);