00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifdef _WIN32
00010 #pragma warning(disable: 4786)
00011 #endif
00012
00013 #ifndef zz_mime_body_h
00014 #define zz_mime_body_h
00015
00016 #include <zz_buffer.h>
00017 #include <zz_string.h>
00018 #include <map>
00019 #include <zz_export.h>
00020
00021
00022 #define ZZ_MIME_WBLOCK_SIZE 10240
00023
00024
00025 #define CRLF char(13), char(10)
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class ZZ_API CzzMIMEBody
00041 {
00042 public:
00043
00044
00045
00046
00047
00048
00049
00050 CzzMIMEBody();
00051
00052
00053
00054
00055
00056
00057
00058 CzzMIMEBody( char* body,
00059 long size,
00060 const char* type
00061 );
00062
00063
00064 virtual ~CzzMIMEBody();
00065
00066
00067 static CzzString parseBoundary( const char* type
00068 );
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 CzzString getFile( const CzzString& name
00081 );
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 CzzString operator[]( const CzzString& var
00094 );
00095
00096
00097 void addHeader( const char* name,
00098 const char* value
00099 );
00100
00101
00102 void addFileHeader( const char* name,
00103 const char* file
00104 );
00105
00106
00107 void addEndMarker( void );
00108
00109
00110 CzzString& getBoundary( void ) { return m_Boundary; }
00111
00112
00113 const char* getData( void ) { return m_Buffer.getData(); };
00114
00115
00116 long getSize( void ) { return m_Buffer.getSize(); };
00117
00118 protected:
00119
00120
00121 void parseMe( void );
00122
00123
00124 void genBoundary( void );
00125
00126 CzzString m_Boundary;
00127 CzzString m_LastFileElement;
00128 char* m_RawBody;
00129 long m_RawSize;
00130 map<CzzString, CzzString > m_ElementMap;
00131 map<CzzString, CzzString > m_FileMap;
00132 CzzBuffer m_Buffer;
00133
00134 private:
00135
00136 CzzString copyReadFromStart( long from, long to );
00137 long parseElementName( long pos, const CzzString& elem );
00138 long writeToFile( long pos );
00139 };
00140
00141 #endif // zz_mime_body_h
00142