Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.Frontier.protocols.soap
on soap (rpcServer, procedureName, paramRecord) {
<<Changes
<<2/6/02; 4:48:41 PM by JES
<<Created.
local (urlList = string.urlSplit (rpcServer));
local (server = urlList [2], port = 80, path = urlList [3]);
local (username = "", password = "");
local (methodNamespace = nil, methodNamespaceUri = nil);
if server contains "@" { //parse out username and password
local (userAndPass = string.nthField (server, "@", 1));
server = string.nthField (server, "@", 2);
if userAndPass contains ":" {
username = string.nthField (userAndPass, ":", 1);
password = string.nthField (userAndPass, ":", 2)}
else {
username = userAndPass}};
if server contains ":" { //get the port
port = string.nthField (server, ':', string.countFields (server, ':'));
server = string.popSuffix (server, ':')};
if path contains "?" { //get the method namespace URI from the path-args
local (t); new (tableType, @t);
local (args = string.nthField (path, "?", 2));
path = string.nthField (path, "?", 1);
webserver.parseArgs (args, @t);
if defined (t.ns) {
methodNamespace = "m";
methodNamespaceUri = t.ns}};
local (soapAction = string.popSuffix (procedureName, "."));
procedureName = string.delete (procedureName, 1, sizeOf (soapAction) + 1);
if sizeOf (procedureName) == 0 { //SOAPAction is the empty string, and method is after the first dot
procedureName = soapAction;
soapAction = ""};
if not (soapAction contains ":") { //no protocol specified -- convert dots to slashes
soapAction = string.replaceAll (soapAction, ".", "/")};
return (soap.rpc.client (path, procedureName, @paramRecord, server, port, username, password, soapAction:soapAction, methodNamespace:methodNamespace, methodNamespaceUri:methodNamespaceUri))} //, fldebug:true))
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.