Skip to content

Commit ccdee23

Browse files
committed
RfcHeader to string support.
1 parent 35754ee commit ccdee23

File tree

2 files changed

+81
-34
lines changed

2 files changed

+81
-34
lines changed

src/lib.rs

+49-2
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,11 @@
251251
pub mod decoders;
252252
pub mod parsers;
253253

254-
use std::{borrow::Cow, collections::HashMap, fmt};
254+
use std::{
255+
borrow::Cow,
256+
collections::HashMap,
257+
fmt::{self, Display},
258+
};
255259

256260
use decoders::html::{html_to_text, text_to_html};
257261
use parsers::{
@@ -562,7 +566,50 @@ pub enum RfcHeader {
562566
ListPost = 34,
563567
ListSubscribe = 35,
564568
ListUnsubscribe = 36,
565-
Other = 37,
569+
}
570+
571+
impl Display for RfcHeader {
572+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
573+
match self {
574+
RfcHeader::Subject => write!(f, "Subject"),
575+
RfcHeader::From => write!(f, "From"),
576+
RfcHeader::To => write!(f, "To"),
577+
RfcHeader::Cc => write!(f, "Cc"),
578+
RfcHeader::Date => write!(f, "Date"),
579+
RfcHeader::Bcc => write!(f, "Bcc"),
580+
RfcHeader::ReplyTo => write!(f, "Reply-To"),
581+
RfcHeader::Sender => write!(f, "Sender"),
582+
RfcHeader::Comments => write!(f, "Comments"),
583+
RfcHeader::InReplyTo => write!(f, "In-Reply-To"),
584+
RfcHeader::Keywords => write!(f, "Keywords"),
585+
RfcHeader::Received => write!(f, "Received"),
586+
RfcHeader::MessageId => write!(f, "Message-ID"),
587+
RfcHeader::References => write!(f, "References"),
588+
RfcHeader::ReturnPath => write!(f, "Return-Path"),
589+
RfcHeader::MimeVersion => write!(f, "MIME-Version"),
590+
RfcHeader::ContentDescription => write!(f, "Content-Description"),
591+
RfcHeader::ContentId => write!(f, "Content-ID"),
592+
RfcHeader::ContentLanguage => write!(f, "Content-Language"),
593+
RfcHeader::ContentLocation => write!(f, "Content-Location"),
594+
RfcHeader::ContentTransferEncoding => write!(f, "Content-Transfer-Encoding"),
595+
RfcHeader::ContentType => write!(f, "Content-Type"),
596+
RfcHeader::ContentDisposition => write!(f, "Content-Disposition"),
597+
RfcHeader::ResentTo => write!(f, "Resent-To"),
598+
RfcHeader::ResentFrom => write!(f, "Resent-From"),
599+
RfcHeader::ResentBcc => write!(f, "Resent-Bcc"),
600+
RfcHeader::ResentCc => write!(f, "Resent-Cc"),
601+
RfcHeader::ResentSender => write!(f, "Resent-Sender"),
602+
RfcHeader::ResentDate => write!(f, "Resent-Date"),
603+
RfcHeader::ResentMessageId => write!(f, "Resent-Message-ID"),
604+
RfcHeader::ListArchive => write!(f, "List-Archive"),
605+
RfcHeader::ListHelp => write!(f, "List-Help"),
606+
RfcHeader::ListId => write!(f, "List-ID"),
607+
RfcHeader::ListOwner => write!(f, "List-Owner"),
608+
RfcHeader::ListPost => write!(f, "List-Post"),
609+
RfcHeader::ListSubscribe => write!(f, "List-Subscribe"),
610+
RfcHeader::ListUnsubscribe => write!(f, "List-Unsubscribe"),
611+
}
612+
}
566613
}
567614

568615
/// A parsed header value.

src/parsers/header.rs

