diff options
author | Feuerfuchs <git@feuerfuchs.dev> | 2019-11-16 09:59:03 +0100 |
---|---|---|
committer | Feuerfuchs <git@feuerfuchs.dev> | 2019-11-16 09:59:03 +0100 |
commit | 67571c49c119993ce553bec68c87e59332b5e03c (patch) | |
tree | 458efc711f3cf99a55a4ab3aba4f8cdf1cc3ac5d /libgemini.go | |
parent | Fixed some issues with Gemini (diff) | |
download | gopherproxy-67571c49c119993ce553bec68c87e59332b5e03c.tar.gz gopherproxy-67571c49c119993ce553bec68c87e59332b5e03c.tar.bz2 gopherproxy-67571c49c119993ce553bec68c87e59332b5e03c.zip |
Gemini: Add support for charset MIME parameter
Diffstat (limited to 'libgemini.go')
-rw-r--r-- | libgemini.go | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libgemini.go b/libgemini.go index 56e1463..20fc137 100644 --- a/libgemini.go +++ b/libgemini.go | |||
@@ -5,6 +5,7 @@ import ( | |||
5 | "crypto/tls" | 5 | "crypto/tls" |
6 | "errors" | 6 | "errors" |
7 | "io" | 7 | "io" |
8 | "mime" | ||
8 | "net/url" | 9 | "net/url" |
9 | "regexp" | 10 | "regexp" |
10 | "strconv" | 11 | "strconv" |
@@ -134,13 +135,14 @@ func ParseGeminiHeader(line string) (header *GeminiHeader, err error) { | |||
134 | meta := matches[2] | 135 | meta := matches[2] |
135 | 136 | ||
136 | if int(status/10) == 2 { | 137 | if int(status/10) == 2 { |
137 | if meta == "" { | 138 | mediaType, params, err := mime.ParseMediaType(meta) |
138 | meta = DEFAULT_MIME + ";charset=" + DEFAULT_CHARSET | ||
139 | } | ||
140 | 139 | ||
141 | mimeType := MimeTypePattern.FindString(meta) | 140 | if err != nil { |
142 | if strings.HasPrefix(mimeType, "text/") && MimeCharsetPattern.FindString(meta) == "" { | 141 | meta = DEFAULT_MIME + ";charset=" + DEFAULT_CHARSET |
143 | meta += ";charset=" + DEFAULT_CHARSET | 142 | } else if strings.HasPrefix(mediaType, "text/") { |
143 | if _, ok := params["charset"]; !ok { | ||
144 | meta += ";charset=" + DEFAULT_CHARSET | ||
145 | } | ||
144 | } | 146 | } |
145 | } | 147 | } |
146 | 148 | ||