7#ifndef _MIMETIC_MESSAGE_H_
8#define _MIMETIC_MESSAGE_H_
11#include <mimetic/libconfig.h>
12#include <mimetic/mimeentity.h>
13#include <mimetic/utils.h>
14#include <mimetic/codec/codec.h>
37 TextEntity(
const std::string& text,
const std::string& charset);
47 TextPlain(
const std::string& text);
52 TextPlain(
const std::string& text,
const std::string& charset);
59 TextEnriched(
const std::string& text);
78struct MultipartMixed:
public MultipartEntity
84struct MultipartParallel:
public MultipartEntity
90struct MultipartAlternative:
public MultipartEntity
92 MultipartAlternative();
96struct MultipartDigest:
public MultipartEntity
105 ApplicationOctStream();
106 template<
typename Codec>
107 ApplicationOctStream(
const std::string&,
const Codec& c=
Base64::Encoder());
108 std::string type()
const;
109 void type(
const std::string&);
110 uint padding()
const;
111 void padding(
unsigned int);
112 bool operator()()
const {
return isValid(); }
113 bool isValid()
const {
return m_status; }
127 template<
typename Codec>
128 Attachment(
const std::string&,
const Codec& c );
129 template<
typename Codec>
131 bool operator()()
const {
return isValid(); }
132 bool isValid()
const {
return m_status; }
134 template<
typename Codec>
135 void set(
const std::string&,
const ContentType&,
const Codec& c);
143 ImageJpeg(
const std::string& fqn)
147 template<
typename Codec>
148 ImageJpeg(
const std::string& fqn,
const Codec& c)
157 AudioBasic(
const std::string& fqn)
161 template<
typename Codec>
162 AudioBasic(
const std::string& fqn,
const Codec& c)
175 std::ostream& write(std::ostream&,
const char*)
const;
185template<
typename Codec>
191template<
typename Codec>
194 set(fqn, ctype,
codec);
197template<
typename Codec>
198void Attachment::set(
const std::string& fqn,
const ContentType& ctype,
const Codec& codec)
200 Header& h = header();
203 std::string filename = utils::extractFilename(m_fqn);
205 h.contentType(ctype);
206 h.contentType().paramList().push_back(ContentType::Param(
"name", filename));
209 h.contentTransferEncoding().mechanism(codec.name());
212 h.contentDisposition().type(
"attachment");
213 h.contentDisposition().paramList().push_back(ContentDisposition::Param(
"filename", filename));
215 m_status = body().
load(m_fqn, codec);
219template<
typename Codec>
220ApplicationOctStream::ApplicationOctStream(
const std::string& fqn,
const Codec&
codec)
222 Header& h = header();
225 std::string filename = utils::extractFilename(m_fqn);
227 h.contentType(ContentType(
"application",
"octet-stream"));
228 h.contentType().paramList().push_back(ContentType::Param(
"name", filename));
231 h.contentTransferEncoding().mechanism(codec.name());
234 h.contentDisposition().type(
"attachment");
235 h.contentDisposition().paramList().push_back(ContentDisposition::Param(
"filename", filename));
237 m_status = body().load(m_fqn, codec);
Base64 encoder.
Definition base64.h:37
bool load(const std::string &)
Content-Type field value.
Definition contenttype.h:19
Attachment(const std::string &)
TextEnriched(const std::string &text, const std::string &charset)
TextEntity(const std::string &text, const std::string &charset)
TextPlain(const std::string &text, const std::string &charset)
Codecs base class.
Definition codec_base.h:24