Browse Source

LibCore: Replace MIME type description lookup with a more generic method

Rather than adding a bunch of `get_*_from_mime_type` functions, add just
one to get the Core::MimeType instance. We will need multiple fields at
once in Browser.
Timothy Flynn 1 year ago
parent
commit
1f44c9468a

+ 3 - 3
Userland/Libraries/LibCore/MimeData.cpp

@@ -168,14 +168,14 @@ Optional<StringView> guess_mime_type_based_on_sniffed_bytes(ReadonlyBytes bytes)
     return {};
 }
 
-Optional<StringView> get_description_from_mime_type(StringView mime_name)
+Optional<MimeType const&> get_mime_type_data(StringView mime_name)
 {
     for (auto const& mime_type : s_registered_mime_type) {
         if (mime_name == mime_type.name)
-            return mime_type.description;
+            return mime_type;
     }
 
-    return OptionalNone {};
+    return {};
 }
 
 Optional<StringView> guess_mime_type_based_on_sniffed_bytes(Core::File& file)

+ 1 - 1
Userland/Libraries/LibCore/MimeData.h

@@ -61,6 +61,6 @@ struct MimeType {
     u64 offset { 0 };
 };
 
-Optional<StringView> get_description_from_mime_type(StringView);
+Optional<MimeType const&> get_mime_type_data(StringView);
 
 }

+ 4 - 4
Userland/Utilities/file.cpp

@@ -168,17 +168,17 @@ static constexpr Array s_pattern_with_specialized_functions {
 
 static ErrorOr<Optional<String>> get_description_from_mime_type(StringView mime, StringView path)
 {
-    auto const description = Core::get_description_from_mime_type(mime);
+    auto const mime_type = Core::get_mime_type_data(mime);
 
-    if (!description.has_value())
+    if (!mime_type.has_value())
         return OptionalNone {};
 
     for (auto const& pattern : s_pattern_with_specialized_functions) {
         if (mime.matches(pattern.matching_pattern))
-            return pattern.details(*description, path);
+            return pattern.details(mime_type->description, path);
     }
 
-    return description_only(*description, path);
+    return description_only(mime_type->description, path);
 }
 
 ErrorOr<int> serenity_main(Main::Arguments arguments)