magic

package module
v0.0.0-...-cc5a680 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2017 License: MIT Imports: 8 Imported by: 0

README

Developping is in progress.

go-magic

Read magic byte and detect file's extension or mime-type with pure Go

Example usage

b, err := ioutil.ReadFile("filename")
if err != nil {
	panic(err)
}
ext := magic.DetectExtension(b)
if ext == "zip" {
	ext, err = magic.DetectZipExtension(bytes.NewReader(b), int64(len(b)))
	if err != nil {
		panic(err)
	}
}
fmt.Println(ext)

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Definitions = []*Definition{}/* 572 elements not displayed */
View Source
var DefinitionsForText = []*Definition{

	{"html", []*Signature{{String: "<!DOCTYPE HTML "}}},
	{"html", []*Signature{{String: "<HTML "}}},
	{"html", []*Signature{{String: "<HEAD "}}},
	{"html", []*Signature{{String: "<SCRIPT "}}},
	{"html", []*Signature{{String: "<IFRAME "}}},
	{"html", []*Signature{{String: "<H1 "}}},
	{"html", []*Signature{{String: "<DIV "}}},
	{"html", []*Signature{{String: "<FONT "}}},
	{"html", []*Signature{{String: "<TABLE "}}},
	{"html", []*Signature{{String: "<A "}}},
	{"html", []*Signature{{String: "<STYLE "}}},
	{"html", []*Signature{{String: "<TITLE "}}},
	{"html", []*Signature{{String: "<B "}}},
	{"html", []*Signature{{String: "<BODY "}}},
	{"html", []*Signature{{String: "<BR "}}},
	{"html", []*Signature{{String: "<P "}}},
	{"html", []*Signature{{String: "<!-- "}}},
	{"html", []*Signature{{String: "<!DOCTYPE HTML>"}}},
	{"html", []*Signature{{String: "<HTML>"}}},
	{"html", []*Signature{{String: "<HEAD>"}}},
	{"html", []*Signature{{String: "<SCRIPT>"}}},
	{"html", []*Signature{{String: "<IFRAME>"}}},
	{"html", []*Signature{{String: "<H1>"}}},
	{"html", []*Signature{{String: "<DIV>"}}},
	{"html", []*Signature{{String: "<FONT>"}}},
	{"html", []*Signature{{String: "<TABLE>"}}},
	{"html", []*Signature{{String: "<A>"}}},
	{"html", []*Signature{{String: "<STYLE>"}}},
	{"html", []*Signature{{String: "<TITLE>"}}},
	{"html", []*Signature{{String: "<B>"}}},
	{"html", []*Signature{{String: "<BODY>"}}},
	{"html", []*Signature{{String: "<BR>"}}},
	{"html", []*Signature{{String: "<P>"}}},
	{"html", []*Signature{{String: "<!-->"}}},
	{"xml", []*Signature{{String: "<?XML"}}},
}
View Source
var MIMEMap = map[string]string{
	"jpg":   "image/jpeg",
	"png":   "image/png",
	"gif":   "image/gif",
	"exe":   "application/x-msdownload",
	"dll":   "application/x-msdownload",
	"sys":   "application/x-msdownload",
	"com":   "application/x-msdownload",
	"doc":   "application/msword",
	"xls":   "application/vnd.ms-excel",
	"ppt":   "application/vnd.ms-powerpoint",
	"docx":  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
	"xlsx":  "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
	"pptx":  "application/vnd.openxmlformats-officedocument.presentationml.presentation",
	"pdf":   "application/pdf",
	"swf":   "application/x-shockwave-flash",
	"rtf":   "application/rtf",
	"cab":   "application/vnd.ms-cab-compressed",
	"zip":   "application/zip",
	"7z":    "application/x-7z-compressed",
	"jar":   "application/java-archive",
	"rar":   "application/x-rar-compressed",
	"class": "application/java-vm",
	"tar.z": "application/x-compress",
	"gz":    "application/x-gzip",
	"xz":    "application/x-xz",
	"bz2":   "application/x-bzip2",
	"msi":   "application/x-msi",
	"vmdk":  "application/vmdk",
	"lzh":   "application/lha",
	"wma":   "audio/x-ms-wma",
	"bmp":   "image/bmp",
	"avi":   "video/avi",
	"wav":   "audio/wav",
	"tar":   "application/x-tar",
	"mp3":   "audio/mp3",
	"aac":   "audio/aac",
	"mp4":   "video/mp4",
	"m4a":   "audio/m4a",
	"m4v":   "video/m4v",
	"mov":   "video/quicktime",
	"flv":   "video/x-flv",
	"iso":   "application/x-iso9660-image",
	"dmg":   "application/x-apple-diskimage",
	"html":  "text/html",
	"xml":   "application/xml",
}

Functions

func DetectExtension

func DetectExtension(b []byte) string

func DetectMIME

func DetectMIME(b []byte) string

func DetectTextExtension

func DetectTextExtension(b []byte) string

func DetectZipExtension

func DetectZipExtension(reader io.ReaderAt, length int64) (string, error)

func DetectZipMIME

func DetectZipMIME(reader io.ReaderAt, length int64) (string, error)

Types

type Definition

type Definition struct {
	Extension  string
	Signatures []*Signature
}

func (*Definition) Parse

func (d *Definition) Parse() error

type DetectionFunc

type DetectionFunc func(io.Reader) string

type Node

type Node struct {
	Signature []byte
	Offset    int
	Extension string
	Children  []*Node
	// contains filtered or unexported fields
}
var (
	NODE           *Node
	NODEForText    *Node
	ErrNoSignature = errors.New("No signatures in definition")
)

func NewNode

func NewNode(caseInsensitive bool) *Node

func (*Node) Insert

func (n *Node) Insert(d *Definition)

func (*Node) Match

func (n *Node) Match(b []byte) string

type Signature

type Signature struct {
	Offset int
	HEX    string
	String string
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL