[bknr-cvs] edi changed trunk/thirdparty/drakma/
BKNR Commits
bknr at bknr.net
Wed Aug 31 13:44:01 UTC 2011
Revision: 4681
Author: edi
URL: http://bknr.net/trac/changeset/4681
URL-encoding problem
U trunk/thirdparty/drakma/CHANGELOG.txt
U trunk/thirdparty/drakma/request.lisp
U trunk/thirdparty/drakma/util.lisp
Modified: trunk/thirdparty/drakma/CHANGELOG.txt
===================================================================
--- trunk/thirdparty/drakma/CHANGELOG.txt 2011-08-31 12:23:17 UTC (rev 4680)
+++ trunk/thirdparty/drakma/CHANGELOG.txt 2011-08-31 13:44:01 UTC (rev 4681)
@@ -1,6 +1,8 @@
+Make sure GET parameters are always URL-encoded
+Add :RANGE keyword argument (Hans Hübner)
Better handling of optional filenames when uploading (Stas Boukarev)
Don't funcall symbols that aren't FBOUNDP (Faré Rideau)
-Allowed disabling of SSL when building (Marko Kocic)
+Allow disabling of SSL when building (Marko Kocic)
Version 1.2.3
2010-08-05
Modified: trunk/thirdparty/drakma/request.lisp
===================================================================
--- trunk/thirdparty/drakma/request.lisp 2011-08-31 12:23:17 UTC (rev 4680)
+++ trunk/thirdparty/drakma/request.lisp 2011-08-31 13:44:01 UTC (rev 4681)
@@ -533,13 +533,11 @@
(comm:attach-ssl raw-http-stream :ssl-side :client)
#-:lispworks
(setq http-stream (wrap-stream (make-ssl-stream raw-http-stream))))
- (when (and (not parameters-used-p)
- parameters)
+ (when-let (all-get-parameters
+ (append (dissect-query (uri-query uri))
+ (and (not parameters-used-p) parameters)))
(setf (uri-query uri)
- ;; append parameters to existing query of URI
- (format nil "~@[~A~]~:*~:[~;&~]~A"
- (uri-query uri)
- (alist-to-url-encoded-string parameters external-format-out))))
+ (alist-to-url-encoded-string all-get-parameters external-format-out)))
(when (eq method :options*)
;; special pseudo-method
(setf method :options
Modified: trunk/thirdparty/drakma/util.lisp
===================================================================
--- trunk/thirdparty/drakma/util.lisp 2011-08-31 12:23:17 UTC (rev 4680)
+++ trunk/thirdparty/drakma/util.lisp 2011-08-31 13:44:01 UTC (rev 4681)
@@ -339,3 +339,11 @@
:close-callback (lambda () (close s))))
#+:drakma-no-ssl
(error "SSL not supported. Remove :drakma-no-ssl from *features* to enable SSL"))
+
+(defun dissect-query (query-string)
+ "Accepts a query string as in PURI:URI-QUERY and returns a
+corresponding alist of name/value pairs."
+ (when query-string
+ (loop for parameter-pair in (split-string query-string "&")
+ for (name value) = (split-string parameter-pair "=")
+ collect (cons name value))))
\ No newline at end of file
More information about the Bknr-cvs
mailing list