viewpoint
Version:
the exchange email API for nodejs module
182 lines (159 loc) • 5.89 kB
JavaScript
var EWSBuilder, EWSItemOperations, 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 = EWSItemOperations = (function(superClass) {
extend(EWSItemOperations, superClass);
function EWSItemOperations() {
return EWSItemOperations.__super__.constructor.apply(this, arguments);
}
EWSItemOperations.prototype.buildFindItem = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var ref, traversal;
traversal = (ref = opts['traversal']) != null ? ref : 'Shallow';
return builder.nodeNS(NS_MESSAGES, 'FindItem', {
Traversal: traversal
}, function(builder) {
var itemView;
EWSBuilder.$itemShape(builder, opts.itemShape);
if ((itemView = opts.indexedPageItemView) != null) {
EWSBuilder.$indexedPageItemView(builder, itemView);
}
return EWSBuilder.$parentFolderIds(builder, opts.parentFolderIds);
});
});
};
EWSItemOperations.prototype.findItem = function(opts) {
return this.doSoapRequest(this.buildFindItem(opts), 'EWSRootFolderResponse');
};
EWSItemOperations.prototype.buildGetItem = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
return builder.nodeNS(NS_MESSAGES, 'GetItem', function(builder) {
if (opts.itemShape != null) {
EWSBuilder.$itemShape(builder, opts.itemShape);
}
if (opts.itemIds != null) {
return EWSBuilder.$itemIds(builder, opts.itemIds);
}
});
});
};
EWSItemOperations.prototype.getItem = function(opts) {
return this.doSoapRequest(this.buildGetItem(opts), 'EWSItemsResponse');
};
EWSItemOperations.prototype.buildCreateItem = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var param, ref;
param = {
MessageDisposition: (ref = opts.messageDisposition) != null ? ref : 'SaveOnly'
};
return builder.nodeNS(NS_MESSAGES, 'CreateItem', param, function(builder) {
if (opts.savedItemFolderId != null) {
EWSBuilder.$savedItemFolderId(builder, opts.savedItemFolderId);
}
if (opts.items != null) {
return EWSBuilder.$items(builder, opts.items);
}
});
});
};
EWSItemOperations.prototype.createItem = function(opts) {
return this.doSoapRequest(this.buildCreateItem(opts), 'EWSItemsResponse');
};
EWSItemOperations.prototype.buildCopyOrMoveItem = function(nodeName, opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
return builder.nodeNS(NS_MESSAGES, nodeName, function(builder) {
if (opts.toFolderId) {
EWSBuilder.$toFolderId(builder, opts.toFolderId);
}
if (opts.itemIds) {
EWSBuilder.$itemIds(builder, opts.itemIds);
}
if (opts.returnNewItemIds) {
return EWSBuilder.$returnNewItemIds(builder, opts.returnNewItemIds);
}
});
});
};
EWSItemOperations.prototype.copyItem = function(opts) {
return this.doSoapRequest(this.buildCopyOrMoveItem('CopyItem', opts), 'EWSItemsResponse');
};
EWSItemOperations.prototype.moveItem = function(opts) {
return this.doSoapRequest(this.buildCopyOrMoveItem('MoveItem', opts), 'EWSItemsResponse');
};
EWSItemOperations.prototype.buildDeleteItem = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var param;
param = {
DeleteType: opts.deleteType
};
return builder.nodeNS(NS_MESSAGES, 'DeleteItem', param, function(builder) {
return EWSBuilder.$itemIds(builder, opts.itemIds);
});
});
};
EWSItemOperations.prototype.deleteItem = function(opts) {
return this.doSoapRequest(this.buildDeleteItem(opts));
};
EWSItemOperations.prototype.buildSendItem = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var param;
if (opts.saveItemToFolder == null) {
opts.saveItemToFolder = opts.savedItemFolderId != null;
}
param = {
SaveItemToFolder: opts.saveItemToFolder
};
return builder.nodeNS(NS_MESSAGES, 'SendItem', param, function(builder) {
EWSBuilder.$itemIds(builder, opts.itemIds);
if (opts.savedItemFolderId) {
return EWSBuilder.$savedItemFolderId(builder, opts.savedItemFolderId);
}
});
});
};
EWSItemOperations.prototype.sendItem = function(opts) {
return this.doSoapRequest(this.buildSendItem(opts));
};
EWSItemOperations.prototype.buildUpdateItem = function(opts) {
if (opts == null) {
opts = {};
}
return EWSBuilder.build(function(builder) {
var param, ref;
param = {
MessageDisposition: (ref = opts.messageDisposition) != null ? ref : 'SaveOnly'
};
return builder.nodeNS(NS_MESSAGES, 'UpdateItem', param, function(builder) {
if (opts.savedItemFolderId) {
EWSBuilder.$savedItemFolderId(builder, opts.savedItemFolderId);
}
return EWSBuilder.$itemChanges(builder, opts.itemChanges);
});
});
};
EWSItemOperations.prototype.updateItem = function(opts) {
return this.doSoapRequest(this.buildUpdateItem(opts), 'EWSItemsResponse');
};
return EWSItemOperations;
})(Mixin);