28 lines
771 B
Factor
28 lines
771 B
Factor
IN: rpc-example
|
|
REQUIRES: contrib/http-client contrib/calendar ;
|
|
USING: kernel hashtables xml-rpc xml calendar sequences
|
|
arrays math httpd io http-client namespaces ;
|
|
|
|
: functions
|
|
H{ { "add" [ + ] }
|
|
{ "subtract" [ - ] }
|
|
{ "multiply" [ * ] }
|
|
{ "divide" [ / ] } } ;
|
|
|
|
: apply-function ( name args -- {number} )
|
|
[ functions hash ] dip first2 rot call 1array ;
|
|
|
|
: problem>solution ( xml-doc -- xml-doc )
|
|
receive-rpc dup rpc-method-name swap rpc-method-params
|
|
apply-function <rpc-response> send-rpc ;
|
|
|
|
: respond-rpc-arith ( -- )
|
|
"raw-response" get
|
|
string>xml problem>solution xml>string
|
|
put-http-response ;
|
|
|
|
: test-rpc-arith
|
|
"add" { 1 2 } <rpc-method> send-rpc
|
|
"http://localhost:8080/responder/rpc/"
|
|
http-post ;
|