Hi all. I started using drakma the other day to do some client work with
reviewboard, and I had a little trouble. Reviewboard requires http puts
using form-data for updates (
http://www.reviewboard.org/docs/manual/1.6/webapi/2.0/overview/). Drakma
explicitly disallows this.
I modified request.lisp to let my client do what I needed. Since this is my
first time writing a webservice client, I'm not sure if reviewboard or
drakma is wrong, or if I misunderstood something. Below is the diff of what
I did.
Any thoughts?
Thanks,
-Ben
Index: request.lisp
===================================================================
--- request.lisp (revision 4683)
+++ request.lisp (working copy)
@@ -410,7 +410,7 @@
(parameter-error "Don't know how to handle scheme ~S." (uri-scheme
uri)))
(when (and close keep-alive)
(parameter-error "CLOSE and KEEP-ALIVE must not be both true."))
- (when (and form-data (not (eq method :post)))
+ (when (and form-data (and (not (eq method :put)) (not (eq method
:post))))
(parameter-error "FORM-DATA makes only sense with POST requests."))
(when range
(unless (and (listp range)
@@ -432,7 +432,7 @@
(when (and file-parameters-p (not (eq method :post)))
(parameter-error "Don't know how to handle parameters in ~S, as this
is not a POST request."
parameters))
- (when (eq method :post)
+ (when (or (eq method :put) (eq method :post))
;; create content body for POST unless it was provided
(unless content
;; mark PARAMETERS argument as used up, so we don't use it