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 public:
00083 MIMEMultipart(const char *document);
00084
00091 virtual void head(std::ostream *output);
00092
00099 virtual void body(std::ostream *output);
00100
00107 char **getHeaders(void)
00108 {return header;};
00109 };
00110
00119 class __EXPORT MIMEMultipartForm : public MIMEMultipart
00120 {
00121 public:
00126 MIMEMultipartForm();
00127 };
00128
00137 class __EXPORT MIMEItemPart
00138 {
00139 protected:
00140 friend class __EXPORT MIMEMultipart;
00141
00142 MIMEMultipart *base;
00143 MIMEItemPart *next;
00144 const char *ctype;
00145
00151 virtual void head(std::ostream *output);
00152
00158 virtual void body(std::ostream *output) = 0;
00159
00166 MIMEItemPart(MIMEMultipart *top, const char *ct);
00167 };
00168
00176 class __EXPORT MIMEFormData : public MIMEItemPart
00177 {
00178 protected:
00179 const char *content;
00180 const char *name;
00181
00182 public:
00188 void head(std::ostream *output);
00189
00195 void body(std::ostream *output);
00196
00204 MIMEFormData(MIMEMultipartForm *top, const char *name, const char *content);
00205 };
00206
00207 #ifdef CCXX_NAMESPACES
00208 }
00209 #endif
00210
00211 #endif
00212