mirror of
https://github.com/wahyd4/cdnjs.git
synced 2026-08-21 10:47:12 +10:00
8 lines
6.7 KiB
JavaScript
8 lines
6.7 KiB
JavaScript
/**
|
|
* Restfull Resources service for AngularJS apps
|
|
* @version v0.7.5 - 2013-06-01
|
|
* @link https://github.com/mgonto/restangular
|
|
* @author Martin Gontovnikas <martin@gonto.com.ar>
|
|
* @license MIT License, http://www.opensource.org/licenses/MIT
|
|
*/
|
|
!function(){var a=angular.module("restangular",["ngResource"]);a.provider("Restangular",function(){function a(a){return _.contains(e,a)}function b(a){return _.defaults(a,h)}function c(a,b,c){var d=u[c],e=a;return d&&_.each(d,function(a){e=a(b,e)}),r(e,b,c)}var d=this,e=["get","head","options","trace"],f="";this.setBaseUrl=function(a){f=a};var g=[];this.setExtraFields=function(a){g=a};var h={};this.setDefaultHttpFields=function(a){h=a};var i={};this.setDefaultRequestParams=function(a){i=a};var j=[];this.setMethodOverriders=function(a){var b=_.extend([],a);k("delete",b)&&b.push("remove"),j=b};var k=function(a,b){var c=b||j;return!_.isUndefined(_.find(c,function(b){return b.toLowerCase()===a.toLowerCase()}))},l="path";this.setUrlCreator=function(a){if(!_.has(v,a))throw new Error("URL Path selected isn't valid");l=a};var m={id:"id",route:"route",parentResource:"parentResource",restangularCollection:"restangularCollection",what:"restangularWhat"};this.setRestangularFields=function(a){m=_.extend(m,a)};var n=function(a,b){var c=m.id.split("."),d=a;_.each(_.initial(c),function(a){d[a]={},d=d[a]}),d[_.last(c)]=b},o=function(a){var b=m.id.split("."),c=angular.copy(a);return _.each(b,function(a){c=c[a]}),c},p=function(a){return a};this.setResponseExtractor=function(a){p=a},this.setResponseInterceptor=this.setResponseExtractor;var q=function(a){return a};this.setRequestInterceptor=function(a){q=a};var r=function(a){return a};this.setOnElemRestangularized=function(a){r=a};var s=!0;this.setListTypeIsArray=function(a){s=a};var t=null;this.setRequestSuffix=function(a){t=a};var u={};this.addElementTransformer=function(a,b,c){var d=null,e=null;2===arguments.length?e=b:(e=c,d=b);var f=u[a];f||(f=u[a]=[]),f.push(function(a,b){return _.isNull(d)||a==d?e(b):b})};var v={},w=function(){};w.prototype.parentsArray=function(a){for(var b=[];!_.isUndefined(a);)b.push(a),a=a[m.parentResource];return b.reverse()},w.prototype.resource=function(a,c,d,e){var f=this.base(a);return f+=e[m.what]?"/:"+m.what:"",f+=t||"",c(f,{},{getList:b({method:"GET",params:i,isArray:s,headers:d||{}}),get:b({method:"GET",params:i,isArray:!1,headers:d||{}}),put:b({method:"PUT",params:i,isArray:!1,headers:d||{}}),post:b({method:"POST",params:i,isArray:!1,headers:d||{}}),remove:b({method:"DELETE",params:i,isArray:!1,headers:d||{}}),head:b({method:"HEAD",params:i,isArray:!1,headers:d||{}}),trace:b({method:"TRACE",params:i,isArray:!1,headers:d||{}}),options:b({method:"OPTIONS",params:i,isArray:!1,headers:d||{}}),patch:b({method:"PATCH",params:i,isArray:!1,headers:d||{}})})};var x=function(){};x.prototype=new w,x.prototype.base=function(a){return f+_.reduce(this.parentsArray(a),function(a,b){var c=a+"/"+b[m.route];return b[m.restangularCollection]||(c+="/"+o(b)),c},"")},x.prototype.fetchUrl=function(a,b){var c=this.base(a);return b&&b[m.what]&&(c+="/"+b[m.what]),c},v.path=x,this.$get=["$resource","$q",function(b,e){function f(a,b,c){if(b[m.route]=c,b.getRestangularUrl=_.bind(M.fetchUrl,M,b),b.addRestangularMethod=_.bind(L,b),a){var d=_.union(_.values(_.pick(m,["id","route","parentResource"])),g);b[m.parentResource]=_.pick(a,d)}return b}function h(a,b,c){var d={};return n(d,c),w(a,d,b)}function i(a,b){return x(a,{},b,!0)}function j(a,b){return a.call=_.bind(o,a),a.get=_.bind(r,a),a[m.restangularCollection]=b,b&&(a.push=_.bind(o,a,"push")),a}function o(a){var b=e.defer(),c=arguments;return this.then(function(d){var e=Array.prototype.slice.call(c,1),f=d[a];f.apply(d,e),b.resolve(d)}),j(b.promise,this[m.restangularCollection])}function r(a){var b=e.defer();return this.then(function(c){b.resolve(c[a])}),j(b.promise,this[m.restangularCollection])}function s(a){return _.omit(a,_.values(_.omit(m,"id")))}function t(a){a.customOperation=_.bind(K,a),_.each(["put","post","get","delete"],function(b){_.each(["do","custom"],function(c){var d=c+b.toUpperCase();a[d]=_.bind(K,a,b)})}),a.customGETLIST=_.bind(A,a),a.doGETLIST=a.customGETLIST}function u(a){var b=angular.copy(a);return w(b[m.parentResource],b,b[m.route])}function w(a,b,d){var e=f(a,b,d);return e[m.restangularCollection]=!1,e.get=_.bind(C,e),e.getList=_.bind(A,e),e.put=_.bind(E,e),e.post=_.bind(F,e),e.remove=_.bind(D,e),e.head=_.bind(G,e),e.trace=_.bind(H,e),e.options=_.bind(I,e),e.patch=_.bind(J,e),e.one=_.bind(h,e,e),e.all=_.bind(i,e,e),t(e),c(e,!1,d)}function x(a,b,d){var e=f(a,b,d);return e[m.restangularCollection]=!0,e.post=_.bind(F,e,null),e.head=_.bind(G,e),e.trace=_.bind(H,e),e.putElement=_.bind(z,e),e.options=_.bind(I,e),e.patch=_.bind(J,e),e.getList=_.bind(A,e,null),t(e),c(e,!0,d)}function y(a){var b={};return a&&(b[m.what]=a),b}function z(a,b,c){var d=this,f=this[a],g=e.defer();return f.put(b,c).then(function(b){var c=u(d);c[a]=b,g.resolve(c)},function(a){g.reject(a)}),j(g.promise,!0)}function A(a,c,d){var f=y(a),g=this,h=e.defer(),i="getList",k=M.fetchUrl(this,f),l=a||g[m.route],n=_.extend(f,c);return q(null,i,l,k),M.resource(this,b,d,n).getList(n,function(b){var c=p(b,i,l,k),d=_.map(c,function(b){return g[m.restangularCollection]?w(null,b,g[m.route]):w(g,b,a)});d=_.extend(c,d),g[m.restangularCollection]?h.resolve(x(null,d,g[m.route])):h.resolve(x(g,d,a))},function(a){h.reject(a)}),j(h.promise,!0)}function B(c,d,f,g){var h=this,i=e.defer(),l=d||{},n=f||this,o=l[m.what]||this[m.route],r=M.fetchUrl(this,l),t=f||s(this);t=q(t,c,o,r);var u=function(a){var b=p(a,c,o,r)||n;"post"!==c||h[m.restangularCollection]?i.resolve(w(h[m.parentResource],b,h[m.route])):i.resolve(w(h,b,l[m.what]))},v=function(a){i.reject(a)},x=c,y=_.extend({},g),z=k(c);return z&&(x="post",y=_.extend(y,{"X-HTTP-Method-Override":c})),a(c)?z?M.resource(this,b,y,l)[x](l,{},u,v):M.resource(this,b,y,l)[x](l,u,v):M.resource(this,b,y,l)[x](l,t,u,v),j(i.promise)}function C(a,b){return _.bind(B,this)("get",a,void 0,b)}function D(a,b){return _.bind(B,this)("remove",a,void 0,b)}function E(a,b){return _.bind(B,this)("put",a,void 0,b)}function F(a,b,c,d){return _.bind(B,this)("post",_.extend(y(a),c),b,d)}function G(a,b){return _.bind(B,this)("head",a,void 0,b)}function H(a,b){return _.bind(B,this)("trace",a,void 0,b)}function I(a,b){return _.bind(B,this)("options",a,void 0,b)}function J(a,b){return _.bind(B,this)("patch",a,void 0,b)}function K(a,b,c,d,e){return _.bind(B,this)(a,_.extend(y(b),c),e,d)}function L(a,b,c,d,e,f){var g;g="getList"===b?_.bind(A,this,c):_.bind(K,this,b,c),this[a]=function(a,b,c){var h=_.defaults({params:a,headers:b,elem:c},{params:d,headers:e,elem:f});return g(h.params,h.headers,h.elem)}}var M=new v[l],N={};return _.extend(N,_.omit(d,"$get")),N.copy=_.bind(u,N),N.one=_.bind(h,N,null),N.all=_.bind(i,N,null),N}]})}(); |