|
|
|
@ -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');
|
|
|
|
|