mirror of
https://github.com/makeworld-the-better-one/amfora.git
synced 2024-11-22 15:46:51 +03:00
🐛 Handle empty META - fixes #176
This commit is contained in:
parent
abacacf5f5
commit
86bde5ec11
@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Fix downloading of pages that are too large or timed out
|
- Fix downloading of pages that are too large or timed out
|
||||||
- `about:` URLs can be typed into the bottom bar (#167)
|
- `about:` URLs can be typed into the bottom bar (#167)
|
||||||
- Bookmarks modal closes on ESC like the others (#173)
|
- Bookmarks modal closes on ESC like the others (#173)
|
||||||
|
- Handle empty META string (#176)
|
||||||
|
|
||||||
|
|
||||||
## [1.7.2] - 2020-12-21
|
## [1.7.2] - 2020-12-21
|
||||||
|
@ -136,7 +136,8 @@ func handleFavicon(t *tab, host, old string) {
|
|||||||
cache.AddFavicon(host, cache.KnownNoFavicon)
|
cache.AddFavicon(host, cache.KnownNoFavicon)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !strings.HasPrefix(res.Meta, "text/") {
|
if !strings.HasPrefix(res.Meta, "text/") && res.Meta != "" {
|
||||||
|
// Not a textual page
|
||||||
cache.AddFavicon(host, cache.KnownNoFavicon)
|
cache.AddFavicon(host, cache.KnownNoFavicon)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -24,14 +24,25 @@ var ErrBadMediatype = errors.New("displayable mediatype is not handled in the co
|
|||||||
// isUTF8 returns true for charsets that are compatible with UTF-8 and don't need to be decoded.
|
// isUTF8 returns true for charsets that are compatible with UTF-8 and don't need to be decoded.
|
||||||
func isUTF8(charset string) bool {
|
func isUTF8(charset string) bool {
|
||||||
utfCharsets := []string{"", "utf-8", "us-ascii"}
|
utfCharsets := []string{"", "utf-8", "us-ascii"}
|
||||||
for i := range utfCharsets {
|
for _, s := range utfCharsets {
|
||||||
if strings.ToLower(charset) == utfCharsets[i] {
|
if charset == s || strings.ToLower(charset) == s {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getMetaInfo returns the output of mime.ParseMediaType, but handles the empty
|
||||||
|
// META which is equal to "text/gemini; charset=utf-8" according to the spec.
|
||||||
|
func decodeMeta(meta string) (string, map[string]string, error) {
|
||||||
|
if meta == "" {
|
||||||
|
params := make(map[string]string)
|
||||||
|
params["charset"] = "utf-8"
|
||||||
|
return "text/gemini", params, nil
|
||||||
|
}
|
||||||
|
return mime.ParseMediaType(meta)
|
||||||
|
}
|
||||||
|
|
||||||
// CanDisplay returns true if the response is supported by Amfora
|
// CanDisplay returns true if the response is supported by Amfora
|
||||||
// for displaying on the screen.
|
// for displaying on the screen.
|
||||||
// It also doubles as a function to detect whether something can be stored in a Page struct.
|
// It also doubles as a function to detect whether something can be stored in a Page struct.
|
||||||
@ -40,7 +51,7 @@ func CanDisplay(res *gemini.Response) bool {
|
|||||||
// No content
|
// No content
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
mediatype, params, err := mime.ParseMediaType(res.Meta)
|
mediatype, params, err := decodeMeta(res.Meta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -82,7 +93,7 @@ func MakePage(url string, res *gemini.Response, width, leftMargin int, proxied b
|
|||||||
}
|
}
|
||||||
// Otherwise, the error is EOF, which is what we want.
|
// Otherwise, the error is EOF, which is what we want.
|
||||||
|
|
||||||
mediatype, params, _ := mime.ParseMediaType(res.Meta)
|
mediatype, params, _ := decodeMeta(res.Meta)
|
||||||
|
|
||||||
// Convert content first
|
// Convert content first
|
||||||
var utfText string
|
var utfText string
|
||||||
|
Loading…
Reference in New Issue
Block a user