diff options
| author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2013-08-11 22:52:50 +0200 |
|---|---|---|
| committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2013-08-11 22:52:50 +0200 |
| commit | 6edea0a595d292c4d3f1a7e862195be07c874e40 (patch) | |
| tree | a549ff4fd0125216dd39280a2e742eb086aed221 /lisp | |
| parent | 99a32242b364793076b4b03310c435d4828ef6e4 (diff) | |
| download | emacs-6edea0a595d292c4d3f1a7e862195be07c874e40.tar.gz | |
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.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/url/ChangeLog | 8 | ||||
| -rw-r--r-- | lisp/url/url-http.el | 14 | ||||
| -rw-r--r-- | lisp/url/url-vars.el | 4 |
3 files changed, 23 insertions, 3 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 120d00002e4..9bdaff6f51a 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -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) diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 7f21a38c535..beffbe1f79b 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -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." diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index 6cd0e9aec3c..a59667b57b0 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el @@ -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) |
