/** * @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(void) 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(void) = 0; virtual unsigned char getStdFlags(void) const = 0; virtual void setCustomFlag(const std::string &flag) = 0; virtual void removeCustomFlag(const std::string &flag) = 0; virtual void resetCustomFlags(void) = 0; virtual std::vector getCustomFlags(void) const = 0; virtual void setFlagsUnchanged(void) = 0; virtual bool hasFlagsChanged(void) const = 0; virtual void setInternalDate(time_t) = 0; virtual time_t getInternalDate(void) const = 0; // virtual void rewind(void) = 0; virtual int readChunk(std::string &) = 0; virtual bool appendChunk(const std::string &) = 0; virtual void close(void) = 0; virtual void setExpunged(void) = 0; virtual void setUnExpunged(void) = 0; virtual bool isExpunged(void) 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(void) 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(void); virtual ~Message(void); void setLastError(const std::string &) const; const std::string &getLastError(void) const; private: static std::string lastError; }; inline Message::Message(void) {} inline Message::~Message(void) {} inline void Message::setLastError(const std::string &error) const { lastError = error; } inline const std::string &Message::getLastError(void) const { return lastError; } } #endif