diff options
Diffstat (limited to 'src/messaging/pop3/POP3Message.cpp')
-rw-r--r-- | src/messaging/pop3/POP3Message.cpp | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/src/messaging/pop3/POP3Message.cpp b/src/messaging/pop3/POP3Message.cpp deleted file mode 100644 index ed8999e3..00000000 --- a/src/messaging/pop3/POP3Message.cpp +++ /dev/null @@ -1,213 +0,0 @@ -// -// VMime library (http://www.vmime.org) -// Copyright (C) 2002-2005 Vincent Richard <[email protected]> -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of -// the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -// - -#include "vmime/messaging/pop3/POP3Message.hpp" -#include "vmime/messaging/pop3/POP3Folder.hpp" -#include "vmime/messaging/pop3/POP3Store.hpp" - -#include <sstream> - - -namespace vmime { -namespace messaging { -namespace pop3 { - - -POP3Message::POP3Message(POP3Folder* folder, const int num) - : m_folder(folder), m_num(num), m_size(-1), m_deleted(false) -{ - m_folder->registerMessage(this); -} - - -POP3Message::~POP3Message() -{ - if (m_folder) - m_folder->unregisterMessage(this); -} - - -void POP3Message::onFolderClosed() -{ - m_folder = NULL; -} - - -const int POP3Message::getNumber() const -{ - return (m_num); -} - - -const message::uid POP3Message::getUniqueId() const -{ - return (m_uid); -} - - -const int POP3Message::getSize() const -{ - if (m_size == -1) - throw exceptions::unfetched_object(); - - return (m_size); -} - - -const bool POP3Message::isExpunged() const -{ - return (false); -} - - -const int POP3Message::getFlags() const -{ - int flags = FLAG_RECENT; - - if (m_deleted) - flags |= FLAG_DELETED; - - return (flags); -} - - -const structure& POP3Message::getStructure() const -{ - throw exceptions::operation_not_supported(); -} - - -structure& POP3Message::getStructure() -{ - throw exceptions::operation_not_supported(); -} - - -ref <const header> POP3Message::getHeader() const -{ - if (m_header == NULL) - throw exceptions::unfetched_object(); - - return (m_header); -} - - -void POP3Message::extract(utility::outputStream& os, - utility::progressionListener* progress, const int start, - const int length, const bool /* peek */) const -{ - if (!m_folder) - throw exceptions::illegal_state("Folder closed"); - else if (!m_folder->m_store) - throw exceptions::illegal_state("Store disconnected"); - - if (start != 0 && length != -1) - throw exceptions::partial_fetch_not_supported(); - - // Emit the "RETR" command - std::ostringstream oss; - oss << "RETR " << m_num; - - const_cast <POP3Folder*>(m_folder)->m_store->sendRequest(oss.str()); - - try - { - POP3Folder::MessageMap::const_iterator it = - m_folder->m_messages.find(const_cast <POP3Message*>(this)); - - const int totalSize = (it != m_folder->m_messages.end()) - ? (*it).second : 0; - - const_cast <POP3Folder*>(m_folder)->m_store-> - readResponse(os, progress, totalSize); - } - catch (exceptions::command_error& e) - { - throw exceptions::command_error("RETR", e.response()); - } -} - - -void POP3Message::extractPart - (const part& /* p */, utility::outputStream& /* os */, - utility::progressionListener* /* progress */, - const int /* start */, const int /* length */, - const bool /* peek */) const -{ - throw exceptions::operation_not_supported(); -} - - -void POP3Message::fetchPartHeader(part& /* p */) -{ - throw exceptions::operation_not_supported(); -} - - -void POP3Message::fetch(POP3Folder* folder, const int options) -{ - if (m_folder != folder) - throw exceptions::folder_not_found(); - - // FETCH_STRUCTURE and FETCH_FLAGS are not supported by POP3. - if (options & (folder::FETCH_STRUCTURE | folder::FETCH_FLAGS)) - throw exceptions::operation_not_supported(); - - // Check for the real need to fetch the full header - static const int optionsRequiringHeader = - folder::FETCH_ENVELOPE | folder::FETCH_CONTENT_INFO | - folder::FETCH_FULL_HEADER | folder::FETCH_IMPORTANCE; - - if (!(options & optionsRequiringHeader)) - return; - - // No need to differenciate between FETCH_ENVELOPE, - // FETCH_CONTENT_INFO, ... since POP3 only permits to - // retrieve the whole header and not fields in particular. - - // Emit the "TOP" command - std::ostringstream oss; - oss << "TOP " << m_num << " 0"; - - m_folder->m_store->sendRequest(oss.str()); - - try - { - string buffer; - m_folder->m_store->readResponse(buffer, true); - - m_header = vmime::create <header>(); - m_header->parse(buffer); - } - catch (exceptions::command_error& e) - { - throw exceptions::command_error("TOP", e.response()); - } -} - - -void POP3Message::setFlags(const int /* flags */, const int /* mode */) -{ - throw exceptions::operation_not_supported(); -} - - -} // pop3 -} // messaging -} // vmime |