<br>
<div>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 (<a href="http://www.reviewboard.org/docs/manual/1.6/webapi/2.0/overview/">http://www.reviewboard.org/docs/manual/1.6/webapi/2.0/overview/</a>). Drakma explicitly disallows this.</div>
<div><br></div><div>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.</div>
<div><br></div><div>Any thoughts?</div><div><br></div><div>Thanks,</div><div>-Ben</div><div><br></div><div><div>Index: request.lisp</div><div>===================================================================</div><div>--- request.lisp<span class="Apple-tab-span" style="white-space:pre">       </span>(revision 4683)</div>
<div>+++ request.lisp<span class="Apple-tab-span" style="white-space:pre">      </span>(working copy)</div><div>@@ -410,7 +410,7 @@</div><div>     (parameter-error "Don't know how to handle scheme ~S." (uri-scheme uri)))</div>
<div>   (when (and close keep-alive)</div><div>     (parameter-error "CLOSE and KEEP-ALIVE must not be both true."))</div><div>-  (when (and form-data (not (eq method :post)))</div><div>+  (when (and form-data (and (not (eq method :put)) (not (eq method :post))))</div>
<div>     (parameter-error "FORM-DATA makes only sense with POST requests."))</div><div>   (when range</div><div>     (unless (and (listp range)</div><div>@@ -432,7 +432,7 @@</div><div>     (when (and file-parameters-p (not (eq method :post)))</div>
<div>       (parameter-error "Don't know how to handle parameters in ~S, as this is not a POST request."</div><div>                        parameters))</div><div>-    (when (eq method :post)</div><div>+    (when (or (eq method :put) (eq method :post))</div>
<div>       ;; create content body for POST unless it was provided</div><div>       (unless content</div><div>         ;; mark PARAMETERS argument as used up, so we don't use it</div></div><div><br></div>