package assets

import "mime"

// RegisterMimeTypes adds mime type registrations for the file types the assets server will serve.
// Registering here so we work without /etc/mime.types installed
func RegisterMimeTypes() {
	// Text types
	registerIfNeeded(".css", "text/css; charset=utf-8")
	registerIfNeeded(".html", "text/html; charset=utf-8")
	registerIfNeeded(".txt", "text/plain; charset=utf-8")

	// Image types
	registerIfNeeded(".ico", "image/vnd.microsoft.icon")
	registerIfNeeded(".png", "image/png")
	registerIfNeeded(".svg", "image/svg+xml")

	// JavaScript types
	registerIfNeeded(".js", "application/javascript; charset=utf-8")
	registerIfNeeded(".json", "application/json; charset=utf-8")

	// Font types
	// http://www.iana.org/assignments/media-types/application/vnd.ms-fontobject
	registerIfNeeded(".eot", "application/vnd.ms-fontobject")
	// http://www.w3.org/TR/WOFF/#appendix-b
	registerIfNeeded(".woff", "application/font-woff")
	// http://www.iana.org/assignments/media-types/application/font-sfnt
	registerIfNeeded(".ttf", "application/font-sfnt")
	registerIfNeeded(".otf", "application/font-sfnt")

	// Flash
	registerIfNeeded(".swf", "application/x-shockwave-flash")
}

func registerIfNeeded(extension, mimeType string) {
	if mime.TypeByExtension(extension) == "" {
		mime.AddExtensionType(extension, mimeType)
	}
}