restangular
Version:
Restful Resources service for AngularJS apps
6 lines • 21.4 kB
JavaScript
/**
* Restful Resources service for AngularJS apps
* @version v1.6.1 - 2017-01-06 * @link https://github.com/mgonto/restangular
* @author Martin Gontovnikas <martin@gon.to>
* @license MIT License, http://www.opensource.org/licenses/MIT
*/!function(a,b){"function"==typeof define&&define.amd?define(["lodash","angular"],b):"object"==typeof module&&module.exports?module.exports=b(require("lodash"),require("angular")):b(a._,a.angular)}(this,function(a,b){var c=b.module("restangular",[]);return c.provider("Restangular",function(){var c={};c.init=function(c,d){function e(b,c,d,e){var f={};return a.each(a.keys(e),function(g){var h=e[g];h.params=a.extend({},h.params,b.defaultRequestParams[h.method.toLowerCase()]),a.isEmpty(h.params)&&delete h.params,b.isSafe(h.method)?f[g]=function(){return c(a.extend(h,{url:d}))}:f[g]=function(b){return c(a.extend(h,{url:d,data:b}))}}),f}c.configuration=d;var f=["get","head","options","trace","getlist"];d.isSafe=function(b){return a.includes(f,b.toLowerCase())};var g=/^https?:\/\//i;d.isAbsoluteUrl=function(b){return a.isUndefined(d.absoluteUrl)||a.isNull(d.absoluteUrl)?b&&g.test(b):d.absoluteUrl},d.absoluteUrl=!!a.isUndefined(d.absoluteUrl)||d.absoluteUrl,c.setSelfLinkAbsoluteUrl=function(a){d.absoluteUrl=a},d.baseUrl=a.isUndefined(d.baseUrl)?"":d.baseUrl,c.setBaseUrl=function(a){return d.baseUrl=/\/$/.test(a)?a.substring(0,a.length-1):a,this},d.extraFields=d.extraFields||[],c.setExtraFields=function(a){return d.extraFields=a,this},d.defaultHttpFields=d.defaultHttpFields||{},c.setDefaultHttpFields=function(a){return d.defaultHttpFields=a,this},d.plainByDefault=d.plainByDefault||!1,c.setPlainByDefault=function(a){return d.plainByDefault=a===!0,this},d.withHttpValues=function(b,c){return a.defaults(c,b,d.defaultHttpFields)},d.encodeIds=!!a.isUndefined(d.encodeIds)||d.encodeIds,c.setEncodeIds=function(a){d.encodeIds=a},d.defaultRequestParams=d.defaultRequestParams||{get:{},post:{},put:{},remove:{},common:{}},c.setDefaultRequestParams=function(b,c){var e=[],f=c||b;return a.isUndefined(c)?e.push("common"):a.isArray(b)?e=b:e.push(b),a.each(e,function(a){d.defaultRequestParams[a]=f}),this},c.requestParams=d.defaultRequestParams,d.defaultHeaders=d.defaultHeaders||{},c.setDefaultHeaders=function(a){return d.defaultHeaders=a,c.defaultHeaders=d.defaultHeaders,this},c.defaultHeaders=d.defaultHeaders,d.methodOverriders=d.methodOverriders||[],c.setMethodOverriders=function(b){var c=a.extend([],b);return d.isOverridenMethod("delete",c)&&c.push("remove"),d.methodOverriders=c,this},d.jsonp=!a.isUndefined(d.jsonp)&&d.jsonp,c.setJsonp=function(a){d.jsonp=a},d.isOverridenMethod=function(b,c){var e=c||d.methodOverriders;return!a.isUndefined(a.find(e,function(a){return a.toLowerCase()===b.toLowerCase()}))},d.urlCreator=d.urlCreator||"path",c.setUrlCreator=function(b){if(!a.has(d.urlCreatorFactory,b))throw new Error("URL Path selected isn't valid");return d.urlCreator=b,this},d.restangularFields=d.restangularFields||{id:"id",route:"route",parentResource:"parentResource",restangularCollection:"restangularCollection",cannonicalId:"__cannonicalId",etag:"restangularEtag",selfLink:"href",get:"get",getList:"getList",put:"put",post:"post",remove:"remove",head:"head",trace:"trace",options:"options",patch:"patch",getRestangularUrl:"getRestangularUrl",getRequestedUrl:"getRequestedUrl",putElement:"putElement",addRestangularMethod:"addRestangularMethod",getParentList:"getParentList",clone:"clone",ids:"ids",httpConfig:"_$httpConfig",reqParams:"reqParams",one:"one",all:"all",several:"several",oneUrl:"oneUrl",allUrl:"allUrl",customPUT:"customPUT",customPATCH:"customPATCH",customPOST:"customPOST",customDELETE:"customDELETE",customGET:"customGET",customGETLIST:"customGETLIST",customOperation:"customOperation",doPUT:"doPUT",doPATCH:"doPATCH",doPOST:"doPOST",doDELETE:"doDELETE",doGET:"doGET",doGETLIST:"doGETLIST",fromServer:"fromServer",withConfig:"withConfig",withHttpConfig:"withHttpConfig",singleOne:"singleOne",plain:"plain",save:"save",restangularized:"restangularized"},c.setRestangularFields=function(b){return d.restangularFields=a.extend(d.restangularFields,b),this},d.isRestangularized=function(a){return!!a[d.restangularFields.restangularized]},d.setFieldToElem=function(b,c,d){var e=b.split("."),f=c;return a.each(a.initial(e),function(a){f[a]={},f=f[a]}),f[a.last(e)]=d,this},d.getFieldFromElem=function(c,d){var e=c.split("."),f=d;return a.each(e,function(a){f&&(f=f[a])}),b.copy(f)},d.setIdToElem=function(a,b){return d.setFieldToElem(d.restangularFields.id,a,b),this},d.getIdFromElem=function(a){return d.getFieldFromElem(d.restangularFields.id,a)},d.isValidId=function(b){return""!==b&&!a.isUndefined(b)&&!a.isNull(b)},d.setUrlToElem=function(a,b){return d.setFieldToElem(d.restangularFields.selfLink,a,b),this},d.getUrlFromElem=function(a){return d.getFieldFromElem(d.restangularFields.selfLink,a)},d.useCannonicalId=!a.isUndefined(d.useCannonicalId)&&d.useCannonicalId,c.setUseCannonicalId=function(a){return d.useCannonicalId=a,this},d.getCannonicalIdFromElem=function(a){var b=a[d.restangularFields.cannonicalId],c=d.isValidId(b)?b:d.getIdFromElem(a);return c},d.responseInterceptors=d.responseInterceptors||[],d.defaultResponseInterceptor=function(a){return a},d.responseExtractor=function(c,e,f,g,h,i){var j=b.copy(d.responseInterceptors);j.push(d.defaultResponseInterceptor);var k=c;return a.each(j,function(a){k=a(k,e,f,g,h,i)}),k},c.addResponseInterceptor=function(a){return d.responseInterceptors.push(a),this},d.errorInterceptors=d.errorInterceptors||[],c.addErrorInterceptor=function(a){return d.errorInterceptors.push(a),this},c.setResponseInterceptor=c.addResponseInterceptor,c.setResponseExtractor=c.addResponseInterceptor,c.setErrorInterceptor=c.addErrorInterceptor,d.requestInterceptors=d.requestInterceptors||[],d.defaultInterceptor=function(a,b,c,d,e,f,g){return{element:a,headers:e,params:f,httpConfig:g}},d.fullRequestInterceptor=function(c,e,f,g,h,i,j){var k=b.copy(d.requestInterceptors),l=d.defaultInterceptor(c,e,f,g,h,i,j);return a.reduce(k,function(b,c){return a.extend(b,c(b.element,e,f,g,b.headers,b.params,b.httpConfig))},l)},c.addRequestInterceptor=function(a){return d.requestInterceptors.push(function(b,c,d,e,f,g,h){return{headers:f,params:g,element:a(b,c,d,e),httpConfig:h}}),this},c.setRequestInterceptor=c.addRequestInterceptor,c.addFullRequestInterceptor=function(a){return d.requestInterceptors.push(a),this},c.setFullRequestInterceptor=c.addFullRequestInterceptor,d.onBeforeElemRestangularized=d.onBeforeElemRestangularized||function(a){return a},c.setOnBeforeElemRestangularized=function(a){return d.onBeforeElemRestangularized=a,this},c.setRestangularizePromiseInterceptor=function(a){return d.restangularizePromiseInterceptor=a,this},d.onElemRestangularized=d.onElemRestangularized||function(a){return a},c.setOnElemRestangularized=function(a){return d.onElemRestangularized=a,this},d.shouldSaveParent=d.shouldSaveParent||function(){return!0},c.setParentless=function(b){return a.isArray(b)?d.shouldSaveParent=function(c){return!a.includes(b,c)}:a.isBoolean(b)&&(d.shouldSaveParent=function(){return!b}),this},d.suffix=a.isUndefined(d.suffix)?null:d.suffix,c.setRequestSuffix=function(a){return d.suffix=a,this},d.transformers=d.transformers||{},d.matchTransformers=d.matchTransformers||[],c.addElementTransformer=function(b,e,f){var g=null,h=null;2===arguments.length?h=e:(h=f,g=e);var i=function(b,c){return a.isNull(g)||b===g?h(c):c};return a.isRegExp(b)?d.matchTransformers.push({regexp:b,transformer:i}):(d.transformers[b]||(d.transformers[b]=[]),d.transformers[b].push(i)),c},c.extendCollection=function(a,b){return c.addElementTransformer(a,!0,b)},c.extendModel=function(a,b){return c.addElementTransformer(a,!1,b)},d.transformElem=function(b,c,e,f,g){if(!g&&!d.transformLocalElements&&!b[d.restangularFields.fromServer])return b;var h=b,i=d.matchTransformers;i&&a.each(i,function(a){a.regexp.test(e)&&(h=a.transformer(c,h))});var j=d.transformers[e];return j&&a.each(j,function(a){h=a(c,h)}),d.onElemRestangularized(h,c,e,f)},d.transformLocalElements=!a.isUndefined(d.transformLocalElements)&&d.transformLocalElements,c.setTransformOnlyServerElements=function(a){d.transformLocalElements=!a},d.fullResponse=!a.isUndefined(d.fullResponse)&&d.fullResponse,c.setFullResponse=function(a){return d.fullResponse=a,this},d.urlCreatorFactory={};var h=function(){};h.prototype.setConfig=function(a){return this.config=a,this},h.prototype.parentsArray=function(a){for(var b=[];a;)b.push(a),a=a[this.config.restangularFields.parentResource];return b.reverse()},h.prototype.resource=function(b,c,f,g,h,i,j,k){var l=a.defaults(h||{},this.config.defaultRequestParams.common),m=a.defaults(g||{},this.config.defaultHeaders);j&&(d.isSafe(k)?m["If-None-Match"]=j:m["If-Match"]=j);var n=this.base(b);if(i||0===i){var o="";/\/$/.test(n)||(o+="/"),o+=i,n+=o}return this.config.suffix&&n.indexOf(this.config.suffix,n.length-this.config.suffix.length)===-1&&!this.config.getUrlFromElem(b)&&(n+=this.config.suffix),b[this.config.restangularFields.httpConfig]=void 0,e(this.config,c,n,{getList:this.config.withHttpValues(f,{method:"GET",params:l,headers:m}),get:this.config.withHttpValues(f,{method:"GET",params:l,headers:m}),jsonp:this.config.withHttpValues(f,{method:"jsonp",params:l,headers:m}),put:this.config.withHttpValues(f,{method:"PUT",params:l,headers:m}),post:this.config.withHttpValues(f,{method:"POST",params:l,headers:m}),remove:this.config.withHttpValues(f,{method:"DELETE",params:l,headers:m}),head:this.config.withHttpValues(f,{method:"HEAD",params:l,headers:m}),trace:this.config.withHttpValues(f,{method:"TRACE",params:l,headers:m}),options:this.config.withHttpValues(f,{method:"OPTIONS",params:l,headers:m}),patch:this.config.withHttpValues(f,{method:"PATCH",params:l,headers:m})})};var i=function(){};i.prototype=new h,i.prototype.normalizeUrl=function(a){var b=/((?:http[s]?:)?\/\/)?(.*)?/.exec(a);return b[2]=b[2].replace(/[\\\/]+/g,"/"),"undefined"!=typeof b[1]?b[1]+b[2]:b[2]},i.prototype.base=function(b){var c=this;return a.reduce(this.parentsArray(b),function(a,b){var e,f=c.config.getUrlFromElem(b);if(f){if(c.config.isAbsoluteUrl(f))return f;e=f}else if(e=b[c.config.restangularFields.route],b[c.config.restangularFields.restangularCollection]){var g=b[c.config.restangularFields.ids];g&&(e+="/"+g.join(","))}else{var h;h=c.config.useCannonicalId?c.config.getCannonicalIdFromElem(b):c.config.getIdFromElem(b),d.isValidId(h)&&!b.singleOne&&(e+="/"+(c.config.encodeIds?encodeURIComponent(h):h))}return a=a.replace(/\/$/,"")+"/"+e,c.normalizeUrl(a)},this.config.baseUrl)},i.prototype.fetchUrl=function(a,b){var c=this.base(a);return b&&(c+="/"+b),c},i.prototype.fetchRequestedUrl=function(a,c){function e(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function f(a,b,c){for(var d=e(a),f=0;f<d.length;f++)b.call(c,a[d[f]],d[f]);return d}function g(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}var h=this.fetchUrl(a,c),i=a[d.restangularFields.reqParams];if(!i)return h+(this.config.suffix||"");var j=[];return f(i,function(a,c){null!==a&&void 0!==a&&(b.isArray(a)||(a=[a]),b.forEach(a,function(a){b.isObject(a)&&(a=b.toJson(a)),j.push(g(c)+"="+g(a))}))}),h+(this.config.suffix||"")+(h.indexOf("?")===-1?"?":"&")+j.join("&")},d.urlCreatorFactory.path=i};var d={};c.init(this,d),this.$get=["$http","$q",function(e,f){function g(d){function h(b,c,e,f,g){if(c[d.restangularFields.route]=e,c[d.restangularFields.getRestangularUrl]=a.bind(R.fetchUrl,R,c),c[d.restangularFields.getRequestedUrl]=a.bind(R.fetchRequestedUrl,R,c),c[d.restangularFields.addRestangularMethod]=a.bind(N,c),c[d.restangularFields.clone]=a.bind(t,c,c),c[d.restangularFields.reqParams]=a.isEmpty(f)?null:f,c[d.restangularFields.withHttpConfig]=a.bind(B,c),c[d.restangularFields.plain]=a.bind(r,c,c),c[d.restangularFields.restangularized]=!0,c[d.restangularFields.one]=a.bind(i,c,c),c[d.restangularFields.all]=a.bind(j,c,c),c[d.restangularFields.several]=a.bind(k,c,c),c[d.restangularFields.oneUrl]=a.bind(l,c,c),c[d.restangularFields.allUrl]=a.bind(m,c,c),c[d.restangularFields.fromServer]=!!g,b&&d.shouldSaveParent(e)){var h=d.getIdFromElem(b),n=d.getUrlFromElem(b),o=a.union(a.values(a.pick(d.restangularFields,["route","singleOne","parentResource"])),d.extraFields),p=a.pick(b,o);d.isValidId(h)&&d.setIdToElem(p,h,e),d.isValidId(n)&&d.setUrlToElem(p,n,e),c[d.restangularFields.parentResource]=p}else c[d.restangularFields.parentResource]=null;return c}function i(b,c,e,f){var g;if(a.isNumber(c)||a.isNumber(b))throw g="You're creating a Restangular entity with the number ",g+="instead of the route or the parent. For example, you can't call .one(12).",new Error(g);if(a.isUndefined(c))throw g="You're creating a Restangular entity either without the path. ",g+="For example you can't call .one(). Please check if your arguments are valid.",new Error(g);var h={};return d.setIdToElem(h,e,c),d.setFieldToElem(d.restangularFields.singleOne,h,f),u(b,h,c,!1)}function j(a,b){return v(a,[],b,!1)}function k(a,b){var c=[];return c[d.restangularFields.ids]=Array.prototype.splice.call(arguments,2),v(a,c,b,!1)}function l(a,b,c){if(!b)throw new Error("Route is mandatory when creating new Restangular objects.");var e={};return d.setUrlToElem(e,c,b),u(a,e,b,!1)}function m(a,b,c){if(!b)throw new Error("Route is mandatory when creating new Restangular objects.");var e={};return d.setUrlToElem(e,c,b),v(a,e,b,!1)}function n(b,c,e){return b.call=a.bind(o,b),b.get=a.bind(p,b),b[d.restangularFields.restangularCollection]=c,c&&(b.push=a.bind(o,b,"push")),b.$object=e,d.restangularizePromiseInterceptor&&d.restangularizePromiseInterceptor(b),b}function o(a){var b=f.defer(),c=arguments,e={};return this.then(function(d){var f=Array.prototype.slice.call(c,1),g=d[a];g.apply(d,f),e=d,b.resolve(d)}),n(b.promise,this[d.restangularFields.restangularCollection],e)}function p(a){var b=f.defer(),c={};return this.then(function(d){c=d[a],b.resolve(c)}),n(b.promise,this[d.restangularFields.restangularCollection],c)}function q(b,c,e,f){return a.extend(f,e),d.fullResponse?b.resolve(a.extend(c,{data:e})):void b.resolve(e)}function r(b){if(a.isArray(b)){var c=[];return a.each(b,function(a){c.push(d.isRestangularized(a)?r(a):a)}),c}return a.omit(b,a.values(a.omit(d.restangularFields,"id")))}function s(b){b[d.restangularFields.customOperation]=a.bind(M,b);var c={get:M,delete:M};a.each(["put","patch","post"],function(b){c[b]=function(b,c,d,e,f){return a.bind(M,this)(b,d,e,f,c)}}),a.each(c,function(c,d){var e="delete"===d?"remove":d;a.each(["do","custom"],function(f){b[f+d.toUpperCase()]=a.bind(c,b,e)})}),b[d.restangularFields.customGETLIST]=a.bind(A,b),b[d.restangularFields.doGETLIST]=b[d.restangularFields.customGETLIST]}function t(c){var e=b.copy(c);return a.isArray(c)?v(c[d.restangularFields.parentResource],e,c[d.restangularFields.route],c[d.restangularFields.fromServer],c[d.restangularFields.reqParams]):u(c[d.restangularFields.parentResource],e,c[d.restangularFields.route],c[d.restangularFields.fromServer],c[d.restangularFields.restangularCollection],c[d.restangularFields.reqParams])}function u(b,c,e,f,g,i){var j=d.onBeforeElemRestangularized(c,!1,e),k=h(b,j,e,i,f);return d.useCannonicalId&&(k[d.restangularFields.cannonicalId]=d.getIdFromElem(k)),g&&(k[d.restangularFields.getParentList]=function(){return g}),k[d.restangularFields.restangularCollection]=!1,k[d.restangularFields.get]=a.bind(E,k),k[d.restangularFields.getList]=a.bind(A,k),k[d.restangularFields.put]=a.bind(G,k),k[d.restangularFields.post]=a.bind(H,k),k[d.restangularFields.remove]=a.bind(F,k),k[d.restangularFields.head]=a.bind(I,k),k[d.restangularFields.trace]=a.bind(J,k),k[d.restangularFields.options]=a.bind(K,k),k[d.restangularFields.patch]=a.bind(L,k),k[d.restangularFields.save]=a.bind(C,k),s(k),d.transformElem(k,!1,e,Q,!0)}function v(b,c,e,f,g){var i=d.onBeforeElemRestangularized(c,!0,e),j=h(b,i,e,g,f);return j[d.restangularFields.restangularCollection]=!0,j[d.restangularFields.post]=a.bind(H,j,null),j[d.restangularFields.remove]=a.bind(F,j),j[d.restangularFields.head]=a.bind(I,j),j[d.restangularFields.trace]=a.bind(J,j),j[d.restangularFields.putElement]=a.bind(y,j),j[d.restangularFields.options]=a.bind(K,j),j[d.restangularFields.patch]=a.bind(L,j),j[d.restangularFields.get]=a.bind(x,j),j[d.restangularFields.getList]=a.bind(A,j,null),s(j),d.transformElem(j,!0,e,Q,!0)}function w(b,c,d,e){var f=v(b,c,d,e);return a.each(f,function(a){a&&u(b,a,d,e)}),f}function x(a,b,c){return this.customGET(a.toString(),b,c)}function y(a,b,c){var e=this,g=this[a],h=f.defer(),i=[];return i=d.transformElem(i,!0,g[d.restangularFields.route],Q),g.put(b,c).then(function(b){var c=t(e);c[a]=b,i=c,h.resolve(c)},function(a){h.reject(a)}),n(h.promise,!0,i)}function z(a,b,c,e,f,g){var h=d.responseExtractor(a,b,c,e,f,g),i=f.headers("ETag");return h&&i&&(h[d.restangularFields.etag]=i),h}function A(b,c,g){var h=this,i=f.defer(),j="getList",k=R.fetchUrl(this,b),l=b||h[d.restangularFields.route],m=d.fullRequestInterceptor(null,j,l,k,g||{},c||{},this[d.restangularFields.httpConfig]||{}),o=[];o=d.transformElem(o,!0,l,Q);var p="getList";d.jsonp&&(p="jsonp");var r=function(c){var e=c.data,f=c.config.params,g=z(e,j,l,k,c,i);if((a.isUndefined(g)||""===g)&&(g=[]),!a.isArray(g))throw new Error("Response for getList SHOULD be an array and not an object or something else");if(!0===d.plainByDefault)return q(i,c,g,o);var m=a.map(g,function(a){return h[d.restangularFields.restangularCollection]?u(h[d.restangularFields.parentResource],a,h[d.restangularFields.route],!0,g):u(h,a,b,!0,g)});m=a.extend(g,m),h[d.restangularFields.restangularCollection]?q(i,c,v(h[d.restangularFields.parentResource],m,h[d.restangularFields.route],!0,f),o):q(i,c,v(h,m,b,!0,f),o)};return R.resource(this,e,m.httpConfig,m.headers,m.params,b,this[d.restangularFields.etag],j)[p]().then(r,function(b){304===b.status&&h[d.restangularFields.restangularCollection]?q(i,b,h,o):a.every(d.errorInterceptors,function(a){return a(b,i,r)!==!1})&&i.reject(b)}),n(i.promise,!0,o)}function B(a){return this[d.restangularFields.httpConfig]=a,this}function C(b,c){return this[d.restangularFields.fromServer]?this[d.restangularFields.put](b,c):a.bind(D,this)("post",void 0,b,void 0,c)}function D(b,c,g,h,i){var j=this,k=f.defer(),l=g||{},m=c||this[d.restangularFields.route],o=R.fetchUrl(this,c),p=h||this,s=p[d.restangularFields.etag]||("post"!==b?this[d.restangularFields.etag]:null);a.isObject(p)&&d.isRestangularized(p)&&(p=r(p));var t=d.fullRequestInterceptor(p,b,m,o,i||{},l||{},this[d.restangularFields.httpConfig]||{}),v={};v=d.transformElem(v,!1,m,Q);var w=function(a){var c=a.data,e=a.config.params,f=z(c,b,m,o,a,k);if(null!==f&&void 0!==f&&""!==f){var g;if(!0===d.plainByDefault)return q(k,a,f,v);"post"!==b||j[d.restangularFields.restangularCollection]?(g=u(j[d.restangularFields.parentResource],f,j[d.restangularFields.route],!0,null,e),g[d.restangularFields.singleOne]=j[d.restangularFields.singleOne],q(k,a,g,v)):(g=u(j[d.restangularFields.parentResource],f,m,!0,null,e),q(k,a,g,v))}else q(k,a,void 0,v)},x=function(c){304===c.status&&d.isSafe(b)?q(k,c,j,v):a.every(d.errorInterceptors,function(a){return a(c,k,w)!==!1})&&k.reject(c)},y=b,A=a.extend({},t.headers),B=d.isOverridenMethod(b);return B?(y="post",A=a.extend(A,{"X-HTTP-Method-Override":"remove"===b?"DELETE":b.toUpperCase()})):d.jsonp&&"get"===y&&(y="jsonp"),d.isSafe(b)?B?R.resource(this,e,t.httpConfig,A,t.params,c,s,y)[y]({}).then(w,x):R.resource(this,e,t.httpConfig,A,t.params,c,s,y)[y]().then(w,x):R.resource(this,e,t.httpConfig,A,t.params,c,s,y)[y](t.element).then(w,x),n(k.promise,!1,v)}function E(b,c){return a.bind(D,this)("get",void 0,b,void 0,c)}function F(b,c){return a.bind(D,this)("remove",void 0,b,void 0,c)}function G(b,c){return a.bind(D,this)("put",void 0,b,void 0,c)}function H(b,c,d,e){return a.bind(D,this)("post",b,d,c,e)}function I(b,c){return a.bind(D,this)("head",void 0,b,void 0,c)}function J(b,c){return a.bind(D,this)("trace",void 0,b,void 0,c)}function K(b,c){return a.bind(D,this)("options",void 0,b,void 0,c)}function L(b,c,d){return a.bind(D,this)("patch",void 0,c,b,d)}function M(b,c,d,e,f){return a.bind(D,this)(b,c,d,f,e)}function N(b,c,e,f,g,h){var i;i="getList"===c?a.bind(A,this,e):a.bind(M,this,c,e);var j=function(b,c,d){var e=a.defaults({params:b,headers:c,elem:d},{params:f,headers:g,elem:h});return i(e.params,e.headers,e.elem)};d.isSafe(c)?this[b]=j:this[b]=function(a,b,c){return j(b,c,a)}}function O(e){var f=b.copy(a.omit(d,"configuration"));return c.init(f,f),e(f),g(f)}function P(b,c){var e=a.values(d.restangularFields),f={},g=(c||Q).all(b);f.one=a.bind(i,c||Q,c,b),f.post=a.bind(g.post,g),f.getList=a.bind(g.getList,g),f.withHttpConfig=a.bind(g.withHttpConfig,g),f.get=a.bind(g.get,g);for(var h in g)g.hasOwnProperty(h)&&a.isFunction(g[h])&&!a.includes(e,h)&&(f[h]=a.bind(g[h],g));return f}var Q={},R=new d.urlCreatorFactory[d.urlCreator];return R.setConfig(d),c.init(Q,d),Q.copy=a.bind(t,Q),Q.service=a.bind(P,Q),Q.withConfig=a.bind(O,Q),Q.one=a.bind(i,Q,null),Q.all=a.bind(j,Q,null),Q.several=a.bind(k,Q,null),Q.oneUrl=a.bind(l,Q,null),Q.allUrl=a.bind(m,Q,null),Q.stripRestangular=a.bind(r,Q),Q.restangularizeElement=a.bind(u,Q),Q.restangularizeCollection=a.bind(w,Q),Q}return g(d)}]}),c.name});