+32-32
Original file line numberDiff line numberDiff line change
@@ -258,73 +258,73 @@ static HDR_HASH: &[u8] = &[
258258

259259
static HDR_MAP: &[RfcHeader] = &[
260260
RfcHeader::Date,
261-
RfcHeader::Other,
261+
RfcHeader::MimeVersion, // Invalid
262262
RfcHeader::Sender,
263-
RfcHeader::Other,
263+
RfcHeader::MimeVersion, // Invalid
264264
RfcHeader::Received,
265-
RfcHeader::Other,
265+
RfcHeader::MimeVersion, // Invalid
266266
RfcHeader::References,
267-
RfcHeader::Other,
267+
RfcHeader::MimeVersion, // Invalid
268268
RfcHeader::Cc,
269269
RfcHeader::Comments,
270270
RfcHeader::ResentCc,
271271
RfcHeader::ContentId,
272-
RfcHeader::Other,
272+
RfcHeader::MimeVersion, // Invalid
273273
RfcHeader::ResentMessageId,
274274
RfcHeader::ReplyTo,
275275
RfcHeader::ResentTo,
276276
RfcHeader::ResentBcc,
277277
RfcHeader::ContentLanguage,
278278
RfcHeader::Subject,
279279
RfcHeader::ResentSender,
280-
RfcHeader::Other,
281-
RfcHeader::Other,
280+
RfcHeader::MimeVersion, // Invalid
281+
RfcHeader::MimeVersion, // Invalid
282282
RfcHeader::ResentDate,
283283
RfcHeader::To,
284284
RfcHeader::Bcc,
285-
RfcHeader::Other,
285+
RfcHeader::MimeVersion, // Invalid
286286
RfcHeader::ContentTransferEncoding,
287287
RfcHeader::ReturnPath,
288288
RfcHeader::ListId,
289289
RfcHeader::Keywords,
290290
RfcHeader::ContentDescription,
291291
RfcHeader::ListOwner,
292-
RfcHeader::Other,
292+
RfcHeader::MimeVersion, // Invalid
293293
RfcHeader::ContentType,
294-
RfcHeader::Other,
294+
RfcHeader::MimeVersion, // Invalid
295295
RfcHeader::ListHelp,
296296
RfcHeader::MessageId,
297297
RfcHeader::ContentLocation,
298-
RfcHeader::Other,
299-
RfcHeader::Other,
298+
RfcHeader::MimeVersion, // Invalid
299+
RfcHeader::MimeVersion, // Invalid
300300
RfcHeader::ListSubscribe,
301-
RfcHeader::Other,
302-
RfcHeader::Other,
303-
RfcHeader::Other,
304-
RfcHeader::Other,
301+
RfcHeader::MimeVersion, // Invalid
302+
RfcHeader::MimeVersion, // Invalid
303+
RfcHeader::MimeVersion, // Invalid
304+
RfcHeader::MimeVersion, // Invalid
305305
RfcHeader::ListPost,
306-
RfcHeader::Other,
306+
RfcHeader::MimeVersion, // Invalid
307307
RfcHeader::ResentFrom,
308-
RfcHeader::Other,
309-
RfcHeader::Other,
308+
RfcHeader::MimeVersion, // Invalid
309+
RfcHeader::MimeVersion, // Invalid
310310
RfcHeader::ContentDisposition,
311-
RfcHeader::Other,
311+
RfcHeader::MimeVersion, // Invalid
312312
RfcHeader::InReplyTo,
313313
RfcHeader::ListArchive,
314-
RfcHeader::Other,
314+
RfcHeader::MimeVersion, // Invalid
315315
RfcHeader::From,
316-
RfcHeader::Other,
316+
RfcHeader::MimeVersion, // Invalid
317317
RfcHeader::ListUnsubscribe,
318-
RfcHeader::Other,
319-
RfcHeader::Other,
320-
RfcHeader::Other,
321-
RfcHeader::Other,
322-
RfcHeader::Other,
323-
RfcHeader::Other,
324-
RfcHeader::Other,
325-
RfcHeader::Other,
326-
RfcHeader::Other,
327-
RfcHeader::Other,
318+
RfcHeader::MimeVersion, // Invalid
319+
RfcHeader::MimeVersion, // Invalid
320+
RfcHeader::MimeVersion, // Invalid
321+
RfcHeader::MimeVersion, // Invalid
322+
RfcHeader::MimeVersion, // Invalid
323+
RfcHeader::MimeVersion, // Invalid
324+
RfcHeader::MimeVersion, // Invalid
325+
RfcHeader::MimeVersion, // Invalid
326+
RfcHeader::MimeVersion, // Invalid
327+
RfcHeader::MimeVersion, // Invalid
328328
RfcHeader::MimeVersion,
329329
];
330330

0 commit comments

Comments
 (0)