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