[s-xml-rpc-devel] Defining remote functions

Sven Van Caekenberghe sven at beta9.be
Thu Jul 8 19:49:17 UTC 2004


On 17 Jun 2004, at 20:20, Frédéric Brunel wrote:

> Hi,
>
> By googling the Web for an XML-RPC implementation in Common Lisp, I 
> found S-XML-RPC and other one for Corman Lisp.  I'm glad that 
> S-XML-RPC is now part of Common-Lisp.net.
>
> By the way, looking at the Corman Lisp API for XML-RPC, I found 
> interesting that it have the ability to define a standard function 
> embedding an XML-RPC call.  How about implementing this kind of thing 
> in S-XML-RPC?  I wrote the following lines of code:
>
> (defmacro define-xmlrpc-method (name args &key url method)
>   `(defun ,name ,args
>      (xml-rpc-call (encode-xml-rpc-call ,method , at args)
>        :url ,(puri:uri-path url)
>        :host ,(puri:uri-host url)
>        :port ,(cond ((puri:uri-port url)) (t 80)))))
>
> (define-xmlrpc-method get-state-name (state)
>   :url #u"http://betty.userland.com/RPC2"
>   :method "examples.getStateName")
>
> (define-xmlrpc-method get-time ()
>   :url #u"http://time.xmlrpc.com/RPC2"
>   :method "currentTime.getCurrentTime")
>
> ? (get-state-name 41)
> "South Dakota"
>
> ? (get-time)
> #<XML-RPC-TIME 20040617T10:47:31>
>
> I rely on the great PURI package to parse URL.  Quite straightforward. 
>  Of course, we should also wrap and unwrap some type convertions not 
> to see anything about the XML-RPC types.  I guess the function should 
> also accept HASHTABLEs to be converted in XML-RPC structs.
>
> What do you think?
>
> -- 
> Frederic Brunel
>

I added your code in a file called define-xmlrpc-method.lisp that is 
not part of the project itself (because of its dependency on puri),
but more an extension like aserve.lisp

Thanks for the contribution,

Sven





More information about the S-xml-rpc-devel mailing list