Browse Source

Ignore invalid content type

Frédéric Guillot 6 years ago
parent
commit
ca48f7612a
2 changed files with 4 additions and 9 deletions
  1. 2 8
      http/client/response.go
  2. 2 1
      http/client/response_test.go

+ 2 - 8
http/client/response.go

@@ -8,7 +8,6 @@ import (
 	"bytes"
 	"io"
 	"io/ioutil"
-	"mime"
 	"regexp"
 	"strings"
 	"unicode/utf8"
@@ -74,17 +73,12 @@ func (r *Response) IsModified(etag, lastModified string) bool {
 // - Feeds with wrong encoding defined and already in UTF-8
 func (r *Response) EnsureUnicodeBody() (err error) {
 	if r.ContentType != "" {
-		mediaType, _, mediaErr := mime.ParseMediaType(r.ContentType)
-		if mediaErr != nil {
-			return mediaErr
-		}
-
 		// JSON feeds are always in UTF-8.
-		if strings.Contains(mediaType, "json") {
+		if strings.Contains(r.ContentType, "json") {
 			return
 		}
 
-		if strings.Contains(mediaType, "xml") {
+		if strings.Contains(r.ContentType, "xml") {
 			buffer, _ := ioutil.ReadAll(r.Body)
 			r.Body = bytes.NewReader(buffer)
 

+ 2 - 1
http/client/response_test.go

@@ -121,6 +121,7 @@ func TestEnsureUnicodeWithHTMLDocuments(t *testing.T) {
 		{"urdu.xml", "text/xml; charset=utf-8", true},
 		{"content-type-only-win-8859-1.xml", "application/xml; charset=ISO-8859-1", true},
 		{"rdf_utf8.xml", "application/rss+xml; charset=utf-8", true},
+		{"rdf_utf8.xml", "application/rss+xml; charset: utf-8", true}, // Invalid Content-Type
 		{"charset-content-type-xml-iso88591.xml", "application/rss+xml; charset=ISO-8859-1", false},
 		{"windows_1251.xml", "text/xml", false},
 		{"smallfile.xml", "text/xml; charset=utf-8", true},
@@ -136,7 +137,7 @@ func TestEnsureUnicodeWithHTMLDocuments(t *testing.T) {
 		r := &Response{Body: bytes.NewReader(content), ContentType: tc.contentType}
 		parseErr := r.EnsureUnicodeBody()
 		if parseErr != nil {
-			t.Fatalf(`Unicode conversion error for %q - %q: %v`, tc.filename, tc.contentType, err)
+			t.Fatalf(`Unicode conversion error for %q - %q: %v`, tc.filename, tc.contentType, parseErr)
 		}
 
 		isUnicode := utf8.ValidString(r.String())