Rest.js 1.86 KB
//>>built
define("dojox/rpc/Rest",["dojo","dojox"],function(k,g){function l(b,c,a,m){b.addCallback(function(c){b.ioArgs.xhr&&a&&(a=b.ioArgs.xhr.getResponseHeader("Content-Range"),b.fullLength=a&&(a=a.match(/\/(.*)/))&&parseInt(a[1]));return c});return b}k.getObject("rpc.Rest",!0,g);g.rpc&&g.rpc.transportRegistry&&g.rpc.transportRegistry.register("REST",function(b){return"REST"==b},{getExecutor:function(b,c,a){return new g.rpc.Rest(c.name,(c.contentType||a._smd.contentType||"").match(/json|javascript/),null,
function(b,d){b=a._getRequest(c,[b]);b.url=b.target+(b.data?"?"+b.data:"");d&&(0<=d.start||0<=d.count)&&(b.headers=b.headers||{},b.headers.Range="items\x3d"+(d.start||"0")+"-"+("count"in d&&Infinity!=d.count?d.count+(d.start||0)-1:""));return b})}});var h;h=g.rpc.Rest=function(b,c,a,m){function d(b){e[b]=function(a,c){return h._change(b,e,a,c)}}var e;e=function(b,a){return h._get(e,b,a)};e.isJson=c;e._schema=a;e.cache={serialize:c?(g.json&&g.json.ref||k).toJson:function(b){return b}};e._getRequest=
m||function(a,f){k.isObject(a)&&(a=(a=k.objectToQuery(a))?"?"+a:"");if(f&&f.sort&&!f.queryStr){a+=(a?"\x26":"?")+"sort(";for(var d=0;d<f.sort.length;d++){var e=f.sort[d];a+=(0<d?",":"")+(e.descending?"-":"+")+encodeURIComponent(e.attribute)}a+=")"}a={url:b+(null==a?"":a),handleAs:c?"json":"text",contentType:c?"application/json":"text/plain",sync:g.rpc._sync,headers:{Accept:c?"application/json,application/javascript":"*/*"}};f&&(0<=f.start||0<=f.count)&&(a.headers.Range="items\x3d"+(f.start||"0")+
"-"+("count"in f&&Infinity!=f.count?f.count+(f.start||0)-1:""));g.rpc._sync=!1;return a};d("put");d("post");d("delete");e.servicePath=b;return e};h._index={};h._timeStamps={};h._change=function(b,c,a,g){a=c._getRequest(a);a[b+"Data"]=g;return l(k.xhr(b.toUpperCase(),a,!0),c)};h._get=function(b,c,a){a=a||{};return l(k.xhrGet(b._getRequest(c,a)),b,0<=a.start||0<=a.count,c)};return h});