/************************************************************************* * * HTCd - Copyright (C) 1998-2006 Henrik Rydberg * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MIMEH #define MIMEH #include // MIME Headers const mstring mime_version_tag="MIME-Version"; const mstring cont_type_tag="Content-Type"; const mstring cont_trans_enc_tag="Content-Transfer-Encoding"; const mstring cont_id_tag="Content-ID"; const mstring cont_desc_tag="Content-Description"; const mstring cont_disp_tag="Content-Disposition"; const mstring cont_length_tag="Content-Length"; // Option headers const mstring name_tag="name"; const mstring file_tag="filename"; const mstring charset_tag="charset"; const mstring boundary_tag="boundary"; const mstring path_tag="path"; // Some Content types const mstring mime_textplain="text/plain"; const mstring mime_texthtml="text/html"; const mstring mime_texthtc="text/x-htc"; const mstring mime_multialt="multipart/alternative"; ///////////////////////////////////////////////////////////////// const sref* file2mime(const sref& file); ///////////////////////////////////////////////////////////////// class Mime { public: sref head,body; mstring mime_version; mstring cont_type,cont_type_charset,cont_type_name,cont_type_boundary; mstring cont_id; mstring cont_desc; mstring cont_disp,cont_disp_name,cont_disp_file; mstring cont_trans_enc; mstring cont_length; virtual void putHead(mstream& out) const; void Init(const sref& in); int Multipart(rpile& list) const; void Pick(const sref& mime); Mime(); Mime(const sref& msg) { Init(msg); } protected: virtual int Special(sref line); virtual int Handle(const sref& name, const sref& rawval, const sref& val, const rrpile& opts); }; ////////////////////////////////////////////////////////////////// inline int putval(mstream& out,const sref& tag,const sref& val) { if(val.nempty()) { out<