[ Index ]
 

Code source de eGroupWare 1.2.106-2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/phpgwapi/js/xmlrpcMsgCreator/ -> xmlrpc.js (source)

   1  /*
   2  
   3  xmlrpc.js beta version 1
   4  Tool for creating XML-RPC formatted requests in JavaScript
   5  
   6  Copyright 2001 Scott Andrew LePera
   7  scott@scottandrew.com
   8  http://www.scottandrew.com/xml-rpc
   9  
  10  License: 
  11  You are granted the right to use and/or redistribute this 
  12  code only if this license and the copyright notice are included 
  13  and you accept that no warranty of any kind is made or implied 
  14  by the author.
  15  
  16  */
  17  
  18  function XMLRPCMessage(methodname){
  19    this.method = methodname||"system.listMethods";
  20    this.params = [];
  21    return this;
  22  }
  23  
  24  XMLRPCMessage.prototype.setMethod = function(methodName){
  25    if (!methodName) return;
  26    this.method = methodName;
  27  }
  28  
  29  XMLRPCMessage.prototype.addParameter = function(data){
  30    if (arguments.length==0) return;
  31    this.params[this.params.length] = data;
  32  }
  33  
  34  XMLRPCMessage.prototype.xml = function(){
  35  
  36    var method = this.method;
  37    
  38    // assemble the XML message header
  39    var xml = "";
  40    
  41    xml += "<?xml version=\"1.0\"?>\n";
  42    xml += "<methodCall>\n";
  43    xml += "<methodName>" + method+ "</methodName>\n";
  44    xml += "<params>\n";
  45    
  46    // do individual parameters
  47    for (var i = 0; i < this.params.length; i++){
  48      var data = this.params[i];
  49      xml += "<param>\n";
  50  
  51      xml += "<value>" + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data),data) + "</value>\n";
  52      
  53      xml += "</param>\n";
  54    }
  55    
  56    xml += "</params>\n";
  57    xml += "</methodCall>";
  58    
  59    return xml; // for now
  60  }
  61  
  62  XMLRPCMessage.dataTypeOf = function (o){
  63    // identifies the data type
  64    
  65    if (o == null)
  66    {
  67        return 'null';
  68    }
  69    
  70    var type = typeof(o);
  71    type = type.toLowerCase();
  72    switch(type){
  73      case "number":
  74        if (Math.round(o) == o) type = "i4";
  75        else type = "double";
  76        break;
  77      case "object":
  78        var con = o.constructor;
  79        if (con == Date) type = "date";
  80        else if (con == Array) type = "array";
  81        else type = "struct";
  82        break;
  83    }
  84    return type;
  85  }
  86  
  87  XMLRPCMessage.doValueXML = function(type,data){
  88    switch (type)
  89    {
  90        case 'null':
  91            type = 'boolean';
  92          data = 0;
  93          break;
  94          
  95      case 'string':
  96          data = data.split('&').join('&amp;');
  97          data = data.split('<').join('&lt;');
  98          data = data.split('>').join('&gt;');
  99          break;
 100    }
 101  
 102    var xml = "<" + type + ">" + data + "</" + type + ">";
 103    return xml;
 104  }
 105  
 106  XMLRPCMessage.doBooleanXML = function(data){
 107    var value = (data==true)?1:0;
 108    var xml = "<boolean>" + value + "</boolean>";
 109    return xml;
 110  }
 111  
 112  XMLRPCMessage.doDateXML = function(data){
 113    var xml = "<dateTime.iso8601>";
 114    xml += dateToISO8601(data);
 115    xml += "</dateTime.iso8601>";
 116    return xml;
 117  }
 118  
 119  XMLRPCMessage.doArrayXML = function(data){
 120    var xml = "<array><data>\n";
 121    for (var i = 0; i < data.length; i++){
 122      xml += "<value>" + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data[i]),data[i]) + "</value>\n";
 123    }
 124    xml += "</data></array>\n";
 125    return xml;
 126  }
 127  
 128  XMLRPCMessage.doStructXML = function(data){
 129    var xml = "<struct>\n";
 130    for (var i in data){
 131      xml += "<member>\n";
 132      xml += "<name>" + i + "</name>\n";
 133      xml += "<value>" + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data[i]),data[i]) + "</value>\n";
 134      xml += "</member>\n";
 135    }
 136    xml += "</struct>\n";
 137    return xml;
 138  }
 139  
 140  XMLRPCMessage.getParamXML = function(type,data){
 141    var xml;
 142    switch (type){
 143      case "date":
 144        xml = XMLRPCMessage.doDateXML(data);
 145        break;
 146      case "array":
 147        xml = XMLRPCMessage.doArrayXML(data);
 148        break;
 149      case "struct":
 150        xml = XMLRPCMessage.doStructXML(data);
 151        break;
 152        case "boolean":
 153        xml = XMLRPCMessage.doBooleanXML(data);
 154        break;
 155      default:
 156        xml = XMLRPCMessage.doValueXML(type,data);
 157        break;
 158    }
 159    return xml;
 160  }
 161  
 162  function dateToISO8601(date){
 163    // wow I hate working with the Date object
 164    var year = new String(date.getYear());
 165    var month = leadingZero(new String(date.getMonth()));
 166    var day = leadingZero(new String(date.getDate()));
 167    var time = leadingZero(new String(date.getHours())) + ":" + leadingZero(new String(date.getMinutes())) + ":" + leadingZero(new String(date.getSeconds()));
 168  
 169    var converted = year+month+day+"T"+time;
 170    return converted;
 171  } 
 172    
 173  function leadingZero(n){
 174    // pads a single number with a leading zero. Heh.
 175    if (n.length==1) n = "0" + n;
 176    return n;
 177  }


Généré le : Sun Feb 25 17:20:01 2007 par Balluche grâce à PHPXref 0.7