Example #1
0
bool
ListCommand::HandleUntagged(Response& response)
{
	if (response.IsCommand(_Command()) && response.IsStringAt(2)
		&& response.IsStringAt(3)) {
		fSeparator = response.StringAt(2);

		BString folder = response.StringAt(3);
		if (folder == "")
			return true;

		try {
			folder = fEncoding.Decode(folder);
			// The folder INBOX is always case insensitive
			if (folder.ICompare("INBOX") == 0)
				folder = "Inbox";
			fFolders.push_back(folder);
		} catch (ParseException& exception) {
			// Decoding failed, just add the plain text
			fprintf(stderr, "Decoding \"%s\" failed: %s\n", folder.String(),
				exception.Message());
			fFolders.push_back(folder);
		}
		return true;
	}

	return false;
}
Example #2
0
bool
CapabilityHandler::HandleUntagged(Response& response)
{
	if (!response.IsCommand("CAPABILITY"))
		return false;

	fCapabilities.MakeEmpty();
	while (response.CountItems() > 1)
		fCapabilities.AddItem(response.RemoveItemAt(1));

	TRACE("CAPABILITY: %s\n", fCapabilities.ToString().String());
	return true;
}
Example #3
0
bool
GetQuotaCommand::HandleUntagged(Response& response)
{
	if (!response.IsCommand("QUOTA") || !response.IsListAt(2))
		return false;

	const ArgumentList& arguments = response.ListAt(2);
	if (!arguments.EqualsAt(0, "STORAGE"))
		return false;

	fUsedStorage = (uint64)arguments.NumberAt(1) * 1024;
	fTotalStorage = (uint64)arguments.NumberAt(2) * 1024;

	return true;
}