Better plaintext detection

This commit is contained in:
William Tan 2022-01-12 01:38:20 -05:00 committed by Edward Shen
parent 247a5ad6f6
commit 2b6fc073fb
Signed by: edward
GPG key ID: 19182661E818369F
2 changed files with 10 additions and 6 deletions

3
test/text.pgp Normal file
View file

@ -0,0 +1,3 @@
-----BEGIN PGP MESSAGE-----
-----END PGP MESSAGE-----

View file

@ -141,17 +141,17 @@ impl<T: AsRef<[u8]>> ContentTypeExt for T {
fn content_type(&self) -> ContentType { fn content_type(&self) -> ContentType {
let mime_type = self.mime_type(); let mime_type = self.mime_type();
if mime_type.starts_with("text/") || mime_type == "application/mbox" { if mime_type.starts_with("image/") // check image first because svg is image
// application/x-riff is WebP
|| mime_type == "application/x-riff"
{
ContentType::Image
} else if tree_magic_mini::match_u8("text/plain", self.as_ref()) {
if std::str::from_utf8(self.as_ref()).is_ok() { if std::str::from_utf8(self.as_ref()).is_ok() {
ContentType::Text ContentType::Text
} else { } else {
ContentType::Unknown ContentType::Unknown
} }
} else if mime_type.starts_with("image/")
// application/x-riff is WebP
|| mime_type == "application/x-riff"
{
ContentType::Image
} else if mime_type.starts_with("audio/") { } else if mime_type.starts_with("audio/") {
ContentType::Audio ContentType::Audio
} else if mime_type.starts_with("video/") } else if mime_type.starts_with("video/")
@ -197,4 +197,5 @@ mod content_type {
test_content_type!(zip_is_zip, "archive.zip", ContentType::ZipArchive); test_content_type!(zip_is_zip, "archive.zip", ContentType::ZipArchive);
test_content_type!(gzip_is_gzip, "image.png.gz", ContentType::GzipArchive); test_content_type!(gzip_is_gzip, "image.png.gz", ContentType::GzipArchive);
test_content_type!(binary_is_unknown, "omegaupload", ContentType::Unknown); test_content_type!(binary_is_unknown, "omegaupload", ContentType::Unknown);
test_content_type!(pgp_is_text, "text.pgp", ContentType::Text);
} }