Add Content-Transfer gzip support to url

* url-http.el (url-handle-content-transfer-encoding): Support
decompressing gzipped content.

* url-vars.el (url-mime-encoding-string): If we have built-in gzip
support, say that we accept gzipped content.
This commit is contained in:
Lars Magne Ingebrigtsen 2013-08-11 22:52:50 +02:00
parent 99a32242b3
commit 6edea0a595
3 changed files with 23 additions and 3 deletions

View file

@ -1,3 +1,11 @@
2013-08-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
* url-vars.el (url-mime-encoding-string): If we have built-in gzip
support, say that we accept gzipped content.
* url-http.el (url-handle-content-transfer-encoding): Support
decompressing gzipped content.
2013-07-31 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-file-name-completion)

View file

@ -851,11 +851,23 @@ should be shown to the user."
(error "Unknown class of HTTP response code: %d (%d)"
class url-http-response-status)))
(if (not success)
(url-mark-buffer-as-dead buffer))
(url-mark-buffer-as-dead buffer)
(url-handle-content-transfer-encoding))
(url-http-debug "Finished parsing HTTP headers: %S" success)
(widen)
success))
(defun url-handle-content-transfer-encoding ()
(let ((encoding (mail-fetch-field "content-encoding")))
(when (and encoding
(fboundp 'decompress-gzipped-region)
(equal (downcase encoding) "gzip"))
(save-restriction
(widen)
(goto-char (point-min))
(when (search-forward "\n\n")
(decompress-gzipped-region (point) (point-max)))))))
;; Miscellaneous
(defun url-http-activate-callback ()
"Activate callback specified when this buffer was created."

View file

@ -210,8 +210,8 @@ Should be an assoc list of headers/contents.")
(defvar url-request-method nil "The method to use for the next request.")
;; FIXME!! (RFC 2616 gives examples like `compress, gzip'.)
(defvar url-mime-encoding-string nil
(defvar url-mime-encoding-string (and (fboundp 'decompress-gzipped-region)
"gzip")
"String to send in the Accept-encoding: field in HTTP requests.")
(defvar mm-mime-mule-charset-alist)