Function: soap-parse-operation
soap-parse-operation is a byte-compiled function defined in
soap-client.el.gz.
Signature
(soap-parse-operation NODE)
Documentation
Parse NODE as a wsdl:operation and return the corresponding type.
Source Code
;; Defined in /usr/src/emacs/lisp/net/soap-client.el.gz
(defun soap-parse-operation (node)
"Parse NODE as a wsdl:operation and return the corresponding type."
(cl-assert (eq (soap-l2wk (xml-node-name node)) 'wsdl:operation)
nil
"expecting wsdl:operation node, got %s"
(soap-l2wk (xml-node-name node)))
(let ((name (xml-get-attribute node 'name))
(parameter-order (split-string
(xml-get-attribute node 'parameterOrder)))
input output faults input-action output-action)
(dolist (n (xml-node-children node))
(when (consp n) ; skip string nodes which are whitespace
(let ((node-name (soap-l2wk (xml-node-name n))))
(cond
((eq node-name 'wsdl:input)
(let ((message (xml-get-attribute n 'message))
(name (xml-get-attribute n 'name))
(action (soap-xml-get-attribute-or-nil1 n 'wsaw:Action)))
(setq input (cons name (soap-l2fq message 'tns)))
(setq input-action action)))
((eq node-name 'wsdl:output)
(let ((message (xml-get-attribute n 'message))
(name (xml-get-attribute n 'name))
(action (soap-xml-get-attribute-or-nil1 n 'wsaw:Action)))
(setq output (cons name (soap-l2fq message 'tns)))
(setq output-action action)))
((eq node-name 'wsdl:fault)
(let ((message (xml-get-attribute n 'message))
(name (xml-get-attribute n 'name)))
(push (cons name (soap-l2fq message 'tns)) faults)))))))
(make-soap-operation
:name name
:namespace-tag soap-target-xmlns
:parameter-order parameter-order
:input input
:output output
:faults (nreverse faults)
:input-action input-action
:output-action output-action)))