1
0
mirror of https://github.com/golang/go synced 2024-11-20 08:14:41 -07:00

mime: add AddExtensionType

For example:
mime.AddExtensionType(".m3u8", "application/x-mpegURL")
mime.AddExtensionType(".ts", "video/MP2T")

R=rsc, rsc1
CC=golang-dev
https://golang.org/cl/1698046
This commit is contained in:
Yuusei Kuwana 2010-07-29 14:12:04 -07:00 committed by Russ Cox
parent 2ef1c6e2fc
commit c21e2f3925

View File

@ -10,6 +10,7 @@ import (
"once"
"os"
"strings"
"sync"
)
var typeFiles = []string{
@ -30,6 +31,8 @@ var mimeTypes = map[string]string{
".xml": "text/xml; charset=utf-8",
}
var mimeLock sync.RWMutex
func loadMimeFile(filename string) {
f, err := os.Open(filename, os.O_RDONLY, 0666)
if err != nil {
@ -79,5 +82,22 @@ func initMime() {
// /etc/apache/mime.types
func TypeByExtension(ext string) string {
once.Do(initMime)
return mimeTypes[ext]
mimeLock.RLock()
typename := mimeTypes[ext]
mimeLock.RUnlock()
return typename
}
// AddExtensionType sets the MIME type associated with
// the extension ext to typ. The extension should begin with
// a leading dot, as in ".html".
func AddExtensionType(ext, typ string) os.Error {
once.Do(initMime)
if len(ext) < 1 || ext[0] != '.' {
return os.EINVAL
}
mimeLock.Lock()
mimeTypes[ext] = typ
mimeLock.Unlock()
return nil
}