aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/imap
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/imap')
-rw-r--r--src/net/imap/IMAPFolder.cpp19
-rw-r--r--src/net/imap/IMAPMessage.cpp4
-rw-r--r--src/net/imap/IMAPUtils.cpp44
3 files changed, 17 insertions, 50 deletions
diff --git a/src/net/imap/IMAPFolder.cpp b/src/net/imap/IMAPFolder.cpp
index 60133a29..3a38182e 100644
--- a/src/net/imap/IMAPFolder.cpp
+++ b/src/net/imap/IMAPFolder.cpp
@@ -596,10 +596,10 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes
std::ostringstream cmd;
cmd.imbue(std::locale::classic());
- cmd << "UID FETCH " << IMAPUtils::extractUIDFromGlobalUID(uids[0]);
+ cmd << "UID FETCH " << uids[0];
for (std::vector <message::uid>::size_type i = 1, n = uids.size() ; i < n ; ++i)
- cmd << "," << IMAPUtils::extractUIDFromGlobalUID(uids[i]);
+ cmd << "," << uids[i];
cmd << " UID";
@@ -639,7 +639,7 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes
// Get Process fetch response for this message
const int msgNum = static_cast <int>(messageData->number());
- message::uid msgUID, msgFullUID;
+ message::uid msgUID;
// Find UID in message attributes
const std::vector <IMAPParser::msg_att_item*> atts = messageData->msg_att()->items();
@@ -649,9 +649,7 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes
{
if ((*it)->type() == IMAPParser::msg_att_item::UID)
{
- msgFullUID = IMAPUtils::makeGlobalUID(m_status->getUIDValidity(), (*it)->unique_id()->value());
msgUID = (*it)->unique_id()->value();
-
break;
}
}
@@ -659,7 +657,7 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes
if (!msgUID.empty())
{
ref <IMAPFolder> thisFolder = thisRef().dynamicCast <IMAPFolder>();
- messages.push_back(vmime::create <IMAPMessage>(thisFolder, msgNum, msgFullUID));
+ messages.push_back(vmime::create <IMAPMessage>(thisFolder, msgNum, msgUID));
}
}
@@ -676,6 +674,15 @@ int IMAPFolder::getMessageCount()
}
+vmime_uint32 IMAPFolder::getUIDValidity() const
+{
+ if (!isOpen())
+ throw exceptions::illegal_state("Folder not open");
+
+ return m_status->getUIDValidity();
+}
+
+
vmime_uint64 IMAPFolder::getHighestModSequence() const
{
if (!isOpen())
diff --git a/src/net/imap/IMAPMessage.cpp b/src/net/imap/IMAPMessage.cpp
index 9ae264c0..96114e94 100644
--- a/src/net/imap/IMAPMessage.cpp
+++ b/src/net/imap/IMAPMessage.cpp
@@ -295,7 +295,7 @@ void IMAPMessage::extractImpl(ref <const messagePart> p, utility::outputStream&
if (m_uid.empty())
command << "FETCH " << m_num << " BODY";
else
- command << "UID FETCH " << IMAPUtils::extractUIDFromGlobalUID(m_uid) << " BODY";
+ command << "UID FETCH " << m_uid << " BODY";
/*
BODY[] header + body
@@ -393,7 +393,7 @@ int IMAPMessage::processFetchResponse
}
case IMAPParser::msg_att_item::UID:
{
- m_uid = IMAPUtils::makeGlobalUID(folder->m_status->getUIDValidity(), (*it)->unique_id()->value());
+ m_uid = (*it)->unique_id()->value();
break;
}
case IMAPParser::msg_att_item::MODSEQ:
diff --git a/src/net/imap/IMAPUtils.cpp b/src/net/imap/IMAPUtils.cpp
index 2aad06a1..dc583f84 100644
--- a/src/net/imap/IMAPUtils.cpp
+++ b/src/net/imap/IMAPUtils.cpp
@@ -554,10 +554,10 @@ const string IMAPUtils::listToSet(const std::vector <message::uid>& list)
std::ostringstream res;
res.imbue(std::locale::classic());
- res << extractUIDFromGlobalUID(list[0]);
+ res << list[0];
for (std::vector <message::uid>::size_type i = 1, n = list.size() ; i < n ; ++i)
- res << "," << extractUIDFromGlobalUID(list[i]);
+ res << "," << list[i];
return res.str();
}
@@ -756,46 +756,6 @@ void IMAPUtils::convertAddressList
}
-// static
-vmime_uint32 IMAPUtils::extractUIDFromGlobalUID(const message::uid& uid)
-{
- message::uid::size_type colonPos = uid.find(':');
-
- if (colonPos == message::uid::npos)
- {
- std::istringstream iss(uid);
- iss.imbue(std::locale::classic());
-
- vmime_uint32 n = 0;
- iss >> n;
-
- return n;
- }
- else
- {
- std::istringstream iss(uid.substr(colonPos + 1));
- iss.imbue(std::locale::classic());
-
- vmime_uint32 n = 0;
- iss >> n;
-
- return n;
- }
-}
-
-
-// static
-const message::uid IMAPUtils::makeGlobalUID(const vmime_uint32 UIDValidity, const vmime_uint32 messageUID)
-{
- std::ostringstream oss;
- oss.imbue(std::locale::classic());
-
- oss << UIDValidity << ":" << messageUID;
-
- return message::uid(oss.str());
-}
-
-
} // imap
} // net
} // vmime