summaryrefslogtreecommitdiffstats
path: root/libmail/structure.H
diff options
context:
space:
mode:
Diffstat (limited to 'libmail/structure.H')
-rw-r--r--libmail/structure.H185
1 files changed, 0 insertions, 185 deletions
diff --git a/libmail/structure.H b/libmail/structure.H
deleted file mode 100644
index 8798019..0000000
--- a/libmail/structure.H
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
-** Copyright 2002-2005, Double Precision Inc.
-**
-** See COPYING for distribution information.
-*/
-#ifndef libmail_structure_H
-#define libmail_structure_H
-
-#include "libmail_config.h"
-
-#include <string>
-#include <vector>
-#include <map>
-
-#include "namespace.H"
-#include "misc.H"
-
-LIBMAIL_START
-
-class envelope;
-class xenvelope;
-
-///////////////////////////////////////////////////////////////////////////
-//
-// The structure of a message is described by a tree of mail::mimestruct
-// objects. Each mail::mimestruct objects represents a MIME section in the
-// message, and may contain pointers to mail::mimestruct objects for content
-// sections if the MIME section is a multipart section.
-
-class mimestruct {
-
-public:
-
- // The Content-Type: and Content-Disposition: headers have an
- // optional parameter=value; list, which is parsed into a hash.
- //
- // The get() method fetches the parameter. It's a pretty smart get()
- // method. If a character set is provided, the parameter value is
- // mapped to the specified character set. Additionally, the get()
- // method automatically handles RFC 2231-encoded attributes.
- // Ain't that cool?
-
- class parameterList {
- std::map<std::string, std::string> param_map;
-
- public:
- typedef std::map<std::string, std::string>::iterator iterator;
- typedef std::map<std::string, std::string>::const_iterator
- const_iterator;
-
- iterator begin() { return param_map.begin(); }
- iterator end() { return param_map.end(); }
- const_iterator begin() const { return param_map.begin(); }
- const_iterator end() const { return param_map.end(); }
-
- parameterList();
- ~parameterList();
-
- void set_simple(std::string name, std::string value)
- {
- mail::upper(name);
- param_map.insert(std::make_pair(name, value));
- }
-
- void erase(std::string name)
- {
- mail::upper(name);
- iterator p=param_map.find(name);
-
- if (p != end())
- param_map.erase(p);
- }
-
- void set(std::string name, std::string value,
- std::string charset,
- std::string language="");
-
- bool exists(std::string name) const;
- std::string get(std::string name,
- std::string chset="") const;
-
- std::string toString(std::string type) const;
- // Create a header from "type", plus these parameters
- };
-
- std::string mime_id; // An opaque identifier of this MIME section.
-
-
- std::string type, subtype; // text, plain
-
- bool messagerfc822() const
- {
- return type == "MESSAGE" && subtype == "RFC822";
- }
-
- bool multipartsigned() const
- {
- return type == "MULTIPART" && subtype == "SIGNED";
- }
-
- bool multipartencrypted() const
- {
- return type == "MULTIPART" && subtype == "ENCRYPTED";
- }
-
- parameterList type_parameters;
-
- // <charset, iso-8859-1>
-
- std::string content_id;
- std::string content_description;
- std::string content_transfer_encoding;
-
- size_t content_size;
- size_t content_lines;
-
- std::string content_md5;
- std::string content_language;
-
- std::string content_disposition;
-
- parameterList content_disposition_parameters;
-
- mimestruct();
- ~mimestruct();
-
- // Copy constructors, and assignment operators, are fully functional.
-
- mimestruct(const mimestruct &cpy);
- mimestruct &operator=(const mimestruct &cpy);
-
-private:
- mail::envelope *message_rfc822_envelope;
-
- std::vector<mimestruct *> children;
- mimestruct *parent;
-
- void destroy();
-public:
-
- // MESSAGE/RFC822 content also has an associated mail::envelope
- // object. getEnvelope() automatically creates this object,
- // which is automatically destroyed by the destructor
-
- class mail::envelope &getEnvelope();
- const class mail::envelope &getEnvelope() const
- {
- return *message_rfc822_envelope;
- }
-
- mimestruct *addChild();
- size_t getNumChildren() const { return children.size(); }
-
- const mimestruct *getChild(size_t n)
- const { return children[n]; }
-
- const mimestruct *getParent() const { return parent; }
-
- mimestruct *getChild(size_t n) { return children[n]; }
- mimestruct *getParent() { return parent; }
-
- mimestruct *find(std::string mime_idArg)
- {
- if (mime_idArg == mime_id)
- return this;
-
- std::vector<mimestruct *>::iterator b=children.begin(),
- e=children.end();
-
- while (b != e)
- {
- mimestruct *p= (*b)->find(mime_idArg);
-
- ++b;
-
- if (p)
- return p;
- }
-
- return NULL;
- }
-};
-LIBMAIL_END
-
-#endif