Add status command

fork
Brian White 12 years ago
parent 83a3008658
commit edcfbdb797

@ -326,6 +326,31 @@ ImapConnection.prototype.connect = function(loginCb) {
});
}
break;
case 'STATUS':
var result = parsers.parseExpr(data[2]),
values = result[1],
ret = {
validity: undefined,
messages: {
total: undefined,
new: undefined
}
};
for (var i=0,len=values.length; i<len; i+=2) {
switch (values[i].toLowerCase()) {
case 'recent':
ret.messages.new = parseInt(values[i + 1], 10);
break;
case 'messages':
ret.messages.total = parseInt(values[i + 1], 10);
break;
case 'uidvalidity':
ret.validity = parseInt(values[i + 1], 10);
break;
}
}
self._state.requests[0].args.push(ret);
break;
case 'OK':
if (result = /^\[ALERT\] (.*)$/i.exec(data[2]))
self.emit('alert', result[1]);
@ -596,6 +621,19 @@ ImapConnection.prototype.closeBox = function(cb) {
});
};
ImapConnection.prototype.status = function(boxName, cb) {
var self = this;
if (this._state.status === STATES.BOXSELECTED
&& this._state.box.name === boxName)
throw new Error('Not allowed to call status on the currently selected mailbox');
var cmd = 'STATUS "';
cmd += utils.escape(boxName);
cmd += '" (MESSAGES RECENT UIDVALIDITY)';
this._send(cmd, cb);
};
ImapConnection.prototype.removeDeleted = function(cb) {
if (this._state.status !== STATES.BOXSELECTED)
throw new Error('No mailbox is currently selected');

Loading…
Cancel
Save