From 47710d9be8522d3cdfebdb78bd695ea7ea7b6cb1 Mon Sep 17 00:00:00 2001 From: Tim Niemueller Date: Mon, 18 Oct 2010 17:51:53 -0400 Subject: [PATCH] Add simple example scripts --- examples/client.lua | 7 ++++++ examples/server_xavante.lua | 49 +++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 examples/client.lua create mode 100644 examples/server_xavante.lua diff --git a/examples/client.lua b/examples/client.lua new file mode 100644 index 0000000..75c0151 --- /dev/null +++ b/examples/client.lua @@ -0,0 +1,7 @@ +require("xmlrpc.http") + +local ok, res = xmlrpc.http.call("http://localhost:12345", "hello_world") +assert(ok, string.format("XML-RPC call failed on client: %s", tostring(res))) + +print("Result: " .. tostring(res)) + diff --git a/examples/server_xavante.lua b/examples/server_xavante.lua new file mode 100644 index 0000000..1a7a522 --- /dev/null +++ b/examples/server_xavante.lua @@ -0,0 +1,49 @@ +require("xavante") +require("xavante.httpd") +require("wsapi.xavante") +require("wsapi.request") +require("xmlrpc") + +--- XML-RPC WSAPI handler +-- @param wsapi_env WSAPI environment +function wsapi_handler(wsapi_env) + local headers = { ["Content-type"] = "text/xml" } + local req = wsapi.request.new(wsapi_env) + local method, arg_table = xmlrpc.srvDecode(req.POST.post_data) + local func = xmlrpc.dispatch(method) + local result = { pcall(func, unpack(arg_table or {})) } + local ok = result[1] + if not ok then + result = { code = 3, message = result[2] } + else + table.remove(result, 1) + if table.getn(result) == 1 then + result = result[1] + end + end + + local r = xmlrpc.srvEncode(result, not ok) + headers["Content-length"] = tostring(#r) + + local function xmlrpc_reply(wsapienv) + coroutine.yield(r) + end + + return 200, headers, coroutine.wrap(xmlrpc_reply) +end + +-- XML-RPC exported functions +xmlrpc_exports = {} + +--- Get simple string. +-- @return simple string +function xmlrpc_exports.hello_world() + return "Hello World" +end + +local rules = {{ match = ".", with = wsapi.xavante.makeHandler(wsapi_handler) }} +local config = { server = {host = "*", port = 12345}, defaultHost = { rules = rules} } + +xmlrpc.srvMethods(xmlrpc_exports) +xavante.HTTP(config) +xavante.start()