summaryrefslogtreecommitdiffstats
path: root/third_party/rust/mime_guess/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/rust/mime_guess/README.md
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/mime_guess/README.md')
-rw-r--r--third_party/rust/mime_guess/README.md86
1 files changed, 86 insertions, 0 deletions
diff --git a/third_party/rust/mime_guess/README.md b/third_party/rust/mime_guess/README.md
new file mode 100644
index 0000000000..6e774503a4
--- /dev/null
+++ b/third_party/rust/mime_guess/README.md
@@ -0,0 +1,86 @@
+# mime_guess ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/abonander/mime_guess/Rust) [![Crates.io](https://img.shields.io/crates/v/mime_guess.svg)](https://crates.io/crates/mime_guess)
+
+MIME/MediaType guessing by file extension.
+Uses a static map of known file extension -> MIME type mappings.
+
+**Returning Contributors: New Requirements for Submissions Below**
+
+##### Required Rust Version: 1.33
+
+#### [Documentation](https://docs.rs/mime_guess/)
+
+### Versioning
+
+Due to a mistaken premature release, `mime_guess` currently publicly depends on a pre-1.0 `mime`,
+which means `mime` upgrades are breaking changes and necessitate a major version bump.
+Refer to the following table to find a version of `mime_guess` which matches your version of `mime`:
+
+| `mime` version | `mime_guess` version |
+|----------------|----------------------|
+| `0.1.x, 0.2.x` | `1.x.y` |
+| `0.3.x` | `2.x.y` |
+
+#### Note: MIME Types Returned Are Not Stable/Guaranteed
+The media types returned for a given extension are not considered to be part of the crate's
+ stable API and are often updated in patch (`x.y.z + 1`) releases to be as correct as possible. MIME
+ changes are backported to previous major releases on a best-effort basis.
+
+Note that only the extensions of paths/filenames are inspected in order to guess the MIME type. The
+file that may or may not reside at that path may or may not be a valid file of the returned MIME type.
+Be wary of unsafe or un-validated assumptions about file structure or length.
+
+An extension may also have multiple applicable MIME types. When more than one is returned, the first
+is considered to be the most "correct"--see below for elaboration.
+
+Contributing
+-----------
+
+#### Adding or correcting MIME types for extensions
+
+Is the MIME type for a file extension wrong or missing? Great!
+Well, not great for us, but great for you if you'd like to open a pull request!
+
+The file extension -> MIME type mappings are listed in `src/mime_types.rs`.
+**The list is sorted lexicographically by file extension, and all extensions are lowercase (where applicable).**
+The former is necessary to support fallback to binary search when the
+`phf-map` feature is turned off, and for the maintainers' sanity.
+The latter is only for consistency's sake; the search is case-insensitive.
+
+Simply add or update the appropriate string pair(s) to make the correction(s) needed.
+Run `cargo test` to make sure the library continues to work correctly.
+
+#### Important! Citing the corrected MIME type
+
+When opening a pull request, please include a link to an official document or RFC noting
+the correct MIME type for the file type in question **in the commit message** so
+that the commit history can be used as an audit trail.
+
+Though we're only guessing here, we like to be as correct as we can.
+It makes it much easier to vet your contribution if we don't have to search for corroborating material.
+
+#### Multiple MIME types per extension
+As of `2.0.0`, multiple MIME types per extension are supported. The first MIME type in the list for
+a given extension should be the most "correct" so users who only care about getting a single MIME
+type can use the `first*()` methods.
+
+The definition of "correct" is open to debate, however. In the author's opinion this should be
+whatever is defined by the latest IETF RFC for the given file format, or otherwise explicitly
+supercedes all others.
+
+If an official IANA registration replaces an older "experimental" style media type, please
+place the new type before the old type in the list, but keep the old type for reference:
+
+```
+- ("md", &["text/x-markdown"]),
++ ("md", &["text/markdown", "text/x-markdown"]),
+```
+
+#### Changes to the API or operation of the crate
+
+We're open to changes to the crate's API or its inner workings, breaking or not, if it improves the overall operation, efficiency, or ergonomics of the crate. However, it would be a good idea to open an issue on the repository so we can discuss your proposed changes and decide how best to approach them.
+
+
+License
+-------
+
+MIT (See the `LICENSE` file in this repository for more information.)