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 }