forked from mx-moth/jquery-xmlrpc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.xmlrpc.min.js
1 lines (1 loc) · 4.36 KB
/
jquery.xmlrpc.min.js
1
!function(e){"use strict";var n=function(){Error.apply(this,arguments)};n.prototype=new Error,n.prototype.type="XML-RPC fault";var t=e.xmlrpc=function(n,r){2===arguments.length?r.url=n:(r=n,n=r.url),r.dataType="xml json",r.type="POST",r.contentType="text/xml",r.converters={"xml json":t.parseDocument};var a=t.document(r.methodName,r.params||[]),o=new XMLSerializer;return r.data=o.serializeToString(a),e.ajax(r)};t.document=function(n,r){var a=document.implementation.createDocument(null,null,null),o=function(n){return e(a.createElement(n))},u=o("methodName").text(n),i=o("params").append(e.map(r,function(e){var n=o("value").append(t.toXmlRpc(e,o));return o("param").append(n)})),c=o("methodCall").append(u,i);return a.appendChild(c.get(0)),a};var r=function(e){return e===parseInt(e,10)&&!isNaN(e)};t.toXmlRpc=function(n,t){if(n instanceof a)return n.toXmlRpc(t);var o=e.xmlrpc.types,u=e.type(n);switch(u){case"undefined":case"null":return o.nil.encode(n,t);case"date":return o["datetime.iso8601"].encode(n,t);case"object":return n instanceof ArrayBuffer?o.base64.encode(n,t):o.struct.encode(n,t);case"number":return r(n)?o["int"].encode(n,t):o["double"].encode(n,t);case"array":case"boolean":case"string":return o[u].encode(n,t);default:throw new Error("Unknown type",n)}},t.parseDocument=function(r){var a=e(r),o=a.children("methodresponse"),u=o.find("> fault");if(0===u.length){var i=o.find("> params > param > value > *"),c=i.toArray().map(t.parseNode);return c}var p=t.parseNode(u.find("> value > *").get(0)),f=new n(p.faultString);throw f.msg=f.message=p.faultString,f.type=f.code=p.faultCode,f},t.parseNode=function(e){if(void 0===e)return null;var n=e.nodeName.toLowerCase();if(n in t.types)return t.types[n].decode(e);throw new Error("Unknown type "+n)},t.parseValue=function(n){var r=e(n).children()[0];return r?t.parseNode(r):e(n).text()};var a=function(){};e.xmlrpc.types={},t.makeType=function(n,r,o,u){var i;if(i=function(e){this.value=e},i.prototype=new a,i.prototype.tagName=n,r){var c=o,p=u;o=function(e,n){var t=c(e);return n(i.tagName).text(t)},u=function(n){return p(e(n).text(),n)}}i.prototype.toXmlRpc=function(e){return i.encode(this.value,e)},i.tagName=n,i.encode=o,i.decode=u,t.types[n.toLowerCase()]=i};var o=function(e){return""+Math.floor(e)},u=function(e){return parseInt(e,10)};t.makeType("int",!0,o,u),t.makeType("i4",!0,o,u),t.makeType("i8",!0,o,u),t.makeType("i16",!0,o,u),t.makeType("i32",!0,o,u),t.makeType("double",!0,String,function(e){return parseFloat(e,10)}),t.makeType("string",!0,String,String),t.makeType("boolean",!0,function(e){return e?"1":"0"},function(e){return"1"===e});var i=function(e){return 10>e?"0"+e:e};t.makeType("dateTime.iso8601",!0,function(e){return[e.getUTCFullYear(),"-",i(e.getUTCMonth()+1),"-",i(e.getUTCDate()),"T",i(e.getUTCHours()),":",i(e.getUTCMinutes()),":",i(e.getUTCSeconds()),"Z"].join("")},function(e){return new Date(e)}),t.binary=function(){var e="=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),t=n.reduce(function(e,n,t){return e[n]=t,e},{});return{toBase64:function(t){for(var r,a=[],o=new Uint8Array(t),u=0;u<o.length;u+=3)r=(o[u+0]<<16)+(o[u+1]<<8)+(o[u+2]<<0),a.push(n[(r>>18)%64]),a.push(n[(r>>12)%64]),a.push(n[(r>>6)%64]),a.push(n[(r>>0)%64]);for(var i=3-(t.byteLength%3||3);i--;)a[a.length-i-1]=e;return a.join("")},fromBase64:function(n){var r=n.length,a=3*(r/4);n.charAt(r-1)===e&&a--,n.charAt(r-2)===e&&a--;for(var o,u=new ArrayBuffer(a),i=new Uint8Array(u),c=0,p=0;r>c;c+=4,p+=3)o=(t[n[c+0]]<<18)+(t[n[c+1]]<<12)+(t[n[c+2]]<<6)+(t[n[c+3]]<<0),i[p+0]=(o>>16)%256,i[p+1]=(o>>8)%256,i[p+2]=(o>>0)%256;return u}}}(),t.makeType("base64",!0,function(e){return t.binary.toBase64(e)},function(e){return t.binary.fromBase64(e)}),t.makeType("nil",!1,function(e,n){return n("nil")},function(){return null}),t.makeType("struct",!1,function(n,r){var a=r("struct");return e.each(n,function(e,n){var o=r("name").text(e),u=r("value").append(t.toXmlRpc(n,r));a.append(r("member").append(o,u))}),a},function(n){return e(n).find("> member").toArray().reduce(function(n,r){var a=e(r),o=a.find("> name").text(),u=t.parseValue(a.find("> value"));return n[o]=u,n},{})}),t.makeType("array",!1,function(n,r){var a=r("array"),o=r("data");return e.each(n,function(e,n){o.append(r("value").append(t.toXmlRpc(n,r)))}),a.append(o),a},function(n){return e(n).find("> data > value").toArray().map(t.parseValue)}),t.force=function(e,n){return new t.types[e](n)}}(jQuery);