Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/aofei/mimesniffer

A MIME type sniffer for Go.
https://github.com/aofei/mimesniffer

content-type file-format file-signature go magic-number mime mimesniffer sniffer type

Last synced: 2 months ago
JSON representation

A MIME type sniffer for Go.

Awesome Lists containing this project

README

        

# MIMESniffer

[![GitHub Actions](https://github.com/aofei/mimesniffer/workflows/Test/badge.svg)](https://github.com/aofei/mimesniffer)
[![codecov](https://codecov.io/gh/aofei/mimesniffer/branch/master/graph/badge.svg)](https://codecov.io/gh/aofei/mimesniffer)
[![Go Report Card](https://goreportcard.com/badge/github.com/aofei/mimesniffer)](https://goreportcard.com/report/github.com/aofei/mimesniffer)
[![PkgGoDev](https://pkg.go.dev/badge/github.com/aofei/mimesniffer)](https://pkg.go.dev/github.com/aofei/mimesniffer)

A MIME type sniffer for Go.

MIMESniffer implements the algorithm described at
[here](https://mimesniff.spec.whatwg.org) and uses the file signatures (aka
[magic numbers](https://en.wikipedia.org/wiki/Magic_number_\(programming\)#Magic_numbers_in_files))
listed [here](https://www.garykessler.net/library/file_sigs.html) to determine
the MIME type of the given data. So it can be used as an alternative for the
[`http.DetectContentType`](https://pkg.go.dev/net/http#DetectContentType).

## Features

* Extremely easy to use
* Two functions
* [`mimesniffer.Register`](https://pkg.go.dev/github.com/aofei/mimesniffer#Register)
* [`mimesniffer.Sniff`](https://pkg.go.dev/github.com/aofei/mimesniffer#Sniff)
* Quite fast
* Supports a wide range of MIME types
* `application/epub+zip`
* `application/font-sfnt`
* `application/font-woff`
* `application/msword`
* `application/octet-stream`
* `application/ogg`
* `application/pdf`
* `application/postscript`
* `application/rtf`
* `application/vnd.ms-cab-compressed`
* `application/vnd.ms-excel`
* `application/vnd.ms-fontobject`
* `application/vnd.ms-powerpoint`
* `application/vnd.openxmlformats-officedocument.presentationml.presentation`
* `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`
* `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
* `application/wasm`
* `application/x-7z-compressed`
* `application/x-bzip2`
* `application/x-compress`
* `application/x-deb`
* `application/x-executable`
* `application/x-google-chrome-extension`
* `application/x-gzip`
* `application/x-lzip`
* `application/x-msdownload`
* `application/x-nintendo-nes-rom`
* `application/x-rar-compressed`
* `application/x-rpm`
* `application/x-shockwave-flash`
* `application/x-sqlite3`
* `application/x-tar`
* `application/x-unix-archive`
* `application/x-xz`
* `application/zip`
* `audio/aac`
* `audio/aiff`
* `audio/amr`
* `audio/basic`
* `audio/m4a`
* `audio/midi`
* `audio/mpeg`
* `audio/ogg`
* `audio/wave`
* `audio/x-flac`
* `audio/x-wav`
* `font/collection`
* `font/otf`
* `font/ttf`
* `font/woff2`
* `font/woff`
* `image/bmp`
* `image/gif`
* `image/jp2`
* `image/jpeg`
* `image/png`
* `image/tiff`
* `image/vnd.adobe.photoshop`
* `image/vnd.microsoft.icon`
* `image/webp`
* `image/x-canon-cr2`
* `text/html; charset=utf-8`
* `text/plain; charset=utf-16be`
* `text/plain; charset=utf-16le`
* `text/plain; charset=utf-8`
* `text/xml; charset=utf-8`
* `video/avi`
* `video/mp4`
* `video/mpeg`
* `video/quicktime`
* `video/webm`
* `video/x-flv`
* `video/x-m4v`
* `video/x-matroska`
* `video/x-ms-wmv`
* `video/x-msvideo`
* Zero third-party dependencies

## Installation

Open your terminal and execute

```bash
$ go get github.com/aofei/mimesniffer
```

done.

> The only requirement is the [Go](https://go.dev), at least v1.13.

## Community

If you want to discuss MIMESniffer, or ask questions about it, simply post
questions or ideas [here](https://github.com/aofei/mimesniffer/issues).

## Contributing

If you want to help build MIMESniffer, simply follow
[this](https://github.com/aofei/mimesniffer/wiki/Contributing) to send pull requests
[here](https://github.com/aofei/mimesniffer/pulls).

## License

This project is licensed under the MIT License.

License can be found [here](LICENSE).