Selaa lähdekoodia

xmlrpc parcialmente implementado

robert2206 8 vuotta sitten
vanhempi
commit
079688a1e9
2 muutettua tiedostoa jossa 69 lisäystä ja 5 poistoa
  1. 5 5
      xmlrpc-helper.ts
  2. 64 0
      xmlrpc.ts

+ 5 - 5
xmlrpc-helper.ts

@@ -21,7 +21,7 @@ export class XmlRpcHelper {
     /**
      *
      */
-    cloneArray(object: Array<any>): Array<any> {
+    cloneArray(object: any): Array<any> {
         var length = object.length;
 
         if (length > 0) {
@@ -62,7 +62,7 @@ export class XmlRpcHelper {
     /**
      *
      */
-    createDocument(rootTag: string, uriNamespace: string): any {
+    createDocument(rootTag: string, uriNamespace?: string): any {
         if (!rootTag && uriNamespace) {
             throw Error("Can't create document with namespace and no root tag");
         }
@@ -94,10 +94,10 @@ export class XmlRpcHelper {
     /**
      *
      */
-    createNode(doc: any, nodeName: any, ...children: any[]): void {
+    createNode(doc: any, nodeName: any, ...children: any[]): any {
         let result = doc.createElement(nodeName);
-
-
+        
+        return result;
     }
 
     /**

+ 64 - 0
xmlrpc.ts

@@ -1,5 +1,69 @@
 
+import { XmlRpcHelper } from "./xmlrpc-helper";
+import { JsToXml } from "./js-to-xml";    
+import { Xml2Js } from "./xml-to-js";
 
 export class XmlRpc {
 
+    configuration: {
+        host: string,
+        
+    }
+
+    constructor(
+        private helper: XmlRpcHelper,
+        private jsToXml: JsToXml,
+        private xmlToJs: Xml2Js
+    ) {
+    }
+
+    /**
+     *
+     */
+    serialize(xml: any): any {
+        let text = xml.xml;
+
+        if (text) {
+            return text;
+        }
+
+        if (typeof XMLSerializer != undefined) {
+            return new XMLSerializer().serializeToString(xml);
+        }
+
+        throw new Error('Your browser does not support serializing XML documents');
+    }
+
+    /**
+     *
+     */
+    createCall(method: any, params: any): any {
+        var doc = this.helper.createDocument('methodCall');
+        doc.firstChild.appendChild(this.helper.createNode(doc, 'methodName', method));
+
+        if (arguments.length > 2) {
+            params = this.helper.cloneArray(arguments);
+            params.shift();
+        }
+
+        if (params && params.length > 0) {
+            let paramsNode = this.helper.createNode(doc, params);
+
+            for (let i = 0; i < params.length; i++) {
+                paramsNode.appendChild(this.helper.createNode(doc, 'param', this.jsToXml.jsToXml(doc, params[i])));
+            }
+
+            doc.firstChild.appendChild(paramsNode);
+        }
+
+        return (this.serialize(doc)).replace(/[\s\xa0]+$/, '');
+    }
+
+    /**
+     *
+     */
+    callMethod(method: any, params: any): any {
+        let xmlStr = this.createCall(method, params);
+        let targetUrl = 
+    }
 }