/** * @file message.h * @brief Declaration of the Message class. * @author Andreas Aardal Hanssen * @date 2002-2005 */ #ifndef message_h_included #define message_h_included #include #include #include #ifndef UINTMAX #define UINTMAX ((unsigned int)-1) #endif namespace Binc { /*! * \class Message * \brief The Message class provides an interface for * IMAP messages. * * Mailbox independent operations and properties are available * through this interface. * * This class is an abstract, and has no implementation. * * \sa MaildirMessage */ class Message { public: //! Standard IMAP message flags. enum Flags { F_NONE = 0x00, //!< No flag is set F_SEEN = 0x01, //!< The message has been seen F_ANSWERED = 0x02, //!< The message has been answered F_DELETED = 0x04, //!< The message is marked as deleted F_DRAFT = 0x08, //!< The message is a draft F_RECENT = 0x10, //!< The message arrived recently F_FLAGGED = 0x20, //!< The message is flagged / important F_EXPUNGED = 0x40, //!< The message has been expunged F_PASSED = 0x80 //!< The message has been bounced }; virtual void setUID(unsigned int) = 0; virtual unsigned int getUID() const = 0; virtual void setSize(unsigned int) = 0; virtual unsigned int getSize(bool render = false) const = 0; virtual void setStdFlag(unsigned char) = 0; virtual void resetStdFlags() = 0; virtual unsigned char getStdFlags() const = 0; virtual void setCustomFlag(const std::string &flag) = 0; virtual void removeCustomFlag(const std::string &flag) = 0; virtual void resetCustomFlags() = 0; virtual std::vector getCustomFlags() const = 0; virtual void setFlagsUnchanged() = 0; virtual bool hasFlagsChanged() const = 0; virtual void setInternalDate(time_t) = 0; virtual time_t getInternalDate() const = 0; // virtual void rewind() = 0; virtual int readChunk(std::string &) = 0; virtual bool appendChunk(const std::string &) = 0; virtual void close() = 0; virtual void setExpunged() = 0; virtual void setUnExpunged() = 0; virtual bool isExpunged() const = 0; virtual const std::string &getHeader(const std::string &header) = 0; virtual bool headerContains(const std::string &header, const std::string &text) = 0; virtual bool bodyContains(const std::string &text) = 0; virtual bool textContains(const std::string &text) = 0; virtual bool printBodyStructure(bool extended = true) const = 0; virtual bool printEnvelope() const = 0; virtual bool printHeader(const std::string §ion, std::vector headers, bool includeHeaders = false, unsigned int startOffset = 0, unsigned int length = UINTMAX, bool mime = false) const = 0; virtual unsigned int getHeaderSize(const std::string §ion, std::vector headers, bool includeHeaders = false, unsigned int startOffset = 0, unsigned int length = UINTMAX, bool mime = false) const = 0; virtual bool printBody(const std::string §ion, unsigned int startOffset = 0, unsigned int length = UINTMAX) const = 0; virtual unsigned int getBodySize(const std::string §ion, unsigned int startOffset = 0, unsigned int length = UINTMAX) const = 0; virtual bool printDoc(unsigned int startOffset = 0, unsigned int length = UINTMAX, bool onlyText = false) const = 0; virtual unsigned int getDocSize(unsigned int startOffset = 0, unsigned int length = UINTMAX, bool onlyText = false) const = 0; Message(); virtual ~Message(); void setLastError(const std::string &) const; const std::string &getLastError() const; private: static std::string lastError; }; inline Message::Message() {} inline Message::~Message() {} inline void Message::setLastError(const std::string &error) const { lastError = error; } inline const std::string &Message::getLastError() const { return lastError; } } #endif