00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00043 #ifndef CCXX_MIME_H_
00044 #define CCXX_MIME_H_
00045
00046 #ifndef CCXX_CONFIG_H_
00047 #include <cc++/config.h>
00048 #endif
00049
00050 #ifndef CCXX_SOCKET_H_
00051 #include <cc++/socket.h>
00052 #endif
00053
00054 #ifdef CCXX_NAMESPACES
00055 namespace ost {
00056 #endif
00057
00058 class __EXPORT MIMEMultipart;
00059 class __EXPORT MIMEItemPart;
00060
00068 class __EXPORT MIMEMultipart
00069 {
00070 protected:
00071 friend class __EXPORT MIMEItemPart;
00072 char boundry[8];
00073 char mtype[80];
00074 char *header[16];
00075 MIMEItemPart *first, *last;
00076
00077 virtual ~MIMEMultipart();
00078
00079 public:
00085 MIMEMultipart(const char *document);
00086
00093 virtual void head(std::ostream *output);
00094
00101 virtual void body(std::ostream *output);
00102
00109 char **getHeaders(void)
00110 {return header;};
00111 };
00112
00121 class __EXPORT MIMEMultipartForm : public MIMEMultipart
00122 {
00123 protected:
00124 virtual ~MIMEMultipartForm();
00125
00126 public:
00131 MIMEMultipartForm();
00132 };
00133
00142 class __EXPORT MIMEItemPart
00143 {
00144 protected:
00145 friend class __EXPORT MIMEMultipart;
00146
00147 MIMEMultipart *base;
00148 MIMEItemPart *next;
00149 const char *ctype;
00150
00156 virtual void head(std::ostream *output);
00157
00163 virtual void body(std::ostream *output) = 0;
00164
00171 MIMEItemPart(MIMEMultipart *top, const char *ct);
00172
00173 virtual ~MIMEItemPart();
00174 };
00175
00183 class __EXPORT MIMEFormData : public MIMEItemPart
00184 {
00185 protected:
00186 const char *content;
00187 const char *name;
00188
00189 virtual ~MIMEFormData();
00190
00191 public:
00197 void head(std::ostream *output);
00198
00204 void body(std::ostream *output);
00205
00213 MIMEFormData(MIMEMultipartForm *top, const char *name, const char *content);
00214 };
00215
00216 #ifdef CCXX_NAMESPACES
00217 }
00218 #endif
00219
00220 #endif
00221