From 67571c49c119993ce553bec68c87e59332b5e03c Mon Sep 17 00:00:00 2001 From: Feuerfuchs Date: Sat, 16 Nov 2019 09:59:03 +0100 Subject: Gemini: Add support for charset MIME parameter --- libgemini.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'libgemini.go') diff --git a/libgemini.go b/libgemini.go index 56e1463..20fc137 100644 --- a/libgemini.go +++ b/libgemini.go @@ -5,6 +5,7 @@ import ( "crypto/tls" "errors" "io" + "mime" "net/url" "regexp" "strconv" @@ -134,13 +135,14 @@ func ParseGeminiHeader(line string) (header *GeminiHeader, err error) { meta := matches[2] if int(status/10) == 2 { - if meta == "" { - meta = DEFAULT_MIME + ";charset=" + DEFAULT_CHARSET - } + mediaType, params, err := mime.ParseMediaType(meta) - mimeType := MimeTypePattern.FindString(meta) - if strings.HasPrefix(mimeType, "text/") && MimeCharsetPattern.FindString(meta) == "" { - meta += ";charset=" + DEFAULT_CHARSET + if err != nil { + meta = DEFAULT_MIME + ";charset=" + DEFAULT_CHARSET + } else if strings.HasPrefix(mediaType, "text/") { + if _, ok := params["charset"]; !ok { + meta += ";charset=" + DEFAULT_CHARSET + } } } -- cgit v1.3.1