55 lines
859 B
Go
55 lines
859 B
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
type MimeHeader struct {
|
|
MimeHeader string
|
|
}
|
|
|
|
const (
|
|
JsonMime = "application/json"
|
|
SvgMime = "image/svg+xml"
|
|
)
|
|
|
|
var AcceptedStatusMimes []string = []string{
|
|
SvgMime,
|
|
JsonMime,
|
|
}
|
|
|
|
func ParseMimeHeader(req *http.Request) *MimeHeader {
|
|
proposedMimes := req.Header.Values("Accept")
|
|
mime := MimeHeader{MimeHeader: SvgMime}
|
|
if len(proposedMimes) == 0 {
|
|
return &mime
|
|
}
|
|
|
|
for _, m := range proposedMimes {
|
|
for _, am := range AcceptedStatusMimes {
|
|
if strings.Contains(m, am) {
|
|
mime.MimeHeader = am
|
|
return &mime
|
|
}
|
|
}
|
|
}
|
|
return &mime
|
|
}
|
|
|
|
func (m *MimeHeader) IsJson() bool {
|
|
return m.MimeHeader == JsonMime
|
|
}
|
|
|
|
func (m *MimeHeader) IsSvg() bool {
|
|
return m.MimeHeader == SvgMime
|
|
}
|
|
|
|
func (m *MimeHeader) MimeType() string {
|
|
if m.IsJson() {
|
|
return JsonMime
|
|
}
|
|
|
|
return SvgMime // default
|
|
}
|